/etc/hosts stellt dem lokalen Namensdienst des Systems statische Einträge aus Adressen und Namen bereit. Die Datei eignet sich für Loopback-Namen, Abhängigkeiten beim Systemstart und eng begrenzte Tests. Sie veröffentlicht jedoch keine Einträge für andere Hosts und aktualisiert DNS nicht.
DNS · Lektion 4
/etc/hosts
Lerne, wie lokale Zuordnungen der Hosts-Datei an der Linux-Namensauflösung teilnehmen und wie du sie sicher testest.
Die Datei lesen
Eine Zeile beginnt mit einer IPv4- oder IPv6-Adresse, gefolgt von einem oder mehreren Namen:
127.0.0.1 localhost
192.0.2.25 app-test.example.net app-test
2001:db8::25 app-test-v6.example.net app-test-v6
Kommentare beginnen mit #. Manche Werkzeuge behandeln den ersten Namen üblicherweise als kanonisch und spätere Namen als Aliase. Das Verhalten von Anwendungen und Resolver-APIs kann jedoch abweichen. Vermeide doppelte oder widersprüchliche Einträge für denselben Namen.
Was steht auf einer normalen Zuordnungszeile in /etc/hosts an erster Stelle?
Resolver-Reihenfolge
Die Name-Service-Switch-Konfiguration, üblicherweise /etc/nsswitch.conf, bestimmt, wie Systemresolver-Funktionen files, DNS, Multicast-Systeme und andere Quellen kombinieren. Eine verbreitete Zeile lautet:
hosts: files dns
Gehe nicht ohne Prüfung der Richtlinie davon aus, dass Dateien immer zuerst berücksichtigt werden. Anwendungen können außerdem eigene DNS-Bibliotheken, Caches, Proxys oder verschlüsselte Resolver verwenden und müssen dem Systempfad nicht folgen.
Was bestimmt, ob der Systemresolver /etc/hosts vor DNS berücksichtigt?
Über den Systemresolver testen
Verwende getent, um den konfigurierten Namensdienstpfad des Systems zu durchlaufen:
$ getent ahosts app-test.example.net
dig fragt DNS direkt ab und zeigt normalerweise keine Zuordnungen aus /etc/hosts an. Dieser Unterschied ist nützlich: Wenn getent erfolgreich ist, dig jedoch nicht, kann dies auf eine lokale Quelle oder eine abweichende Resolver-Richtlinie hinweisen.
Welches Werkzeug eignet sich besser, um zu prüfen, ob die normale Systemauflösung einen Eintrag der Hosts-Datei erkennt?
Sicher bearbeiten
Bewahre erforderliche Einträge für localhost und die Hostidentität, prüfe die beabsichtigte Adresse und nimm mit einem privilegierten Editorwerkzeug eine wiederherstellbare Änderung vor. Überschreibe nicht beiläufig eine echte öffentliche Domain für einen Test. Dadurch können Anmeldedaten oder Anwendungsverkehr unerwartet umgeleitet werden. Verwende einen eigenen Testnamen und entferne den Eintrag nach dem Experiment.
Teste nach der Bearbeitung die konkrete Anwendung, da sie einen Cache behalten oder einen anderen Resolver verwenden kann. Dokumentiere dauerhafte Überschreibungen, damit sie ihren Zweck nicht unbemerkt überdauern.
Warum solltest du einen eigenen Testnamen verwenden, statt den Namen eines öffentlichen Dienstes zu überschreiben?
Resolver-Server konfigurieren
/etc/resolv.conf führt traditionell die Einstellungen des DNS-Resolvers auf, wird jedoch häufig von NetworkManager, systemd-resolved, DHCP oder einem anderen Manager erzeugt. Prüfe symbolische Links und Dateikommentare. Ändere anschließend die zuständige Konfigurationsquelle, statt eine erzeugte Ausgabe zu bearbeiten, die wieder überschrieben wird.
Was solltest du vor der Bearbeitung von /etc/resolv.conf tun?
Lektion abgeschlossen
Sie haben /etc/hosts abgeschlossen
Du kannst /etc/hosts nun als kontrollierte lokale Eingabe des Resolvers verwenden.
Schreibe Zuordnungen mit der Adresse zuerst und bewusst gewählten Namen und Aliasen.
Prüfe die Name-Service-Switch-Reihenfolge, statt sie vorauszusetzen.
Teste die Systemauflösung mit
getentund DNS getrennt mitdig.Verwende eigene temporäre Namen und prüfe die tatsächliche Anwendung.
Ändere Resolver-Server über die zuständige Konfigurationsverwaltung.
Lernfortschritt speichern
Erstellen Sie ein kostenloses Konto, um diese Lektion zu speichern und auf jedem Gerät weiterzulernen.
Kostenloses Konto erstellen