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 Host-Namen wie "fileserver.intern" oder "example.com". Domain-Namen wurden eingeführt, weil sich Menschen Adressen besser merken können als IP-Adressen. Ein DNS-Server liefert auf Anfrage die IP-Adresse zum Host-Namen.
In manchen Fällen möchte man den DNS-Server selbst festlegen, da der verwendete bestimmte Anfragen verfälscht (um Zugriff auf bestimmte Internetseiten zu unterbinden) oder weil man z.B. Werbe-Domains auf 0.0.0.0 auflösen möchte.
- Aktuellen DNS-Server herausfinden
- DNS-Server testen
- Die Datei /etc/resolv.conf
- Desktopsysteme
- Server-Systeme
- 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
Aktuellen DNS-Server herausfinden¶
Dazu gibt man ein:
nslookup example.com | grep Server
Hier erhält man in den Desktop-Varianten von Ubuntu einen Server, der auf eine IP-Adresse 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-Server, den man benutzen möchte, 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
Host-Namen zu IP-Adresse herausfinden¶
Diese Auflösung kann auch rückwärts durchgeführt werden (Host-Namen zu einer bekannten IP-Adresse 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 Desktop-Systemen je nach verwendeter Ubuntu-Version eine symbolische Verknüpfung. Diese Datei wird verwaltet und sollte daher nicht von Hand verändert werden.
Desktopsysteme¶
Bei allen Desktop-Systemen ist der NetworkManager installiert. Solange dieser installiert ist, darf an der Datei /etc/resolv.conf nichts geändert werden.
Ubuntu 18.04¶
Unter Ubuntu 18.04 wird systemd-resolved als lokaler DNS-Server genutzt. Dieser lauscht auf der IP 127.0.0.53 und ist in der Datei 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 Datei /etc/resolv.conf eingetragen. Die symbolische Verknüpfung /etc/resolv.conf zeigt auf /run/systemd/resolvconf/resolv.conf.
Server-Systeme¶
Ubuntu 18.04¶
Unter Ubuntu 18.04 wird systemd-resolved als lokaler DNS-Server genutzt. Dieser lauscht auf der IP 127.0.0.53 und ist in der Datei 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 Datei interfaces hinterlegten DNS-Server in die Datei /etc/resolv.conf ein. Ist dnsmasq/dnsmasq-base installiert, trägt resolvconf die 127.0.1.1 in die Datei /etc/resolv.conf ein.
Verwaltung der /etc/resolv.conf unterbinden¶
Möchte man manuell in die Datei /etc/resolv.conf einen DNS-Server eintragen, so müssen die Verwaltungsprogramme dieser Datei deaktiviert bzw. deinstalliert werden. Voraussetzung ist, dass der NetworkManger nicht installiert ist.
Dieser kann mittels
sudo apt remove network-manager
auch unter Desktop-Systemen 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¶
Voraussetzung ist, dass ein Verwaltungsprogramm für die Datei /etc/resolv.conf eingesetzt wird, sonst muss die Datei manuell erstellt werden.
Desktop-Systeme 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-Server kann nur aus der Datei interfaces übernommen werden, wenn resolvconf installiert ist.
resolv.conf manuell erstellen¶
Nutzt man keine Verwaltungsprogramme für die Datei /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 muss 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-base 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 Namens des DNS-Servers an systemd-resolve. Der DNS-Servername muss nach jedem Neustart erneut manuell systemd-resolve übergeben werden. Besser Netplan oder systemd-networkd benutzen.