resolvconf
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Dieser Artikel ist mit keiner aktuell unterstützten Ubuntu-Version getestet! Bitte teste diesen Artikel für eine Ubuntu-Version, welche aktuell unterstützt wird. Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Das Paket resolvconf ist ein Manager für die wichtige Systemdatei /etc/resolv.conf, mit der die DNS-Namensauflösung über die glib-Bibliothek konfiguriert wird.
In der Frühzeit der unixoiden Betriebssysteme war es üblich, die zur DNS-Namensauflösung benötigten Informationen – insbesondere die IP-Adressen der Namensserver und den Suchpfad für die Domänen – in der Textdatei /etc/resolv.conf direkt mit Hilfe eines Texteditors[3] einzutragen; seit dem Jahre 2003 verwenden Debian-Systeme und auch Ubuntu-Desktops bis zur Version 16.10 hierfür jedoch den Manager resolvconf, der diese Aufgabe nach Angaben der eingesetzten Netzwerk-Konfigurationsprogramme wie ifupdown, NetworkManager, DHCP-Clients automatisch wahrnimmt. Seit Ubuntu 17.10 wird statt resolvconf der Manager systemd-resolved verwendet.
Hinweis:
Bei einem Rechnersystem mit aktivem Manager für die Datei /etc/resolv.conf sollte man diese Datei nicht selbst direkt mit einem Texteditor bearbeiten, da man sonst Störungen der DNS-Namensauflösung riskiert.
Installation¶
Bei Ubuntu-Desktop-Systemen wird bei einer normalen Installation bereits ein Manager für die Systemdatei /etc/resolv.conf installiert.
Bei Ubuntu-Server-Systemen benötigt man dieses Paket[1]:
resolvconf
Befehl zum Installieren der Pakete:
sudo apt-get install resolvconf
Oder mit apturl installieren, Link: apt://resolvconf
Man sollte nicht mehrere Manager für die Systemdatei /etc/resolv.conf parallel installieren. Der bei Ubuntu 16.04 als Standard installierte resolvconf und der bei Ubuntu ab 17.10 als Standard installierte systemd-resolved stören sich gegenseitig. Dieser Konflikt wird im Paketmanagment nicht aufgelöst. Bei Systemen ab 17.10 muss systemd-resolved manuell deaktiviert werden, damit keine Störungen auftreten. Der NetworkManager muss zudem so konfiguriert werden, dass dieser resolvconf nutzt.
Bedienung¶
Bei installiertem resolvconf kann man die Namensserver und den Domänen-Suchpfad über die gängigen Netzwerk-Konfigurationsprogramme festlegen:
ifupdown¶
Hier erfolgen die Angaben in der Datei /etc/network/interfaces:
Bei Verwendung der Methode
dhcp
werden die vom DHCP-Server empfangenen Informationen vom DHCP-Client direkt an das Programm resolvconf übergeben.Bei Verwendung der Methode
static
kann man über die Optionendns-nameservers
unddns-search
angeben, was das Programm resolvconf eintragen soll. Für Beispiele lese den Artikel interfaces.
Network Manager¶
Hier erfolgen die Angaben in den Verbindungsdateien im Verzeichnis /etc/NetworkManager/system-connections/ mit Hilfe der Optionen ipv4.dns
für die Server und ipv4.dns-search
für den Suchpfad. Diese Angaben kann man (als root[4]) direkt per Texteditor in der Verbindungsdatei eintragen, oder man benutzt das Text-Interface von NetworkManager oder dessen GUI. In gleicher Weise kann man auch IPv6-Adressen für Namensserver über die Option ipv6.dns
definieren.
systemd-networkd¶
systemd-networkd enthält keine Schnittstelle zu resolvconf. Man benutzt besser den Manager systemd-resolved aus der systemd-Familie.
Manuelle Konfiguration¶
Man kann das Programm resolvconf auch über eine Console händisch aufrufen[2] und ihm die Informationen übergeben. Das folgende Beispiel definiert beispielhaft einen lokalen und den Google-Nameserver:
(echo 'nameserver 10.11.12.13' ; echo 'nameserver 8.8.8.8' ) | sudo resolvconf -a eth0.manual sudo resolvconf -u
Im Prinzip schreibt man den gewünschten Inhalt der Datei /etc/resolv.conf auf den Eingangskanal stdin des Programms resolvconf, welches wegen der Option -a
diese Informationen im Beispiel unter der Record-Bezeichnung eth0.manual speichert. Man ist selbst für eine sinnvolle Bezeichnung verantwortlich und sollte die Hinweise der Manpage beachten. Ein Aufruf mit der Option -u
triggert die Aktualisierung der Datei /etc/resolv.conf.
Alternativ kann man, wenn man ohnehin die Datei /etc/resolv.conf händisch pflegen möchte, das Paket resolvconf deinstallieren und damit die Komplexität seines Systems reduzieren. Man beachte aber, dass dann damit auch NetworkManager funktional eingeschränkt wird und in der Datei /etc/network/interfaces die Optionen dns-nameservers
und dns-search
nicht mehr funktionieren. Ersatzweise kann/muss man den DHCP-Client direkt konfigurieren.
Hinweise¶
Es existieren mehrere Varianten des Managers resolvconf, mindestens die ursprüngliche Implementierung von Debian und die des openresolv-Projektes 🇬🇧. Das Programm des openresolv-Projektes kennt die Datei /etc/resolvconf.conf, mit der das Programm selbst konfiguriert werden kann. Siehe hierzu dessen Manpage:
man resolvconf.conf
resolvconf ersetzt die Textdatei /etc/resolv.conf durch einen symbolischen Link. Die Überschreibung dieses Links oder auch direktes manuelles Ändern des Dateiinhaltes ist eine häufige Ursache für Störungen bei der DNS-Namensauflösung und träges Verhalten beim Zugriff auf das Internet.
Ubuntu-Desktops konfigurieren standardmäßig einen lokalen DNS-Server als Cache; dieser wird realisiert durch dnsmasq (vor 17.10) bzw. systemd-resolved (ab 17.10). Bei einer Verwendung eines solchen Cache darf in der Datei /etc/resolv.conf nur genau ein Namensserver eingetragen sein und dieser Eintrag muss auf den lokalen DNS-Server im Bereich 127.0.0.0/8
zeigen. Änderungen auf andere/weitere Namensserver, auch mit der oben beschriebenen korrekten manuellen Bedienung, führen zu Störungen bei der DNS-Namensauflösung. Die vom lokalen DNS-Server zu benutzenden Forwarder werden weder direkt noch indirekt über die Datei /etc/resolv.conf definiert. Man konsultiere die Dokumentation des als DNS-Cache eingesetzten Programms für weitere Details.
Links¶
Manpage:
auf eigenem Rechner:
man resolvconf
systemd-resolved Alternativer Manager, Standard bei Ubuntu ab 17.10