ubuntuusers.de

DNS-Konfiguration

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

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

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.

Diese Revision wurde am 2. Juni 2020 15:49 von mintar erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Internet, System, Server, Netzwerk, Sicherheit