ubuntuusers.de

Du betrachtest eine alte Revision dieser Wikiseite.

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.

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

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.

Diese Revision wurde am 18. Januar 2019 21:03 von BillMaier erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Sicherheit, Netzwerk, Server, System, Internet