it-swarm.com.de

Warum löst der Befehl Host keine Einträge in / etc / hosts auf?

Ich habe folgendes /etc/hosts Datei auf einem Ubuntu 12.04 Computer

127.0.0.1 localhost
10.248.27.66 ec2-50-112-220-110.us-west-2.compute.amazonaws.com puppetmaster

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Der Host-Befehl löst den Namen puppetmaster jedoch nicht korrekt auf, während der Telnet-Befehl dies tut

[email protected]:/home/ubuntu# Host puppetmaster
Host puppetmaster not found: 3(NXDOMAIN)

[email protected]:/home/ubuntu# telnet puppetmaster 8140
Trying 10.248.27.66...
Connected to ec2-50-112-220-110.us-west-2.compute.amazonaws.com.
Escape character is '^]'.

Warum löst der Befehl Host keine Einträge in/etc/hosts auf?

26
user784637

Das Programm Host verwendet libresolv, um eine DNS-Abfrage direkt durchzuführen, d. H. Verwendet nicht gethostbyname.

Die meisten Programme rufen beim Versuch, eine Verbindung zu einem anderen Host herzustellen, den Systemaufruf gethostbyname oder eine ähnliche Funktion auf. Diese Funktion folgt der Konfiguration von /etc/nsswitch.conf. Diese Datei enthält eine Zeile, die in Ubuntu 12.04 standardmäßig wie folgt lautet:

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4

dies bedeutet, dass zuerst /etc/hosts verwendet wird und dann auf DNS-Abfragen zurückgegriffen wird.

Wenn Sie auf diese Weise eine Host-Suche durchführen möchten, können Sie dies mit getent hosts Tun. Zum Beispiel:

$ getent hosts serverfault.com
198.252.206.16  serverfault.com

Ich hoffe das hilft.

53
Kvisle

Da das Dienstprogramm Host ausschließlich ein DNS-Suchdienstprogramm ist.

Die meisten Anwendungen verwenden die Bibliotheksaufrufe getaddrinfo oder gethostbyname. Diese Bibliotheken fragen eine Datei mit dem Namen /etc/nsswitch.conf Ab, um die Suchpriorität und die Richtlinien für die Durchführung verschiedener Suchvorgänge zu bestimmen.

Normalerweise enthält /etc/nsswitch.conf Die Zeile

hosts:        files dns

Dies weist ein Programm an, zuerst /etc/hosts Abzufragen und dann DNS abzufragen, wenn dies nicht erfolgreich ist.

Da Hosts ausschließlich DNS-Lookups durchführen, wird bei der Suche nicht nach /etc/hosts Gesucht.

10
Matthew Ife

Sie werden feststellen, dass sich Dig und nslookup genauso verhalten wie Host.

Der Grund dafür ist, dass der Zweck all dieser Befehle darin besteht, DNS-Suchen durchzuführen und nicht in Dateien zu suchen.

Die meisten anderen Programme verwenden den Namensauflöser des Betriebssystems, der /etc/nsswitch.conf und dann (falls erforderlich) /etc/resolv.conf, um zu entscheiden, wie der angeforderte Hostname aufgelöst werden soll. (Dies ist eine Vereinfachung, es gibt andere Optionen.) Das nsswitch.conf Datei hat normalerweise Vorrang vor lokalen Dateien anstelle von DNS.

4
Ladadadada