DNS-Konfiguration
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
DNS steht für Domain Name System und beschreibt die Namensauflösung von Hostnamen wie fileserver.intern oder example.com. Domainnamen wurden eingeführt, weil sich Menschen Adressen besser merken können und sich keine Nummern in Form von IP-Adressen merken müssen. Ein DNS-Server liefert dann auf Anfrage die IP-Adresse zum Hostnamen.
Man möchte den DNS eventuell selbst festlegen, da der DNS, den man aktuell nutzt, bestimmte Anfragen verfälscht (um zugriff auf bestimmte Internetseiten zu unterbinden) oder weil man einen DNS nutzen möchte, der z.B. Werbedomains auf 0.0.0.0 auflöst.
- Aktuell genutzten DNS herausfinden
- DNS-Server testen
- Die Datei /etc/resolv.conf
- Desktopsysteme
- Serversysteme
- Verwaltung der /etc/resolv.conf unterbinde...
- Festlegen des DNS
- resolv.conf manuell erstellen
- systemd-resolved-Cache leeren
- NetworkManager mit dnsmasq
- Probleme nach Upgrade von 16.04 auf 18.04
Aktuell genutzten DNS herausfinden¶
Um den aktuell genutzten DNS zu sehen, der von Programmen auf dem Rechner genutzt wird, reicht ein
nslookup example.com | grep Server
Hier erhält man in den Desktopvarianten von Ubuntu einen Server, der auf eine IP aus dem Bereich 127.x.x.x zeigt.
DNS-Server testen¶
Den Befehlen dig, host und nslookup kann eine IP-Adresse eines bestimmten DNS-Servers übergeben werden, den sie zur Namensauflösung nutzen sollen. Diese Angabe ist optional. Wenn kein zu nutzender Server angegeben ist, wird der standardmäßige Server genutzt. Damit kann man testen ob DNS-Traffic eine eventuell vorhandene Firewall passieren darf und ob der DNS, den man benutzen möchte, korrekt funktioniert. Man kann damit auch überprüfen, ob verschiedene DNS-Server die gleichen Antworten auf eine Anfrage liefern oder ob die Antworten verfälscht sind. Mit nslookup 🇬🇧:
nslookup example.com 9.9.9.9
Mit dig 🇬🇧:
dig example.com 9.9.9.9
Mit host 🇬🇧:
host example.com 9.9.9.9
Hostname zu IP herausfinden¶
Diese Auflösung kann auch rückwärts durchgeführt werden (Hostname zu einer bekannten IP suchen).
Mit nslookup 🇬🇧:
nslookup 8.8.8.8
Mit dig 🇬🇧:
dig -x 8.8.8.8 +short
Mit host 🇬🇧:
host 8.8.8.8
Die Datei /etc/resolv.conf¶
Diese Datei ist unter Desktopsystemen je nach verwendeter Ubuntu-Version eine symbolische Verknüpfung. Diese Datei wird verwaltet, daher sollte diese nicht verändert werden.
Desktopsysteme¶
Bei allen Desktopsystemen ist der NetworkManager installiert. Solange dieser installiert ist, darf an der /etc/resolv.conf nichts geändert werden.
Ubuntu 18.04¶
Unter Ubuntu 18.04 wird systemd-resolved als lokaler DNS-Server unter Ubuntu genutzt. Dieser lauscht auf der IP 127.0.0.53 und ist in der resolv.conf eingetragen. Die symbolische Verknüpfung /etc/resolv.conf zeigt auf /run/systemd/resolve/stub-resolv.conf.
Ubuntu 16.04¶
Hier wird dnsmasq-base, eine vereinfachte Version von dnsmasq, eingesetzt. Dieser lauscht auf 127.0.1.1 und ist in der /etc/resolv.conf eingetragen. Die symbolische Verknüpfung /etc/resolv.conf zeigt auf /run/systemd/resolvconf/resolv.conf.
Serversysteme¶
Ubuntu 18.04¶
Unter Ubuntu 18.04 wird systemd-resolved als lokaler DNS-Server unter Ubuntu genutzt. Dieser lauscht auf der IP 127.0.0.53 und ist in der resolv.conf eingetragen. Die symbolische Verknüpfung /etc/resolv.conf zeigt auf /run/systemd/resolve/stub-resolv.conf.
Dies kann man deaktiveren.
Ubuntu 16.04¶
Falls man bei der Installation nicht DNS-Server gewählt hat ist kein lokaler Cache vorhanden, resolvconf trägt den in der interfaces hinterlegten DNS in die /etc/resolv.conf ein. Ist dnsmasq/dnsmasq-base installiert trägt resolvconf die 127.0.1.1 in die /etc/resolv.conf ein.
Verwaltung der /etc/resolv.conf unterbinden¶
Möchte man manuell in die Datei /etc/resolv.conf einen DNS eintragen, so müssen die Verwaltungsprogramme dieser Datei deaktiviert bzw. deinstalliert werden. Vorraussetzung ist, dass der NetworkManger nicht installiert ist.
Dieser kann mittels
sudo apt remove network-manager
auch unter Desktopsystemen deinstalliert werden.
Ubuntu 18.04¶
Zuerst beendet man systemd-resolved mit
sudo systemctl stop systemd-resolved
Dann kann er mit
sudo systemctl disable systemd-resolved
deaktiviert werden.
Danach muss die Datei /etc/resolv.conf manuell erstellt werden.
Ubuntu 16.04¶
Das Paket resolvconf muss mittels
sudo apt remove resolvconf
deinstalliert werden.
Danach muss die Datei /etc/resolv.conf manuell erstellt werden.
Festlegen des DNS¶
Vorraussetzung ist, dass ein Verwaltungsprogramm für die /etc/resolv.conf eingesetzt wird, sonst muss die Datei manuell erstellt werden.
Desktopsysteme mit NetworkManager¶
Im NetworkManager kann über Verbindungen bearbeiten –> Verbindung auswählen –> IPvX-Einstellungen der DNS-Server sowohl für IPv4 als auch für IPv6 festgelegt werden.
Ohne Networkmanager u.a. Server¶
Ubuntu 18.04¶
Unter Ubuntu 18.04 wird standardmäßig Netplan zur Konfiguration genutzt. Alternativ kann aber auch die interfaces genutzt werden, indem Netplan deaktiviert wird. Bei der Verwendung von systemd-resolved sollte Netplan verwendet werden.
Ubuntu 16.04¶
Unter Ubuntu 16.04 wird die interfaces zur Konfiguration genutzt. Der DNS kann nur aus der interfaces übernommen werden, wenn resolvconf installiert ist.
resolv.conf manuell erstellen¶
Nutzt man keine Verwaltungsprogramme für die /etc/resolv.conf, so muss diese Datei manuell erstellt werden. Zuerst muss die eventuelle symbolische Verknüpfung /etc/resolv.conf gelöscht werden.
sudo rm /etc/resolv.conf
Danach mit root-Rechten eine neue Datei /etc/resolv.conf angelegt werden.
Diese muss folgenden Inhalt haben:
nameserver <IP vom DNS> nameserver <IP vom 2. DNS> #Optional
systemd-resolved-Cache leeren¶
Der DNS-Cache kann mit
sudo systemd-resolve --flush-caches
geleert werden.
NetworkManager mit dnsmasq¶
Es muss in die Datei /etc/NetworkManager/NetworkManager.conf Folgendes hinzugefügt werden, wenn man den NetworkManager mit dnsmasq nutzen möchte. Dies betrifft nur Ubuntu-Versionen ab 18.04.
[main] dns=dnsmasq
Probleme nach Upgrade von 16.04 auf 18.04¶
Ausgegangen wird davon, dass im neuen 18.04-System systemd-resolve mit dem NetworkManager genutzt werden soll. Als erstes sollten die Pakete resolvconf, dnsmasq und dnsmasq-baggse deinstalliert werden.
sudo apt remove --purge resolvconf dnsmasq dnsmasq-base
Danach sollte ein Neustart erfolgen.
Danach muss geprüft werden, ob systemd-resolved aktiviert und gestartet ist. Dies geht mit
systemctl status systemd-resolved
Die Ausgabe sollte in etwa so aussehen:
● systemd-resolved.service - Network Name Resolution Loaded: loaded (/lib/systemd/system/systemd-resolved.service; enabled; vendor Active: active (running) since Fri 2019-01-04 10:01:44 CET; 1h 43min ago Docs: man:systemd-resolved.service(8) https://www.freedesktop.org/wiki/Software/systemd/resolved https://www.freedesktop.org/wiki/Software/systemd/writing-network-con https://www.freedesktop.org/wiki/Software/systemd/writing-resolver-cl Main PID: 723 (systemd-resolve) Status: "Processing requests..." Tasks: 1 (limit: 4915) CGroup: /system.slice/systemd-resolved.service └─723 /lib/systemd/systemd-resolved Jan 04 10:01:43 djkuhpisse-HP-ZBook-15 systemd[1]: Starting Network Name Resolut Jan 04 10:01:44 djkuhpisse-HP-ZBook-15 systemd-resolved[723]: Positive Trust Anc Jan 04 10:01:44 djkuhpisse-HP-ZBook-15 systemd-resolved[723]: . IN DS 19036 8 2 Jan 04 10:01:44 djkuhpisse-HP-ZBook-15 systemd-resolved[723]: . IN DS 20326 8 2 Jan 04 10:01:44 djkuhpisse-HP-ZBook-15 systemd-resolved[723]: Negative trust anc Jan 04 10:01:44 djkuhpisse-HP-ZBook-15 systemd-resolved[723]: Using system hostn Jan 04 10:01:44 djkuhpisse-HP-ZBook-15 systemd[1]: Started Network Name Resoluti Jan 04 10:01:57 djkuhpisse-HP-ZBook-15 systemd-resolved[723]: Using degraded fea
Ist dies nicht der Fall, muss der Dienst eventuell noch aktiviert oder gestartet werden.
sudo systemctl enable systemd-resolved sudo systemctl start systemd-resolved
Dann kann man systemd-resolved einen DNS-Server übergeben:
sudo systemd-resolve --set-dns=IPvomDNS --interface=NameDerSchnittstelle
Den Schnittstellennamen kann man mit
ip a
herausfinden.
Jetzt sollte ein
nslookup ubuntuusers.de 127.0.0.53
eine Antwort liefern. Ist dies der Fall, funktioniert der DNS. systemd-resolve behält diesen aber nur bis zum nächsten Neustart.
Mit NetworkManager¶
Die Datei /etc/NetworkManager/NetworkManager.conf muss mit Root-Rechten durch folgenden Inhalt ersetzt werden:
[main] plugins=ifupdown,keyfile [ifupdown] managed=false [device] wifi.scan-rand-mac-address=no
Nun sollte ein Neustart erfolgen.
ohne NetworkManager (auch Server)¶
Die symbolische Verknüpfung /etc/resolv.conf muss auf /run/systemd/resolve/stub-resolv.conf zeigen.
sudo rm /etc/resolv.conf sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
Danach sollte ein
cat /etc/resolv.conf |grep nameserver
folgendes liefern:
nameserver 127.0.0.53
Hinweis:
Bei der Verwendung von der interfaces-Datei und systemd-resolve kam es zu Problemen bei der Übergabe des DNS an systemd-resolve. Der DNS muss nach jedem Neustart erneut manuell systemd-resolve übergeben werden. Besser Netplan oder systemd-networkd benutzen.