Nach Schritt 2 ist möglicherweise kein funktionierender System-Resolver mehr vorhanden, bis Schritt 3 abgeschlossen ist. Möglicherweise müssen Sie das Netzwerk-Subsystem neu starten (oder einfach neu starten), um dnsmasqmit den Standardkonfigurationen arbeiten zu können. In meinen Tests war es ausreichend , einen bekannten DNS-Server hinzuzufügen /etc/dnsmasq.confund neu zu starten dnsmasq, damit er in einer Live-CD-Umgebung funktioniert.
Eine gute Antwort und anscheinend die einzige Lösung, wenn NetworkManager deaktiviert wird, ist nicht akzeptabel!
bogl
3
Für mich war dies eine großartige Antwort, erforderte aber auch die zusätzlichen Schritte von @ blablas Antwort und das Hinzufügen der dns=dnsmasqKonfiguration zu/etc/NetworkManager/NetworkManager.conf
Roberto Tyley
Hier gilt das gleiche. Nachdem man mit systemd-aufgelösten und ungebundenen Problemen zu kämpfen hatte, gelang es Ubuntu 17.10, auf dnsmasq umzusteigen. Ich musste allerdings Blablas Zusätze verwenden.
Alberto L. Bonfiglio
17
Zusätzlich zur Antwort von @quixotic:
Stellen Sie sicher, dass Sie in /etc/NetworkManager/NetworkManager.conf Folgendes haben:
[main]
dns=dnsmasq
Wenn Sie es hinzufügen müssen, starten Sie NetworkManager folgendermaßen neu:
sudo systemctl restart NetworkManager
und /etc/resolv.confmuss ein Symlink zu sein /var/run/NetworkManager/resolv.conf. könnte so gemacht werden
Eigentlich habe ich es als gesetzt dns=defaultund es funktioniert gut, weil ich die Nameserver dann von NetworkManager definiert habe, anstatt in dnsmasq definiert zu werden; Das funktioniert bei mir - NM ruft die Nameserver aus den Einstellungen ab, die in der NM-Konfiguration von KDE über die Taskleiste vorgenommen wurden. Ich verwende feste IP in meinem Heimnetzwerk FWIW.
pbhj
1
Dieser Schritt war eine notwendige Ergänzung zu @ quixotics Antwort für mich (Ubuntu 17.04, Vollinstallation, nicht LiveCD).
Roberto Tyley
0
Gemäß dem Handbuch von systemd-resolved bietet systemd-resolved Namensauflösungsdienste über drei verschiedene Schnittstellen an:
"API mit vollem Funktionsumfang, systemd-aufgelöst, macht auf dem Bus verfügbar"
"Ein lokaler DNS-Stub-Listener für die IP-Adresse 127.0.0.53 auf der lokalen Loopback-Schnittstelle"
Die API glibc getaddrinfo (3) gemäß RFC3493 und den zugehörigen Resolverfunktionen, einschließlich gethostbyname (3). Diese API wird weithin unterstützt, auch über die Linux-Plattform hinaus. In der aktuellen Form werden jedoch keine Informationen zum DNSSEC-Überprüfungsstatus angezeigt, und die Informationen sind nur synchron. Diese API wird vom glibc Name Service Switch (nss (5)) unterstützt. Die Verwendung des glibc NSS-Moduls nss-resolve (8) ist erforderlich, damit die NSS-Resolver-Funktionen von glibc Hostnamen über systemd-resolved auflösen können.
Es scheint, dass die ersten beiden Schnittstellen die normale DNS-Auflösung nicht beeinträchtigen und für mich liegt das Problem wahrscheinlich bei der dritten.
Um das NSS-Modul zu aktivieren, fügen Sie "resolve" in die Zeile ein, die mit "hosts:" in /etc/nsswitch.conf beginnt. Insbesondere wird empfohlen, "resolve" in der Zeile "hosts:" von /etc/nsswitch.conf (jedoch nach den Einträgen "files" oder "mymachines") vor dem Eintrag "dns" (sofern vorhanden) zu platzieren, gefolgt von "[! UNAVAIL = return]", um sicherzustellen, dass DNS-Abfragen immer über systemd-resolved (8) weitergeleitet werden, falls dieser Dienst nicht verfügbar ist
Es ist also erforderlich, dass "dns" in der Zeile "host:" von /etc/nsswitch.conf vor "resolve" steht . Und getaddrinfosollte dann einfach bei /etc/resolv.conf bleiben .
Diese Lösung verhindert nur, dass systemd-resolved alle DNS-Auflösungsanforderungen verarbeitet, und ist nicht auf einen bestimmten Netzwerkmanager beschränkt. Außerdem wird sichergestellt, dass der LLMNR- und der mDNS-Dienst normal funktionieren.
(Ich bin nicht mit der Funktionsweise der Namensauflösung unter Linux vertraut und bin mir auch nicht sicher, was ich aus diesen Handbüchern verstanden habe. Ich möchte darauf hinweisen, wenn ich etwas falsch gemacht habe. Thx :))
Hier ist eine Kopie davon (soll ich eine Kopie machen?)
Hier ist die Lösung für (X) Ubuntu 18.04 Bionic.
Installieren Sie dnsmasq
sudo apt install dnsmasq
Deaktivieren Sie den systemaufgelösten Listener an Port 53 (berühren Sie nicht /etc/systemd/resolved.conf, da er beim Upgrade möglicherweise überschrieben wird):
(Alternativ deaktivieren Sie es vollständig durch $ sudo systemctl disable systemd-resolved.service)
Löschen Sie die Datei /etc/resolv.conf und erstellen Sie sie erneut. Dies ist wichtig, da resolv.conf standardmäßig eine symbolische Verknüpfung zu /run/systemd/resolve/stub-resolv.conf ist. Wenn Sie den symbolischen Link nicht löschen, wird die Datei beim Neustart von systemd überschrieben (obwohl wir systemd-resolved deaktiviert haben!). Außerdem überprüft NetworkManager (NM), ob es sich um eine symbolische Verknüpfung handelt, um eine vom System aufgelöste Konfiguration zu erkennen.
Deaktivieren Sie das Überschreiben von /etc/resolv.conf durch NM (es gibt auch eine Option rc-manager, die jedoch nicht funktioniert, obwohl dies in einem Handbuch beschrieben ist):
Antworten:
dnsmasq
Pakete sind noch in 16.10 und 17.04 verfügbar.Installieren Sie
dnsmasq
und Abhängigkeiten (oder laden Sie zumindest ihre Pakete herunter), bevor Sie deaktivierensystemd-resolved
:Deaktivieren
systemd-resolved
und überprüfendnsmasq
läuft:Nach
dnsmasq
Belieben würzen. Starten Sie nach dem Übernehmen Ihrer Einstellungen Folgendes neudnsmasq
:Nach Schritt 2 ist möglicherweise kein funktionierender System-Resolver mehr vorhanden, bis Schritt 3 abgeschlossen ist. Möglicherweise müssen Sie das Netzwerk-Subsystem neu starten (oder einfach neu starten), um
dnsmasq
mit den Standardkonfigurationen arbeiten zu können. In meinen Tests war es ausreichend , einen bekannten DNS-Server hinzuzufügen/etc/dnsmasq.conf
und neu zu startendnsmasq
, damit er in einer Live-CD-Umgebung funktioniert.quelle
dns=dnsmasq
Konfiguration zu/etc/NetworkManager/NetworkManager.conf
Zusätzlich zur Antwort von @quixotic:
Stellen Sie sicher, dass Sie in /etc/NetworkManager/NetworkManager.conf Folgendes haben:
Wenn Sie es hinzufügen müssen, starten Sie NetworkManager folgendermaßen neu:
und
/etc/resolv.conf
muss ein Symlink zu sein/var/run/NetworkManager/resolv.conf
. könnte so gemacht werdenquelle
dns=default
und es funktioniert gut, weil ich die Nameserver dann von NetworkManager definiert habe, anstatt in dnsmasq definiert zu werden; Das funktioniert bei mir - NM ruft die Nameserver aus den Einstellungen ab, die in der NM-Konfiguration von KDE über die Taskleiste vorgenommen wurden. Ich verwende feste IP in meinem Heimnetzwerk FWIW.Gemäß dem Handbuch von systemd-resolved bietet systemd-resolved Namensauflösungsdienste über drei verschiedene Schnittstellen an:
Es scheint, dass die ersten beiden Schnittstellen die normale DNS-Auflösung nicht beeinträchtigen und für mich liegt das Problem wahrscheinlich bei der dritten.
Im Handbuch von nss-resolve :
Es ist also erforderlich, dass "dns" in der Zeile "host:" von /etc/nsswitch.conf vor "resolve" steht . Und
getaddrinfo
sollte dann einfach bei /etc/resolv.conf bleiben .Diese Lösung verhindert nur, dass systemd-resolved alle DNS-Auflösungsanforderungen verarbeitet, und ist nicht auf einen bestimmten Netzwerkmanager beschränkt. Außerdem wird sichergestellt, dass der LLMNR- und der mDNS-Dienst normal funktionieren.
(Ich bin nicht mit der Funktionsweise der Namensauflösung unter Linux vertraut und bin mir auch nicht sicher, was ich aus diesen Handbüchern verstanden habe. Ich möchte darauf hinweisen, wenn ich etwas falsch gemacht habe. Thx :))
quelle
Für (X) Ubuntu 18.04 (siehe meine Antwort bei stackexchange ).
Hier ist eine Kopie davon (soll ich eine Kopie machen?)
Hier ist die Lösung für (X) Ubuntu 18.04 Bionic.
Installieren Sie dnsmasq
sudo apt install dnsmasq
Deaktivieren Sie den systemaufgelösten Listener an Port 53 (berühren Sie nicht /etc/systemd/resolved.conf, da er beim Upgrade möglicherweise überschrieben wird):
und neu starten
(Alternativ deaktivieren Sie es vollständig durch
$ sudo systemctl disable systemd-resolved.service
)Löschen Sie die Datei /etc/resolv.conf und erstellen Sie sie erneut. Dies ist wichtig, da resolv.conf standardmäßig eine symbolische Verknüpfung zu /run/systemd/resolve/stub-resolv.conf ist. Wenn Sie den symbolischen Link nicht löschen, wird die Datei beim Neustart von systemd überschrieben (obwohl wir systemd-resolved deaktiviert haben!). Außerdem überprüft NetworkManager (NM), ob es sich um eine symbolische Verknüpfung handelt, um eine vom System aufgelöste Konfiguration zu erkennen.
Deaktivieren Sie das Überschreiben von /etc/resolv.conf durch NM (es gibt auch eine Option rc-manager, die jedoch nicht funktioniert, obwohl dies in einem Handbuch beschrieben ist):
und starte es neu:
Weisen Sie dnsmasq an, resolv.conf von NM zu verwenden:
und starte es neu:
Verwenden Sie dnsmasq zum Auflösen von:
quelle