Wie deaktiviere ich systemd-resolved in Ubuntu?

87

Wie kann ich systemd-resolved in Ubuntu 17.04 deaktivieren?

Deaktivieren mit systemctl disablehat nicht funktioniert, der Dienst scheint neu gestartet zu werden (vom Networkmanager?)

Bastian Voigt
quelle
10
systemd-resolved ist nicht nur groß, sondern verändert auch die Funktionsweise der DNS-Auflösung, da nicht immer versucht wird, die DNS-Server in der Reihenfolge aufzulösen, in der sie in der Client-Konfiguration angegeben sind. Wenn ein Server eine Domain nicht auflöst, wird der nächste in der Liste nach oben verschoben (Poettering nennt das 'Speicher'). Siehe diesen Thread für die Details.
LifeBoy
7
Es umgeht auch die Iptables-Regeln, was eine schreckliche Idee ist.
Spongman

Antworten:

150

Diese Methode funktioniert mit den Ubuntu-Versionen 17.04 (Zesty), 17.10 (Artful), 18.04 (Bionic), 18.10 (Cosmic) und 19.04 (Disco):

Deaktivieren und beenden Sie den vom System aufgelösten Dienst:

sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved

Dann setzen Sie die folgende Zeile in den [main]Bereich Ihres /etc/NetworkManager/NetworkManager.conf:

dns=default

Löschen Sie den Symlink /etc/resolv.conf

rm /etc/resolv.conf

Starten Sie NetworkManager neu

sudo systemctl restart NetworkManager

Beachten Sie auch, dass das Deaktivieren von systemd-resolvd die Namensauflösung in VPN für einige Benutzer beeinträchtigen kann. Sehen Sie diesen Fehler auf dem Launchpad (Danke, Vincent).

Bastian Voigt
quelle
4
Dies scheint auf Ubuntu 17.04 nicht zu funktionieren. Alsi ist die Konfigurationsdatei /etc/NetworkManager/NetworkManager.conf. Die Namensauflösung bricht ab, wenn ich das oben genannte mache. systemd-resolved ist zum Kotzen, jetzt funktioniert die VPN-DNS-Auflösung bei mir überhaupt nicht mehr richtig. Der Fortschritt der Fehler
Vincent Gerris
5
Ich denke, Sie sollten der obigen Antwort hinzufügen, dass "apt-get install dnsmasq" ausgeführt werden sollte, sobald systemd-resolved deaktiviert wurde.
LifeBoy
5
@LifeBoy Ich benutze kein dnsmasq. Ich benutze einfach keinen lokalen Nameserver, sehe den Wert davon nicht.
Bastian Voigt
9
Für Ubuntu 18.04 müssen nur die Befehle sudo systemctl disable systemd-resolved.service und sudo service systemd-resolved stop ausgeführt werden. Das hat bei mir geklappt.
Daniel Eagle
12
Danke. SystemD ruiniert Linux und macht es von etwas Zuverlässigem und Verständlichem zu etwas, das über Magie funktioniert.
Forbesmyester
18

Ich habe kürzlich ein Upgrade auf (k) Ubuntu 17.04 durchgeführt und bin auch auf den Wechsel zu systemd gestoßen.

Mein Setup ist ziemlich typisch, da ich einen DNS-Anbieter in meinem Breitband-HUB habe und dies meine Hauptinformationsquelle für alle Geräte in meinem Netzwerk ist (von denen ich einige habe).

Das Systemd hat etwas Schönes, es ist nicht alles schlecht, aber was wirklich schlecht ist, ist die Dokumentation, die mangelnde Kommunikation des Ubuntu-Teams und die Gung-Ho-Mentalität "Lasst es uns einfach ändern, obwohl es für alle kaputt geht".

Die Lösung für mich, nachdem ich ein paar Haare ausgerissen hatte, bestand darin, /etc/systemd/resolved.conf zu bearbeiten:

[Resolve]
DNS=192.168.1.254   # <-- change to your router address
#FallbackDNS=8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844
Domains=lan         # <-- change to your localdomain name (maybe .local)
#LLMNR=yes  <-- I dabbled with this for a while but it doesn't matter
#DNSSEC=no
#Cache=yes
#DNSStubListener=udp

Nachdem ich nicht verstanden hatte, warum dies nicht funktionieren würde, stellte ich fest, dass /etc/resolv.conf ebenfalls auf die von systemd bereitgestellte Datei umgestellt werden musste. Dies ist bei einer Standardinstallation nicht der Fall (aus mir unbekannten Gründen).

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

Der lokale DNS-Server wird dann nicht verwendet und alle DNS-Anforderungen werden an meinen HUB gesendet.

Ich denke, dies ist eine viel bessere Lösung als das Ausschneiden und Einfügen einer anderen Lösung, da systemd-resolv jetzt die Standardeinstellung ist.

Ein verwandtes Problem ist übrigens, dass die /etc/nsswitch.conf neutralisiert ist.

Es sollte lauten:

hosts: files mdns4_minimal dns [NOTFOUND = return] DNS auflösen [! UNAVAIL = return]

Dies ist eine verwirrende Konfiguration, da [NOTFOUND = return] bedeutet, dass die Verarbeitung dort endet. Die Einträge danach werden niemals verwendet.

user2427436
quelle
1
Und dann muss ich die Router-Adresse in der Konfiguration jedes Mal ändern, wenn ich eine Verbindung zu einem neuen WIFI herstelle? U ernst? -1
Bastian Voigt
Ich wusste nicht, dass Sie damit unterwegs waren. Wenn ja, lassen Sie die Konfigurationselemente auskommentiert. Sie sollten dann eine /etc/resolv.conf erhalten, die besagt: nameserver 8.8.8.8
nameserver
1
Ich denke nicht, dass es notwendig ist, die resolved.conf zu bearbeiten, wenn Sie netplan korrekt eingerichtet haben. dh netplan schreibt die korrekten Werte in die verknüpfte Datei ... PS SYSTEMD SUCKS!
g33kz0r
3

Wenn Sie Probleme mit Ihrem VPN haben und nicht herausfinden können, wie systemd (wie ich) einzurichten ist, können Sie es auf die in der ersten Antwort beschriebene Weise entfernen, aber die dns=defaultZeile nicht hinzufügen , da es den Nameserver 127.0 aktiviert .0.1. Um den Router als DNS festzulegen, erstellen Sie die Datei "tail" in Ihrem /etc/resolvconf/resolv.conf.d/ Ordner und fügen Sie die Zeile hinzunameserser 192.168.1.1

tun, ln -sf /var/run/resolved/resolv.conf /etc/resolv.confwenn Sie mit dieser Datei durcheinander gebracht hatten.

Yvain
quelle
1
"Ja wirklich?" Bei mir funktioniert es genauso wie in meiner Antwort beschrieben. Auf keinen Fall Nameserver 127.0.0.1 verwenden. Ich denke auch, dass es nicht sehr praktisch ist, die IP Ihres Nameservers in einer Konfigurationsdatei fest zu codieren. Zumindest wechsle ich ziemlich oft das WLAN und jedes WLAN hat einen anderen Nameserver
Bastian Voigt
yes 'default' aktiviert 127.0.0.1 als DNS
Yvain