Wie wird der FQDN ermittelt?

7

Ich benutze Ubuntu und verwalte meine Hosts mit Puppet. Bis vor ein oder zwei Computern haben sich meine Hosts in hostname.backend.example.com aufgelöst. Die letzten beiden Computer werden in hostname.staging.internal aufgelöst. Ich bin etwas ratlos darüber, wie diese Namen entstanden sind.

# /etc/resolv.conf
nameserver 173.203.4.8
nameserver 173.203.4.9

domain backend.example.com

Und

# /etc/hosts
10.182.230.38  web01.staging.internal web01
127.0.0.1     localhost localhost.localdomain

/ bin / hostname antwortet wie folgt:

# hostname -a
web01

# hostname -A
108-166-97-91.static.cloud-ips.com web01.staging.internal 

# hostname -I
108.166.97.91 10.182.230.38

Es gibt einen DNS-Eintrag, der 108.166.97.91 web01.backend.example.com zuordnet. Warum, wo und wie hat der Hostname web01.staging.internal und nicht den öffentlichen DNS-Eintrag abgerufen?

François Beausoleil
quelle

Antworten:

16

Der hostnameBefehl gibt Ergebnisse von DNS und zurück /etc/hosts.

hostnameist gleichbedeutend mit uname -nund ist der tatsächliche "Hostname" oder "Knotenname" der Box.
Alle anderen hostnameArgumente verwenden diesen Knotennamen, um Informationen nachzuschlagen.

Bevor ich fortfahre, sollte ich das /etc/hostsDateiformat erläutern .
Das erste Feld ist ziemlich offensichtlich. Es ist die IP-Adresse, in die alle Hostnamen in der Leitung aufgelöst werden sollen. Das zweite Feld ist der primäre Hostname für diese IP. Die restlichen Felder sind Aliase.

Wenn Sie also ausführen hostname -f, wird zuerst versucht, die IP für Ihren Knotennamen aufzulösen. Je nachdem, wie Sie den hosts:Eintrag in /etc/nsswitch.confdieser Methode konfiguriert haben, variiert er.

  • Wenn Sie es für die Verwendung /etc/resolv.confvon DNS konfiguriert haben, werden die darin konfigurierten Suchdomänen verwendet, bis es eine IP von DNS zurückerhält.
  • Wenn Sie es für die Verwendung von Dateien konfiguriert haben, sucht es in /etc/hostseiner Zeile, in der entweder der primäre Hostname oder der Aliasname Ihr aktueller Knotenname ( uname -n) ist, und gibt dann den primären Hostnamen in dieser Zeile zurück.

Sobald es die IP hat, versucht es eine umgekehrte Suche auf dieser IP. Wieder wird DNS für diese und Ihre Hosts-Datei basierend auf Ihrer verwendet nsswitch.conf. Wenn Sie Ihre Hosts-Datei verwenden, wird der primäre Eintrag zurückgegeben (dies ist das erste Feld nach der IP in der Datei).

hostname -afunktioniert nur mit der Hosts-Datei, da eine umgekehrte Suche in DNS nur 1 Ergebnis liefert. Mit der Hosts-Datei werden die Alises in der übereinstimmenden Zeile zurückgegeben (dies ist alles nach dem ersten Eintrag, dem primären Hostnamen).

Beispiele
Wenn Ihr Knotenname "foobar" ist und Sie einen Eintrag /etc/hostswie diesen haben:

127.0.0.1 foobar.example.com foobar localhost.localdomain localhost

Dann erhalten Sie die folgenden Befehlsergebnisse:

# hostname
foobar
# uname -n
foobar

# hostname -f
foobar.example.com

# hostname -a
foobar localhost.localdomain localhost
Patrick
quelle
Hervorragende Antwort. In meinem Fall hatte ich den Hostnamen als einen der Alias ​​in /etc/hosts. hostnamewürde den Hostnamen als einen der Aliase finden und den ersten Eintrag in der Zeile für meinen Host zurückgeben. Vielen Dank!
François Beausoleil
Wenn ja hosts: files dns, wird es nur / etc / hosts verwenden oder wird es zuerst dort und dann DNS versuchen?
Geoffrey Wiseman