Sollte / etc / hosts einen Eintrag wie '127.0.0.1 localhost myhost.example.org myhost' enthalten?

16

Bei der Betrachtung einer Vielzahl von Linux- und FreeBSD-Systemen ist mir aufgefallen, dass auf einigen Systemen /etc/hostsein Eintrag für den öffentlichen Hostnamen des Hosts enthalten ist, auf anderen Systemen jedoch nicht.

Was ist hier die beste Praxis? Sollte meine Datei / etc / hosts einen Eintrag für den FQDN des Hosts (z. B. myhost.example.org) und für den kurzen Hostnamen (z. B. myhost) enthalten? Sollte der Eintrag für den vollqualifizierten Domänennamen auf den lokalen Host verweisen oder sollte er auf die externe IP der Box verweisen?

In der Standardkonfiguration vieler RHEL / EL-Boxen wird der öffentliche Hostname beispielsweise nicht folgendermaßen angegeben /etc/hosts:

myhost # cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
myhost #

Die andere Variante ist, dass der kurze Hostname und der vollqualifizierte Domänenname des Hosts ebenfalls auf 127.0.0.1 verweisen. Mir wurde gesagt, dass dies eine ältere Praxis ist, die heutzutage verpönt ist, aber viele Administratoren tun dies immer noch.

myhost # cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 myhost myhost.example.org
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
myhost #    

Die dritte Variante ist, dass der FQDN und der kurze Hostname des Hosts die externe IP-Adresse des Hosts erhalten. Diese dritte Variante erscheint mir optimal, da sie die Suche nach den DNS-Servern verringert.

myhost # cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
74.125.239.xxx myhost myhost.example.org
myhost #  

Was ist hier die beste Praxis?

Stefan Lasiewski
quelle
2
Es läuft darauf hinaus, welche Aliase die Programme verwenden (z. B. Mysql möchte / muss einen 'localhost'-Alias ​​haben), 127.0.0.1 localhost myhostsollte ausreichen und 74.125.239.xxx myhost myhost.example.orgspart, wie Sie sagten, DNS-Lookups. "Best Practice", es sei denn, es gibt einen Standard, es ist "das, was sachkundige Leute verwenden".
LinuxDevOps

Antworten:

12

Sind Sie bereit, das Funktionieren von DNS als Fehlerquelle in Ihrer Umgebung zu akzeptieren oder nicht? Einige Dienste / Anwendungen schlagen in bestimmten Konfigurationen fehl, wenn ein System den Namen des lokalen Computers nicht auflösen kann.

Wenn Sie einen absolut kritischen Dienst haben, der in allen Situationen ausgeführt werden muss, ist es nicht ungewöhnlich, einen Eintrag in die Hosts-Datei aufzunehmen, damit der Dienst in Situationen, in denen die DNS-Auflösung fehlschlägt, weiter ausgeführt werden kann.

Wenn Sie Ihren DNS als Fehlerquelle akzeptieren können oder Ihre Dienste bei einer fehlerhaften Auflösung nicht ausfallen, können Konfigurationseinträge in der Hosts-Datei vermieden werden.

Ich empfehle dringend, dass Sie Ihre DNS-Server so stabil wie möglich machen. Wenn Sie Ihre Hosts-Datei konfigurieren müssen, verwenden Sie ein Konfigurationsverwaltungssystem, um dies zu tun. Sie sollten wirklich vermeiden, manuell eine Hosts-Datei zu berühren.

Zoredache
quelle
13
Nur um dies zu ergänzen, /etc/hostswird DNS in den meisten Fällen abgelöst und im Falle eines DNS-Ausfalls nicht als Fallback verwendet. Dies ist eine Unterscheidung, die meines Erachtens getroffen werden sollte. (Ich versuche nicht, etwas auszusuchen.) Es hängt alles von der in definierten Reihenfolge ab /etc/nsswitch.conf.
Aaron Copley
4
Das andere Problem ist, dass das Abfragen der DNS-Server viel langsamer ist als das Abfragen der /etc/hostsDatei. Viele Anwendungen fragen ihren Hostnamen mehrmals pro Sekunde ab. Das Hinzufügen des Hostnamens /etc/hostsverringert die Latenz und sollte die Anwendung beschleunigen.
Stefan Lasiewski