Verstehen Sie den Hostnamen und / etc / hosts


11

In / etc / hostname habe ich myname.

In / etc / hosts habe ich:

127.0.0.1   localhost.localdomain   localhost myname
::1     localhost.localdomain   localhost myname

Ich habe ein vages Verständnis dafür, was wirklich ein Hostname ist und wofür er verwendet wird.

Diese genaueren Fragen könnten mir helfen, es besser zu verstehen:

  1. Wie lautet mein Hostname im obigen Beispiel? mynameoder etwas anderes? Wenn ich stattdessen myname.domain.comin hätte /etc/hostname, was wäre dann mein richtiger Hostname?

  2. Im Beispiel wird der Befehl hostnamezurückgegeben myname, während der Befehl hostname -fzurückgegeben wird localhost.localdomain. Ich dachte daran, dass dies /etc/hostsnur eine Zuordnung zwischen Namen und IP-Adressen war. Es scheint hier eine andere Funktion zu erfüllen. Was ist ein fqdn und wofür wird es verwendet? Wie wird es abgerufen? Warum ist es localhost.localdomain?

  3. Wenn ich stattdessen myname.domain.comin hätte /etc/hostname, hostname -fwürde ich zurückkehren myname.domain.com. Warum?

  4. Warum endet fqdn in diesen Dateien nicht mit einem Punkt?

  5. Sind hostname -dund dnsmydomaingleichwertig?

  6. In welchem ​​Kontext kann ich meinen Hostnamen ( myname) verwenden und wann muss ich meinen fqdn ( localhost.localdomain) verwenden?

Antworten:


9
  1. /etc/hostnameEnthält den Namen des Computers, der Anwendungen bekannt ist, die lokal ausgeführt werden. /etc/hostsund DNS verknüpfen Namen mit IP-Adressen. mynamekann der IP-Adresse zugeordnet werden, auf die der Computer selbst zugreifen kann, die Zuordnung 127.0.0.1ist jedoch nicht ästhetisch.
  2. Nicht /etc/hosts, sondern /bin/hostnameerfüllt eine andere Funktion mit -f.
  3. Weil /etc/hostskann den gesunden Menschenverstand überschreiben . Bearbeiten Sie es mit Vorsicht und lassen Sie nach temporären Patches und Experimenten keinen Müll dort.
  4. Beide Stile (⋯ .TLD. und ⋯ .TLD ) sind akzeptabel. Ersteres ist eindeutig, während Letzteres allgegenwärtig ist.
  5. Ich weiß nicht was dnsmydomainist, aber unwahrscheinlich. Etwas zu suchen /etc/hostsist technisch gesehen kein „DNS“.
  6. Denken Sie an Punkt 1. Hostname - für Anwendungen, die lokal ausgeführt werden. auch für solche besonderen Netzwerkprotokolle wie SMB (Samba). FQDN (wenn nicht eine Fälschung oder ein Platzhalter localhost.localdomain) - für den Zugriff auf die Maschine von außen. FQDN muss dort auflösbar sein, wo es verwendet wird.

1
Was ist, wenn meine IP dynamisch (DHCP) ist und sich von Zeit zu Zeit ändert? Welche Adresse soll ich wie mynamein / etc / hosts verwenden?
user156516

3

Ich hasse es absolut, wenn mir jemand sagt, ich solle das Handbuch lesen, aber in diesem Fall schauen Sie bitte auf der Manpage nach dem Hostnamen und die meisten, wenn nicht alle Ihre Fragen sollten beantwortet werden. Es ist viel besser geschrieben, als ich möglicherweise erklären könnte.

Einige der Auszüge, die auf Ihre Fragen zutreffen, sind: - Ihr Hostname ist das, was Sie in / etc / hosts sehen. - Der zurückgegebene FQDN basiert auf dem zurückgegebenen Resolver. Daher wird der Wert in / etc / hosts angezeigt, wenn der Resolver zuerst die Hosts-Datei überprüft und dann alle erforderlichen DNS-Abfragen ausführt.

Das, von dem ich nicht glaube, dass es in der Manpage zum Hostnamen angesprochen wird (basierend auf dem erneuten Lesen der Manpage selbst), ist der Grund, warum die Einträge in den Dateien nicht mit einem Punkt enden.

Diese Konvention wird beim Umgang mit DNS-Einträgen verwendet. Der Hostname und die Hostdateien sind eigentlich keine DNS-Einträge. Wenn Sie diese Einträge in bind so konfiguriert haben, dass sie für DNS-Lookups aufgelöst werden, kann die Verwendung eines Punkts ins Spiel kommen (siehe diese gute Ressource: http://www.zytrax.com/books/dns/apa/dot.html) ).

Beachten Sie außerdem, dass nicht alle diese Werte vom System gesendet werden. Wenn Sie also möchten, dass ein anderes System basierend auf dem vollqualifizierten Domänennamen auf dieses zugreift, basiert es auf der Hosts-Datei auf diesem anderen System oder auf fehlenden Host-Einträgen basierend auf den DNS-Suchvorgängen, die das externe System auf dem vollqualifizierten Domänennamen ausführt, damit es wieder in den FQDN aufgelöst werden kann System.


Verwandte, über den letzten Punkt in /etc/hosts: serverfault.com/questions/336056/setting-fqdn-hostname-and-dot
John WH Smith

3

Als Antwort auf

Was ist, wenn meine IP dynamisch (DHCP) ist und sich von Zeit zu Zeit ändert? Welche Adresse soll ich in / etc / hosts als meinen Namen verwenden?

Lassen Sie mich zunächst darauf hinweisen, dass / etc / hosts eine statische Definition der Zuordnung von Name zu Adresse für den Host ist, auf dem es installiert ist, und NUR von diesem Host verwendet wird, um den Namen in eine IP-Adresse umzuwandeln.

Es gibt also zwei Gesichtspunkte zu berücksichtigen - den Host 'myname' und alle anderen.

Verweisen Sie für diesen 'myhost'-Host entweder mit' localhost '(der in / etc / hosts als 127.0.0.1 definiert ist) auf den aktuellen Host oder fügen Sie' myname 'zur Zeile / etc / hosts hinzu, die localhost so definiert, dass' myname ' 'ordnet immer localhost zu. Wie so:

127.0.0.1 localhost myname

Dann spielt es keine Rolle, welche IP-Adresse die SCHNITTSTELLE erhält, Sie haben immer eine funktionierende Adresse (ein zusätzlicher Bonus ist, dass Sie nicht auf die Hardware drücken müssen, um von 'mein Name' zu 'mein Name' zu sprechen).

Damit ANDERE Hosts "myhost" finden können, wenn "myhost" eine dynamische IP-Adresse hat, müssen Sie DNS verwenden, und der DNS-Server muss DHCP-zugewiesene Zuordnungen verarbeiten. (Nun, ok, es gibt andere Lösungen, die ich mir vorstellen kann, aber alles, was mir in den Sinn kommt, passt meiner Meinung nach in die Kategorie "jenseits von Dummheit". Nun, ok, es gibt Dinge, die Sie dem Host antun können, damit die IT dem DNS mitteilt wo es ist, aber das ist eine Frage, die eines völlig anderen Frage / Antwort-Streams hier würdig ist, IMHO)


2

/ etc / hostname und / etc / hosts sind einfach, aber auch nicht so einfach ...

So richten Sie Debian /etc/hostnameund schnell ein/etc/hosts

1) Bearbeiten Sie / etc / hostname .

Es gibt zwei gültige Möglichkeiten, dies einzurichten.

Entweder mach es:

  • machinedh ein einfacher Ein-Wort-Name für diesen Prozessor.
    Zum Beispiel joekönnte ' ' Ihr selbst gewählter Computername sein.
    Beachten Sie, dass hierfür ein Alias ​​in / etc / hosts erforderlich ist, der weiter unten beschrieben wird.

ODER

  • machine.domain.netdh ein vollqualifizierter Domainname (FQDN).
    Zum Beispiel ' joe.xyz.com'.
    (Dies setzt voraus, dass Sie einen DNS-Host-A-Eintrag haben, der von joe.xyz.com auf die IP-Adresse Ihres Joe verweist, dh auf Ihrem Computer mit dem Namen Joe. Normalerweise richten Sie diesen Eintrag dort ein, wo Sie Ihren Domain-Namen gekauft haben. Mehr dazu in ein Moment.)

Sobald / etc / hostname gesetzt ist, dann ist der nächste Schritt besteht darin , die Befehle zu erhalten hostname --all-fqdnund dnsdomainnamean der Arbeit richtig, in dieser Reihenfolge, wie folgt:

2) Bearbeiten Sie / etc / hosts .

Darin haben eine Linie für die dies des Host - FQDN , zB ‚machine.domain.net‘, mit dem Präfix seiner dies IP - Adresse des Geräts (möglicherweise von einer dynamischen IP - Adresse Server) wie folgt aus :

#   IP           FQDN (CANONICAL_HOSTNAME)   ALIASES
#-------------- --------------------------- ------------------------
192.168.1.14    Joe.xyz.com                 joe
  • Beachten Sie zunächst, dass Groß- oder Kleinschreibung hier keine Rolle spielt . Tipp: Wenn wir jedoch einige Kappen aufsetzen, können wir in den nächsten Schritten feststellen, woher die Dinge kommen. So habe ich aktiviert J oe.

  • Beachten Sie außerdem, dass in / etc / hosts ein Alias ​​mit dem Namen 'machine' vorhanden sein muss , damit der einfachehostname (dh / etc / hostname = 'machine') einen FQDN korrekt generiert . Deshalb ist der Alias Joe da. (Übrigens ist es in Ordnung, diesen Alias ​​zu haben, auch wenn Sie ihn nicht verwenden.) Andernfalls wird dieser Alias ​​weder benötigt noch verwendet.

  • Beachten Sie auch, dass 'domain.net' auflösbar sein muss, dh dass im DNS ein A-Eintrag dafür vorhanden sein muss. Dies wird als " auflösbar " bezeichnet (dh vom DNS-Resolver).

3) Installieren Sie nun diese neue Einstellung von / etc / hostname und / etc / hosts im Kernel, indem Sie Folgendes ausführen:

    $ /etc/init.d/hostname.sh       # Or by rebooting

4) Testen Sie den Hostnamen

$ hostname      # Reports the hostname previously read from in /etc/hostname.
joe

ODER

$ hostname
joe.xyz.com

Tipps:

  • Beachten Sie, dass dies nicht der aktuelle / etc / hostname ist, wie wenn Sie ihn jetzt erneut bearbeiten, sondern das, was zuvor vom Skript /etc/init.d/hostname.sh gelesen wurde, möglicherweise als Ergebnis eines Neustarts.

  • Beachten Sie auch, dass das 'j' in Kleinbuchstaben geschrieben ist. Dies deutet darauf hin, dass es von / etc / hostname stammt, nicht von / etc / hosts.

5) FQDN testen

$ hostname --all-fqdn   #reports the FQDN(s) matched in /etc/hosts.
Joe.xyz.com             #  It searches /etc/hosts for the joe in /etc/hostname.
                        #  Notice that the 'J' is uppercase.  
                        #     This suggest it came from /etc/hosts.

6) Testen Sie den DNS-Domänennamen

$ dnsdomainname         #reports the computed DNS doman name    
xyz.com                 #  (i.e. the right most part of the FQDN; 
                        #    the part to the right of the first, left most, dot)
                        #  This is coming from Joe.xyz.com in /hosts, 
                        #    after 'Joe.' is removed.

Dies sollte nun die Einrichtung eines Web- und E-Mail-Servers erleichtern.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.