Format von / etc / hosts unter Linux (anders als Windows?)

22

Unterhalb dieser Frage ist ein Beispiel einer /etc/hostsDatei von einem Linux- (CentOS) und einem Windows-Computer eingefügt. Die Linux-Datei enthält nach der IP-Adresse zwei Einträge mit Registerkarten (localhost.localdomain localhost) und Windows nur einen. Wenn ich die Hosts-Datei in Windows so bearbeiten möchte, dass sie den Computernamen (etest) anstelle von localhost enthält, ersetze ich einfach das Wort localhost durch den gewünschten Computernamen. Der Computer muss nicht Teil einer Domain sein.

Auf einem Linux-Computer geben die beiden Einträge localhost.localdomainund localhostanscheinend an, dass der Computer Teil einer Domäne sein muss. Ist das wahr?

Kann ich einfach beide Einträge etestso bearbeiten, dass es liest:

127.0.0.1       etest etest

oder muss ich einen eintrag durch einen domainnamen ersetzen?

Lassen Sie mich außerdem wissen, wozu die zweite Zeile der /etc/hostsDatei auf dem Linux-Computer dient.

::1     localhost6.localdomain6 localhost6

hosts Datei auf einem Linux-Rechner:

# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1       localhost.localdomain localhost
::1     localhost6.localdomain6 localhost6

hosts Datei auf einem Windows-Computer:

# Copyright (c) 1993-1999 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

127.0.0.1       localhost
Thomas
quelle
Ich habe kürzlich eine ähnliche Frage gestellt, die aber kein großes Interesse geweckt hat. unix.stackexchange.com/questions/11844/etc-hosts-for-debian . Dieser ist allerdings besser geschrieben.
Faheem Mitha

Antworten:

13

Sie möchten immer, dass die 127.0.0.1-Adresse zuerst in localhost aufgelöst wird. Wenn es eine Domain gibt, können Sie diese auch verwenden, stellen Sie jedoch sicher, dass localhost an zweiter Stelle aufgeführt ist. Wenn Sie Ihrem Computer Aliase hinzufügen möchten, die nach der Loopback-Adresse suchen, können Sie diese als durch Leerzeichen getrennte Werte in dieser Zeile einfügen. Die Angabe einer Domain hier ist optional, aber entfernen Sie "localhost" nicht aus den Optionen.

Caleb
quelle
5
Auch ":: 1" ist das ipv6-Äquivalent von 127.0.0.1 (was für ipv4 gilt).
XQYZ
Bedeutet dies, dass es klüger wäre, eine Zeile wie diese anstelle der mit meiner Frage geposteten zu haben? Ich habe einen durch Leerzeichen getrennten Alias ​​(etest my hostname) eingefügt, wobei der localhost.localdomain localhost intakt bleibt. Wenn nicht, veröffentlichen Sie bitte ein Beispiel dessen, was Sie als idealen Eintrag vorschlagen, um den Hostnamen meines Computers einzuschließen und localhost-Einträge in der hosts-Datei zu haben.
Thomas
1
127.0.0.1 localhost.localdomain localhost etest
Thomas
1
@Thomas: Dein Beispiel ist genau so, wie es sein sollte. Wenn Sie zu Testzwecken weitere Aliase hinzufügen müssen (z. B. mit dem Namen virtueller Hosts in Apache), können Sie diese weiterhin an die Zeile anhängen.
Caleb
22

Das Format /etc/hostsunter Linux und Windows ist dasselbe:

IP address        hostname [hostalias]...

Wo die Klammern die übliche Art sind, um anzuzeigen, dass etwas optional ist (tippe sie nicht ein) und die Punkte ( ...) bedeuten, dass es mehr als einen geben kann.

Sie sollten Ihren Host nicht zu einem Teil einer Domain machen müssen. Probieren Sie es aus und sehen Sie. Es ist jedoch eine gute Idee, diese Option zu verwenden, .localdomainwenn Sie keinen echten Domainnamen haben. Durch die ndotsOption in kann die Auflösung von Hostnamen etwas beschleunigt werden /etc/resolv.conf.

Beachten Sie, dass Domain in diesem Sinne DNS-Domain (wie google.comoder stackexchange.com) bedeutet, keine Windows-Domain oder ähnliches.

Die Zeile, die mit beginnt, ::1ist für IPv6 . ::1ist wie 127.0.0.1unter dem neuen Adressierungsschema. Führen ifconfig loSie aus, und Sie sollten sehen, dass es zwei Adressen hat. Beachten Sie den Eintrag beginnend mit inet6.

$ ifconfig lo
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
...

Siehe die Gastgeber (5) man - Seite für weitere Details.

Mikel
quelle
(...) bedeutet, dass es mehrere geben kann: Werden die Extras durch Leerzeichen oder Kommas oder beides getrennt?
Guy
1
Leerzeichen. Ich nehme an, es ist korrekter hostname [hostalias[,hostalias]*].
Mikel
6

Ich kann nicht sagen, wie sich Windows von Linux unterscheidet, aber das Format der lokalen Maschinendefinition wirkt sich auf die Ergebnisse aus, die Sie mit dem Befehl 'hostname' erhalten.

Das Format, das mir am besten gefällt, ist das folgende:

127.0.0.1 etest.mydomain.com etest localhost

Das Wichtigste, was ich gefunden habe, ist, zuerst den FQDN und danach die Aliase in beliebiger Reihenfolge zu haben.

Wenn Sie damit experimentieren, die Namen nach der IP-Adresse neu anzuordnen und dann die Befehle 'hostname -s' (Kurzname) und 'hostname -f' (vollqualifizierter Domänenname oder vollqualifizierter Domänenname) verwenden, werden Sie sehen, was ich meine. Es sollte ungefähr so ​​aussehen:

$ hostname -s
etest

$ hostname -f
etest.mydomain.com

'hostname' sollte für sich genommen den Namen zurückgeben, den Sie für den Host in /etc/conf.d/hostname oder / etc / hostname eingegeben haben (der Speicherort der Datei variiert je nach Distribution, sollte sich aber irgendwo unter / etc befinden).

Wenn Sie die Reihenfolge der Namen ändern, werden Sie möglicherweise feststellen, dass "hostname -f" Antworten wie "localhost" oder "hostname: system error" ausgibt. Das einzige Arrangement, das ich für richtig befunden habe, ist, den vollqualifizierten Domänennamen an die erste Stelle zu setzen.

Ich setze die lokale IPv6-Adresszeile (:: 1) immer auf die gleiche Weise, dh:

::1 etest.mydomain.com etest localhost

Ich weiß, dass einige Distributionen den IPv6-Namen auf so etwas wie ip6-localhost setzen. Ich verwende IPv6 noch nicht wirklich. Daher kann ich keine Kommentare zu den besten Einstellungen für diese Leitung abgeben. Ich kann nur sagen, dass es in einem IPv4-Netzwerk funktioniert, wenn beide Leitungen den gleichen Namen haben.

Angelo Babudro
quelle
0

Keep Slaves hosts file as

127.0.0.1 localhost

Behalten Sie die Master-Host-Datei bei

<private ip> master
<private ip> slave1
<private ip> slave2

100% arbeiten

Puneet
quelle
Bitte klären Sie Ihre Antwort und verwenden Sie die richtige Formatierung. Sie müssen Ihren Namen nicht in Ihre Antwort eintragen.
Lambert