/etc/resolv.conf

Aus Foxwiki

resovl.conf - Konfigurationsdatei für den Resolver

Beschreibung

Der Resolver ist eine Sammlung von Routinen in der C-Bibliothek, über die auf das Internet-Namenssystem (Domain Name System, DNS) zugegriffen wird.

  • Die Konfigurationsdatei des Resolvers enthält Informationen, die beim ersten Aufruf einer Resolver-Routine durch einen Prozess eingelesen werden.
  • Die Datei wurde menschenlesbar entworfen und enthält eine Liste von Schlüsselworten und Werten, die verschiedene Typen von Resolver-Informationen bereitstellen.
  • Die Konfigurationsdatei wird als eine vertrauenswürdige Quelle für DNS-Informationen betrachtet.
    • lesen Sie die nachfolgende Option trust-ad für Details.

Wenn diese Datei nicht vorhanden ist, wird nur der Name-Server auf dem lokalen Rechner abgefragt und die Suchliste enthält nur den aus dem Rechnernamen ermittelten lokalen Domain-Namen.

Installation

Anwendungen

Fehlerbehebung

Syntax

Optionen

Parameter

Umgebungsvariablen

Exit-Status

Konfiguration

Dateien

  1. /etc/resolv.conf
  2. <resolv.h>

Sicherheit

Dokumentation

RFC

Man-Pages

  1. resolv.conf(5)

Info-Pages

Siehe auch

  1. host.conf(5)
  2. hosts(5)
  3. nsswitch.conf(5)
  4. hostname(7)
  5. named(8)
  6. Name Server Operations Guide for BIND

Links

Projekt-Homepage

Weblinks

Links

  1. [1] {en}
  2. [:systemd/networkd/#systemd-resolved:systemd-resolved] Alternativer Manager, Standard bei Ubuntu ab 17.10

Einzelnachweise

Testfragen

Testfrage 1

Antwort1

Testfrage 2

Antwort2

Testfrage 3

Antwort3

Testfrage 4

Antwort4

Testfrage 5

Antwort5

TMP

resolv.conf

Normalerweise wird die Datei resolv.conf(5) von verschiedenen Netzwerkdienst-Dämonen dynamisch verwaltet.

  • Dies ist die Standardeinstellung, die für Laptops und andere sehr mobile Systeme gedacht ist, die sich mit verschiedenen Netzwerken verbinden können.
  • Es funktioniert auch gut für viele Desktop- und Serversysteme, solange die Netzwerkinfrastruktur perfekt ist.

Bei manchen Systemen und in manchen Netzwerken möchte der Systemadministrator die Datei /etc/resolv.conf von Hand konfigurieren.

  • Dies führt zu einem Konflikt zwischen den Änderungen des Administrators und den dynamischen Änderungen, die von den Netzwerkdienst-Dämonen durchgeführt werden.
  • Wenn Sie die Datei /etc/resolv.conf von Hand bearbeiten und verhindern müssen, dass die Daemonen Ihre Änderungen überschreiben, finden Sie auf dieser Seite einige der Möglichkeiten, die Sie haben.

openresolv und resolvconf konfigurieren

Debian stellt zwei Pakete zur Verfügung, von denen jedes ein Programm namens resolvconf enthält, das verwendet werden kann, um die Änderung der Datei /etc/resolv.conf durch verschiedene Netzwerkprogramme zu kontrollieren (oder ganz zu verhindern).

  • Diese Pakete sind openresolv und resolvconf.
  • Sie kollidieren miteinander, da sie buchstäblich beide das gleiche Programm bereitstellen, sodass Sie höchstens eines von ihnen auswählen müssen.

Diese Pakete enthalten verschiedene Konfigurationsdateien für andere Pakete (wie isc-dhcp-client).

  • Zum Beispiel enthält resolvconf eine Datei, die die Shell-Funktion make_resolv_conf modifiziert, die von dhclient-script(8) verwendet wird.

Wenn openresolv installiert ist, können Sie es anweisen, nichts zu tun, wenn ein Daemon versucht, resolv.conf zu ändern, indem Sie resolvconf=NO in die Datei /etc/resolvconf.conf eintragen.

Wenn resolvconf installiert ist und Sie ifupdown verwenden, um Ihre Schnittstelle(n) zu konfigurieren, können Sie dns-nameserver-Einträge in der/den entsprechenden Stanza(s) in /etc/network/interfaces verwenden:

iface eth0 inet static
   address 192.168.1.3
   netmask 255.255.255.0
   gateway 192.168.1.1
   dns-nameserver 192.168.1.254
   dns-nameserver 8.8.8.8
   dns-search foo.org bar.com

dhclient konfigurieren

Der häufigste Daemon, der resolv.conf überschreibt, ist dhclient(8) (aus isc-dhcp-client).

  • In vielen Fällen reicht es aus, diesen einen Daemon davon abzuhalten, die Datei zu verändern.

dhclient daran hindern, /etc/resolv.conf zu ändern

Ein anderer Ansatz macht von den Hook-Skripten von dhclient-script Gebrauch. Laut dhclient-script(8):

  • Beim Start definiert das Client-Skript zunächst eine Shell-Funktion, make_resolv_conf , die später zum Erstellen der Datei /etc/resolv.conf verwendet wird.
  • Um das Standardverhalten außer Kraft zu setzen, muss diese Funktion im Enter-Hook-Skript neu definiert werden.

Daher können wir dhclient davon abhalten, die Datei resolv.conf zu überschreiben, indem wir folgendes tun:

echo 'make_resolv_conf() { :; }' > /etc/dhcp/dhclient-enter-hooks.d/leave_my_resolv_conf_alone
chmod 755 /etc/dhcp/dhclient-enter-hooks.d/leave_my_resolv_conf_alone
  • Das execute-Bit ist erforderlich, weil dhclient-script run-parts(8) verwendet, um zu entscheiden, welche Dateien gelesen werden sollen.
  • Aus demselben Grund darf der Dateiname nur Buchstaben, Ziffern, Unterstriche und Bindestriche enthalten.

Ändern von /etc/dhcp/dhclient.conf

Die Datei /etc/dhcp/dhclient.conf kann mit Direktiven versehen werden, die die vom DHCP-Server gesendeten Optionen außer Kraft setzen.

Diese Direktiven setzen die Parameter für Domäne, Suche und Nameserver außer Kraft, die in /etc/resolv.conf eingetragen sind:

supersede domain-name "example.com";
supersede domain-search "example.com";
supersede domain-name-servers 127.0.0.1;

Eine andere Möglichkeit besteht darin, "domain-name, domain-name-servers, domain-search" aus der Anfragezeile zu entfernen.

Dies funktioniert jedoch nur in einigen Netzwerken und nicht in anderen.

Wenn der DHCP-Server unaufgeforderte domain-name-servers (et al.)-Antworten sendet, beachtet dhclient diese trotzdem und überschreibt die Datei resolv.conf.

Modifying /etc/dhcp/dhclient.conf

The /etc/dhcp/dhclient.conf file can be populated with directives that will override the options sent by the DHCP server.

  • For example, these directives will override the domain, search, and nameserver parameters that are placed into /etc/resolv.conf:
supersede domain-name "example.com";
supersede domain-search "example.com";
supersede domain-name-servers 127.0.0.1;

Another option is to remove "domain-name, domain-name-servers, domain-search" from the request line.

  • However, this only works on some networks, and not on others.
  • If the DHCP server sends unsolicited domain-name-servers (et al.) responses, dhclient will still heed them, and will still overwrite the resolv.conf file.

resolv.conf unveränderbar machen

Dieser Ansatz macht /etc/resolv.conf unveränderlich, so dass sie nicht geändert werden kann, unabhängig davon, welche Pakete installiert sind oder wer versucht, sie zu ändern.

rm -f /etc/resolv.conf
editor /etc/resolv.conf
chattr +i /etc/resolv.conf

Natürlich müssen Sie den entsprechenden Inhalt in die Datei einfügen, bevor Sie das immutable-Bit setzen.

  • Jedes Mal, wenn Sie die Datei ändern wollen, müssen Sie das Bit entfernen, Ihre Änderung vornehmen und dann das Bit wiederherstellen.

Eine Folge davon, /etc/resolv.conf unveränderlich zu machen, ist, dass, wenn dhclient-script versucht, die Datei zu ändern und dabei scheitert, es /etc mit temporären Dateien überfüllt.

  • Siehe 860928 für Details.
  • Der Benutzer/Administrator muss diese Dateien möglicherweise regelmäßig aus /etc entfernen, bis #860928 behoben ist.

Manpage

wiki.ubuntuusers.de

Vorlage(Getestet, bionic, focal) {{{#!vorlage Hinweis Beim Begriff "resolvconf" besteht ein Namenskonflikt:

* Es gibt eigenständige Programme und Pakete mit diesem Namen. Diese wurden früher (vor 17.10) auch bei Ubuntu eingesetzt.
* Der Name "resolvconf" ist ein Alias für das Dienstprogramm resolvectl von [:systemd/systemd-resolved:systemd-resolved], welches sich unter seinem Alias ganz anders als unter seinem eigentlichen Namen verhält und die Funktionalität der gleichnamigen eigenständigen Programme eingeschränkt nachbildet.

In diesem Artikel wird das eigenständige Programm aus dem Ubuntu-Paket resolvconf beschrieben. }}}

{{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Programme_starten: Starten von Programmen] [:Terminal: Ein Terminal öffnen] [:mit Root-Rechten arbeiten:] }}}

Inhaltsverzeichnis() 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 [:interfaces:ifupdown], [:NetworkManager:], DHCP-Clients automatisch wahrnimmt. Seit Ubuntu 17.10 wird statt resolvconf der Manager [:systemd/networkd/#systemd-resolved:systemd-resolved] verwendet.

{{{#!vorlage 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 vor 17.10 bereits ein Manager für die Systemdatei /etc/resolv.conf installiert.

Bei Ubuntu-Server-Systemen und neueren Desktop-Systemen benötigt man dieses Paket[1]: {{{#!vorlage Paketinstallation 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 Optionen `dns-nameservers` und `dns-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 [:NetworkManager/NetworkManager_ohne_GUI: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/networkd/#systemd-resolved: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:

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 {en}. 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.