systemd-Resolution fragt den DNS-Server nicht nach der lokalen Domäne ab

12

Seit dem Upgrade auf 17.04 kann ich Adressen in meinem lokalen Netzwerk (silvesternet.local) nicht mehr auflösen. Ich erhalte folgende Antwort:

$ systemd-resolve edgerouter
edgerouter: resolve call failed: No appropriate name servers or networks for name found

Im Journal gibt es nur Berichte über Zeitüberschreitungen für Transaktionen im Zusammenhang mit dieser Suche.

Ich habe Wireshark verwendet, um den Netzwerkverkehr zu überwachen, und es scheint, dass nicht einmal versucht wird, den Namen nachzuschlagen. Es gibt überhaupt keinen DNS-Verkehr. Das Nachschlagen einer anderen externen Domain funktioniert einwandfrei.

Viele Probleme rund um das gleiche Thema erwähnen das Ändern von nsswitch.conf, aber das scheint nichts zu lösen. Meine aktuellen Einstellungen sind:

hosts:          files mdns4_minimal dns [NOTFOUND=return] resolve [!UNAVAIL=return] mdns4
Rob van der Most
quelle
1
Haben Sie laufen sudo apt update && sudo apt full-upgrade? Fehler im Release-Image wurden behoben ...
Zanna
Wenn Sie systemd-networkdSchnittstellen konfigurieren, müssen Sie möglicherweise UseDomains=trueim [DHCP]Abschnitt Ihrer .networkDateien Folgendes
hinzufügen
In der Tat eng mit der Domain. Es war tatsächlich ein Fehler in der Edgerouter-Firmware, der die Domäne in der DHCP-Antwort nicht festlegte.
Rob van der Most

Antworten:

10

Ich glaube, das ist beabsichtigt.

Ubuntu 17.04 hat für die Namensauflösung auf systemd-Resolution umgestellt und verwendet nur LLMNR (Multicast Name Lookup) für die Auflösung von Single-Label-Namen. Weitere Informationen finden Sie unter diesem Link: https://www.freedesktop.org/software/systemd/man/systemd-resolved.service.html

Die Gründe für diese Entscheidung finden Sie in der Antwort von Poettering in diesem Fehlerbericht: https://github.com/systemd/systemd/issues/2514

UPD: Dieses Problem kann umgangen werden, indem eine Domäne für das lokale Netzwerk verwendet wird. Wenn die Netzwerkschnittstelle (entweder manuell oder über DHCP) für die Verwendung einer Suchdomäne konfiguriert ist, fügt systemd-Resolution diese Domäne zu Single-Label-Namen hinzu und sucht sie dann über Unicast-DNS.

Offensichtlich sollte der lokale DNS-Server neu konfiguriert werden, um diese Domäne zu erkennen. Im Fall von dnsmasq, das lokale Host-zu-IP-Paare aus / etc / hosts liest, kann dies durch Hinzufügen der folgenden Anweisungen zur dnsmasq.conf erreicht werden:

domain=mydomain.net
local=/mydomain.net/
expand-hosts

UPD2: Oder Sie können einfach wie hier beschrieben zu dnsmasq zurückkehren. Https://askubuntu.com/a/911432/692094

ish-west
quelle
Und noch eine Fehlerseite mit einigen Erklärungen: github.com/systemd/systemd/issues/4821
ish-west
Der Domainname war hier das Problem. Es wurde tatsächlich auch durch einen Fehler in der Edgerouter-Firmware verursacht. Die Domainnamenoption aus der Konfiguration wurde in der DHCP-Konfiguration nicht ordnungsgemäß gespeichert. Kunden haben also keine Domain zum Suchen erhalten.
Rob van der Most
8

Ich habe das gleiche Problem unter Ubuntu 18.04, das auch systemd-Lösung für DNS verwendet. In der Standardkonfiguration werden Hostnamen mit einer Bezeichnung oder Hostnamen mit lokaler Domäne nicht nach DNS, sondern nach LLMNR bzw. mDNS aufgelöst.

Um lokale Single-Label-Hostnamen oder .local-Domain-Hostnamen durch DNS aufzulösen, habe ich den dritten der "vier Modi für die Behandlung von /etc/resolv.conf" aktiviert, die in der Manpage für systemd- resolve.service beschrieben sind :

sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

Eine ähnliche Antwort wurde hier gegeben . Die Gründe für die Standardeinstellung finden Sie in der Antwort von Poettering in diesem Fehlerbericht .

Mats Lindén
quelle
2

Nach dem Upgrade auf 18.04 funktionierte für mich die Konfiguration der Datei /etc/systemd/resolved.conf, wobei der Parameter Domains in die Domäne geändert wurde (lokal oder wie in meinem Fall mydomain.local). Ich habe auch den DNS-Parameter geändert, aber es schien, dass er nicht relevant ist, aber ich erwähne ihn nur für den Fall, dass dies nicht wahr ist. Weitere Informationen finden Sie unter https://www.freedesktop.org/software/systemd/man/systemd-resolved.service.html .

Zusätzlich habe ich die Avahi-Konfiguration (/etc/avahi/avahi-daemon.conf) geändert, um den Domänenparameter im Serverabschnitt von lokal (Standard) auf etwas anderes zu ändern, wie einige Leute in diesem Forum betonten.

Mit den genannten Änderungen kann ich die Maschinen über punktlose Namen erreichen, z. B. durch Pingen an meinen Computer wird die Maschine erfolgreich kontaktiert. Wenn ich jedoch an mycomputer.mydomain.local pinge, funktioniert dies nicht. Der vollqualifizierte Domänenname wird nicht wie erwartet aufgelöst.

Die Hoffnung, dass dies in einigen Fällen hilft oder zu einer allgemeineren Lösung führt.

George
quelle
0

Ich war mit diesem Problem konfrontiert, weil ich falsch konfiguriert war nsswitch.conf. Da 12.04folgende Zeichenfolge wie erwartet funktioniert hat. Hostnamen ohne Domain werden erfolgreich aufgelöst.

Die neue 17.04Version (sowie Version 16.10) von Ubuntu mit der alten Vorlage zum Konfigurieren des NSS-Systems funktioniert jedoch nicht wie zuvor.

Falsch konfigurierte Version von hosts, aus alten Ubuntu-Versionen: hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4

Erfolgreiche Arbeitsversion von hostszum Beispiel ab 17.04: hosts: files mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns

vskubriev
quelle