Überschreiben Einträge in lokalen "Hosts" -Dateien die Namenssuche in Vorwärts- und Rückwärtsrichtung?

16

Wenn ich die folgenden Einträge in einer Hosts-Datei habe:

192.168.100.1    bugs
192.168.100.2    daffy.example.com
192.168.100.3    elmer.example.com.

Werden IP-> Namensauflösungsversuche durch lokale Benutzer (ich gehe davon aus, dass 'gethostbyaddr' oder das Windows-Äquivalent verwendet wird) diese Einträge berücksichtigen? Ist dieses Verhalten konfigurierbar? Wie unterscheidet es sich zwischen den Betriebssystemen? Ist es wichtig, ob die Einträge in der Hostdatei vollständig qualifiziert sind oder nicht?

BEARBEITEN: Als Antwort auf Russell wird auf meinem Test-Linux-System RHEL 4 ausgeführt. Meine /etc/nsswitch.conf enthält die folgende 'hosts'-Zeile:

hosts:      files dns nis

Wenn ich einen meiner Hosts nach Namen anpinge (z. B. Bugs, Daffy), funktioniert die Weiterleitungsauflösung ordnungsgemäß. Wenn ich eine von ihnen nach IP-Adresse verfolge, funktioniert die umgekehrte Suche wie erwartet. Wenn ich sie jedoch per IP pinge, scheint Ping ihre Hostnamen nicht aufzulösen. Mein Verständnis war, dass Linux Ping immer versucht, IPs in Namen aufzulösen, sofern nicht anders angegeben. Warum sollte Traceroute in der Lage sein, Reverse-Lookups in Hosts-Dateien zu verarbeiten, Ping jedoch nicht?

Murali Suriar
quelle

Antworten:

16

Im Allgemeinen wird die hosts-Datei sowohl für Forward- als auch für Reverse-Lookups verwendet. Die Einstellung auf einem Unix-System hängt von der Reihenfolge der Einträge in Ihrer Datei nsswitch.conf ab.

Beispiel: Die folgende Zeile bewirkt, dass die Hosts-Datei DNS überschreibt. Wenn Sie die Einträge rückgängig machen, überschreibt DNS die Hosts-Datei.

Hosts: Dateien DNS

Ich bin mir nicht sicher, ob Sie auf einem Windows-System die gewünschte Einstellung vornehmen können.

Ich habe mir die Quelle für Ping in inetutils-20071127 angeschaut (die auf meinem Ubuntu 9.04-Rechner installierte Version) und die Quelle scheint nur den numerischen Modus zu aktivieren, wenn Sie eine IP-Adresse anstelle eines Hostnamens anpingen:

                if (inet_aton (target, & whereto.sin_addr) == 1) {
                        Hostname = Ziel;
                        if (argc == 1)
                                options | = F_NUMERIC;

Dies könnte erklären, warum Sie beim Pingen Ihres Hosts nach IP-Adresse keine umgekehrte Suche erhalten.

Russell Heilling
quelle
Das war mein Gedanke, aber das scheint nicht der Fall zu sein. Siehe aktualisierte Frage für Details.
Murali Suriar
Ich hatte noch keine Gelegenheit, mir die Quelle anzuschauen. Ein kurzer Blick auf die ldd-Ausgabe zeigt jedoch, dass Ping auf meinem System direkt mit der libresolv-DNS-Auflösungsbibliothek verknüpft ist, was bedeuten könnte, dass es die nsswitch-Datei umgeht und ihre Reverse-Lookups direkt durchführt ...
Russell Heilling,
Bei Verwendung des ISC- hostDienstprogramms kann der Eindruck entstehen, dass das Bearbeiten von / etc / hosts keine Auswirkungen hat. host 10.0.0.1führt eine DNS-Abfrage durch und ignoriert die Hosts-Datei. Dies ermöglicht die Überprüfung des System-Resolvers:perl -MSocket -le '$a=inet_aton(shift); $_=gethostbyaddr $a, AF_INET; print' 10.0.0.1
mivk
8

Ich habe einen Verweis zum Ändern von Registrierungseinträgen gefunden, um die Reihenfolge der Namensauflösung unter Windows zu ändern:

http://forums11.itrc.hp.com/service/forums/questionanswer.do?threadId=963485

Zitat von dort:

Standardmäßig überprüft Windows die Anbieter für die Namensauflösung in der folgenden Reihenfolge:

Lokal, (lokaler NetBT-Namenscache), Hosts, DNS, NetBT (WINS).

Sie möchten, dass die Reihenfolge Hosts, DNS, Local, NetBT lautet.

Im Folgenden haben niedrigere Zahlen eine höhere Priorität.

Die folgenden Registrierungsschlüssel in

HKEY_LOCAL_MACHINE\SYSTEM\CurentControlSet\ServicessTcpip\ServiceProvider

müssen geändert werden.

DnsPriority= 0x3e8 (Decimal: 1000)
HostsPriority= 0x1f4 (Decimal: 500)
LocalPriority= 0x5dc (Decimal: 1500)
NetbtPriority= 0x7d1 (Decimal: 2001)
James F
quelle
Wie bekommen sie solche "Innerworkings" -Informationen?
Pacerier
1

Die /etc/host.confDatei gibt an, in welcher Reihenfolge die IP-Adressen ermittelt werden. Meins enthält standardmäßig Folgendes:

#
# /etc/host.conf
#

order hosts,bind
multi on

Dies bedeutet, dass die Hosts-Datei immer zuerst überprüft wird und dann DNS (Binden).

Wenn nises hier nicht angegeben ist, wird es niemals nachsehen /etc/nsswitch.conf.

Dokumentationslink: http://tldp.org/LDP/nag/node82.html

Sekenre
quelle
Die /etc/host.conf-Methode ist für einige Systeme veraltet, nur nsswitch.conf wird verwendet (wie glibc- und eglibc-basierte Systeme). Diese Versionen von glibc analysieren die '/etc/host.conf' ohne Warnung und verwerfen die 'order'-Zeile.