Was ist /etc/hosts und warum wird es verwendet?
Um Netzwerkverkehr an einen Host zu senden, muss die numerische IP-Adresse (Internet Protocol) für diesen Host bekannt sein. Die IP-Adresse wird traditionell als xxx.xxx.xxx.xxx geschrieben, wobei jedes xxx einen Wert von 0 bis 255 für eine IPv4-Netzwerkadresse darstellt. Computer benötigen diese Adressen, aber Menschen finden es schwierig, sich numerische Werte zu merken. Der Domain Name Service (DNS) stellt einen Mechanismus bereit, um einer numerischen IP-Adresse einen oder mehrere alphanumerische Namen zuzuordnen. Auf einem Linux-System werden diese lesbaren Namen von der Resolver-Bibliothek, die in den libresolve.so-Dateien enthalten ist, die als Teil des glibc-RPM-Pakets bereitgestellt werden, in ihre numerischen IP-Äquivalente konvertiert. Programme, die die numerische IP-Adresse für einen Namen nachschlagen müssen, rufen diese Bibliothek auf.
Hostnamen und ihre IP-Adressen können an verschiedenen Orten gefunden werden:lokale Dateien, Remote-DNS-Server oder NIS+-Server, um nur einige zu nennen. Die Reihenfolge, in der diese Ressourcen durchsucht werden, hängt von den Hosts ab:Eintrag in /etc/nsswitch.conf Datei. Diese Zeile sieht normalerweise so aus:
# vi /etc/nsswitch.conf hosts: files dns
Dies veranlasst die Resolver-Bibliothek, zuerst die lokale /etc/hosts-Datei zu konsultieren; Wenn der Hostname dort nicht gefunden wird, wenden Sie sich an die entfernten DNS-Nameserver, die in /etc/resolv.conf angegeben sind Datei.
Linux bietet die Bindung RPM-Paket, um einer Verwaltungsdomäne zu ermöglichen, ihren eigenen DNS-Dienst zu konfigurieren und zu warten, aber häufig umfasst die Größe des lokalen Netzwerks nur wenige Hosts und rechtfertigt den Aufwand für die Wartung eines DNS-Dienstes nicht.
Format der /etc/hosts-Datei
Die Datei /etc/hosts ist eine gewöhnliche Textdatei. Zwei Arten von Zeilen sind erlaubt:
- Leere Zeilen
- Hostnamendefinitionen
Linien können nach Bedarf vermischt werden. Kommentare beginnen mit einem Hash-Symbol (# ) und fahren Sie bis zum Ende der Zeile fort.
Hostnamen und IP-Adressen zuordnen
Für jeden Host sollte eine einzelne Zeile mit den folgenden Informationen vorhanden sein:
IP_address canonical_hostname [aliases ...]
Felder des Eintrags werden durch beliebige Leerzeichen (Leerzeichen oder Tabulatoren) getrennt. Das erste Feld ist die numerische IP-Adresse, die für alle Hostnamen in diesem Eintrag verwendet werden soll. Abhängig von Ihren Anforderungen kann entweder eine IPv4-Adresse (10.1.2.3), eine IPv6-Adresse (2001:0db8:0000:0000:0000:0000:1428:57ab) oder eine IPv6-Abkürzung (::1) verwendet werden.
Nach der IP-Adresse geben verbleibende Token die lokal bekannten Hostnamen an, die dieser IP-Adresse zugeordnet sind. Per Konvention ist der erste Name nach der IP-Adresse der kanonische oder vollqualifizierte Domänenname. Ein Beispiel für einen kanonischen Namen wäre server.example.com; dies ist der offizielle Name des Hosts.
Alle verbleibenden Namen, die für die IP-Adresse definiert sind, sind Aliase oder alternative Namen für den offiziellen Hostnamen. Nehmen wir beispielsweise an, dass eine der Aufgaben, die server.example.com zugewiesen sind, darin besteht, die FTP-Site des Unternehmens zu sein. Ein geeigneter Alias könnte dann myftp.example.com sein und dieser Name könnte dem Eintrag /etc/hosts nach dem kanonischen Namen hinzugefügt werden. Oft ist ein Alias einfach der Hostname ohne Domänensuffix. Zum Beispiel:
192.168.10.12 server.example.com myftp.example.com myhost myftp
Der Vorteil, den kanonischen Hostnamen als erste Definition in der Zeile aufzulisten, besteht darin, dass die IP-zu-Hostname-Konvertierung (ähnlich wie bei Reverse-DNS-Lookups) normalerweise nur den ersten gefundenen Namen anzeigt; Konvention verwendet dafür den kanonischen Namen. In unserem Beispiel der Befehl:
$ ping myftp PING myhost.example.com (192.168.10.12) 56(84) bytes of data. 64 bytes from myhost.example.com (192.168.10.12): icmp_seq=1 ttl=64 time=0.023 ms 64 bytes from myhost.example.com (192.168.10.12): icmp_seq=2 ttl=64 time=0.028 ms 64 bytes from myhost.example.com (192.168.10.12): icmp_seq=3 ttl=64 time=0.028 ms
Beachten Sie, dass wir myftp angepingt haben, aber die Ergebnisse vom Host myhost kommen:Dies ist ein zuverlässiger Hinweis darauf, dass Sie einen Alias adressieren, nicht den tatsächlichen Host.