ubuntuusers.de

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.

Hinweis:

In diesem Artikel wird nur für Clients die Benutzung und Konfiguration von DNS-Servern beschrieben. Die Einrichtung eines Rechners als autoritativer oder rekursiver DNS-Server wird in anderen Artikeln behandelt, siehe beispielsweise: Router/DNS-Server

DNS steht für "Domain Name System" und beschreibt die Namensauflösung von Host-Namen wie "wiki.ubuntuusers.de" oder "example.com". Domain-Namen wurden eingeführt, weil sich Menschen Namen besser merken können als IP-Adressen. Ein DNS-Server liefert auf Anfrage die IP-Adresse zum Host-Namen. Dieser Artikel betrachtet jedoch nur Unicast-DNS. Bestimmte Zonen wie .local werden über mDNS aufgelöst. Hierfür ist Avahi zuständig.

Ein DNS-Server kann ebenso mehrere Rollen einnehmen, welche in folgender Tabelle erläutert werden.

Resolver/Recursor DNS-Server, der auf rekursive Anfragen antwortet und die Informationen dazu hierarchisch von der root-Zone beginnend abfragt. Er kann die Antworten zwischenspeichern, um Anfragen schneller zu beantworten zu können und Traffic zu vermeiden.
Forwarder/stub-Resolver DNS-Server, der auf rekursive Anfragen antwortet, diese jedoch einfach an einen Resolver weiterleitet und die Antworten zwischenspeichert (Cache).
autoritativer Server DNS-Server, der Zonendateien mit Records enthält, die von anderen Resolvern abgefragt werden.

Ubuntu nutzt wie die meisten Betriebssysteme nur einen Stub-Resolver. Dieser leitet alle Anfragen an einen DNS-Server weiter, der diese rekursiv beantworten kann (dies kann ebenso ein Stub-Resolver sein). Der Grund hierfür ist einerseits die einfachere Implementierung (ein Stub-Resolver muss nicht iterativ bei den autoritativen Servern nachfragen), andererseits das Einsparen von Netzwerkverkehr, da mehrere Rechner einen Resolver nutzen können und so gleiche Anfragen nur einmal beim autoritativen Server gestellt werden müssen. Zudem kann der zentraler Resolver einen Cache haben und so Antworten schneller liefern, als wenn jeder Rechner diese iterativ bei den autoritativen Servern abfragen würde.

Die IP-Adressen der Resolver kann Ubuntu auf 3 Wegen automatisch erhalten:

DHCPv4 RFC2132 🇬🇧 Mittels DHCPv4 kann Ubuntu ein oder mehrere IPv4-Adressen für DNS-Server erhaltenen.
DHCPv6 RFC3646 🇬🇧 Mit DHCPv6 kann kann Ubuntu ein oder mehrere IPv6-Adressen für DNS-Server erhaltenen.
Router-Advertisement RFC8106 🇬🇧 Mit dem Router-Advertisement kann Ubuntu ein oder mehrere IPv6-Adressen für DNS-Server erhaltenen.

All diese Optionen sind in der Praxis in Benutzung, je nach Umgebung kann es aber sein, dass nur bestimmte Methoden zur Verfügung stehen (z.B. in reinen IPv6-Netzwerken steht kein DHCPv4 zur Verfügung).

Zudem können DNS-Server manuell über die Netzwerkkonfiguration wie NetworkManager, systemd/networkd oder Netplan festgelegt werden.

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 und :: auflösen möchte.

Als Stub-Resolver kommt unter Ubuntu systemd-resolved zum Einsatz. Dieser erhält IP-Adressen von Recursorn und fragt dort die DNS-Informationen rekursiv ab.

Aktuellen DNS-Server herausfinden

Hinweis:

Bei systemd wurde der Befehl systemd-resolve in resolvectl umbenannt.

Der Befehl

resolvectl --no-pager |grep Server 

Dies zeigt die IP-Adresse an, welche gerade als Recursor verwendet wird und welche Recursor zur Verfügung stehen. Ist einer nicht erreichbar, wird ein anderer gefragt.

Die Datei /etc/resolv.conf

Ursprünglich war unter UNIX- und Linux-Systemen vorgesehen, den DNS-Resolver manuell in diese Datei einzutragen. Da dies in vielen Fällen (u.a. bei Laptops) unkomfortabel ist, wurden Verwaltungsprogramme wie resolvconf entwickelt.

In Ubuntu 18.04 und neuer existiert diese Datei gar nicht mehr, sondern sie ist eine symbolische Verknüpfung auf /run/systemd/resolve/stub-resolv.conf. Sie wird von systemd-resolved verwaltet und darf auf keinen Fall manuell editiert werden, solange ein Verwaltungsprogramm aktiv ist. In dieser Datei ist nur die IPv4-Adresse 127.0.0.53 als DNS-Server eingetragen. Dies ist der Dienst systemd-resolved, welcher auf dem TCP- und UDP-Port 53 auf der IPv4-Adresse 127.0.0.53 lauscht.

Die von systemd-resolved genutzten DNS-Server stehen in der Datei /run/systemd/resolve/resolv.conf.

Diese erhält systemd-resolved nicht direkt, sondern über die Netzwerkkonfiguration, die auf verschiedenem Wege gemacht werden kann.

In Ubuntu 16.04 und älter wurde resolvconf eingesetzt.

Desktopsysteme

Bei allen Desktop-Systemen ist der NetworkManager installiert. Der NetworkManager gibt die DNS-Server an systemd-resolved. 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. Dieser wird dann systemd-resolved mitgeteilt.

Server-Systeme

Unter Ubuntu 18.04 und neuer wird standardmäßig Netplan genutzt. Es kann aber auch systemd-networkd genutzt werden. Auch der NetworkManager kann dort installiert und wie in Desktopsystemen genutzt werden. Die Nutzung der Datei /etc/network/interfaces funktioniert nicht, wenn man systemd-resolved nutzen möchte.

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. Soll der NetworkManager weiterhin installiert bleiben, muss er konfiguriert werden.

Dazu muss in der Datei /etc/NetworkManager/NetworkManager.conf folgender Text innerhalb von [main] eingefügt werden:

dns=none

Der NetworkManager bearbeitet dann nicht mehr die resolv.conf, gibt seine Server jedoch weiterhin an systemd-resolved weiter. systemd-resolved muss daher ebenfalls abgeschaltet werden.

Zuerst beendet man systemd-resolved mit

sudo systemctl stop systemd-resolved 

Dann kann der Dienst mit

sudo systemctl disable systemd-resolved 

deaktiviert werden (er startet dann nicht mehr automatisch).

Danach muss die Datei /etc/resolv.conf manuell erstellt werden.

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 10.0.0.1 #für IPv4
nameserver 2001:db8::1234:abcd #für IPv6

Weitere Konfigurationsmöglichkeiten (u.a. zu Extended-DNS und Suchdomänen) sind in der Manpage 🇬🇧 beschrieben.

Diese Revision wurde am 19. August 2023 12:00 von itu erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Sicherheit, Netzwerk, Server, System, Internet