Hosts-Datei scheint ignoriert zu werden


18

Ich habe fast frische Ubuntu-Desktop-Box. Das Betriebssystem wurde vor zwei Wochen installiert und von karmischen Repositories aktualisiert. Letzte Woche hatte ich keine Probleme mit DNS. Aber diese Woche hatte sich etwas geändert. Ich bin nicht sicher, was und wann und nicht sicher, ob ich irgendwelche Configs geändert habe.

Jetzt habe ich eine wirklich seltsame Situation. Laut Protokollen sollte die Namensauflösung normal funktionieren.

/ etc / hosts

127.0.0.1   localhost test
127.0.1.1   desktop

/etc/host.conf

order hosts,bind
multi on

/etc/resolv.conf

# Generated by NetworkManager
search search servers obtained via DHCP
nameserver 192.168.0.3

/etc/nsswitch.conf

passwd:         compat
group:          compat
shadow:         compat

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

Aber wenn es so ist, dann nicht.

user @ test ~> ping test

PING localhost (127.0.0.1) 56(84) bytes of data.
[skip]

Ping ist in Ordnung.

user @ test ~> host test

test.mydomain.com has address xx.xxx.161.201

Ich vermute, dass NetworkManager dieses Fehlverhalten verursacht, weiß aber nicht, wo ich anfangen soll, es zu überprüfen. Irgendwelche Gedanken, Vorschläge?

Antworten:


20

Mit dieser Konfiguration arbeiten die meisten Anwendungen problemlos mit Ihrer Eingabe von /etc/hosts.

Sieht sich hostaber nicht um /etc/nsswitch.conf. Dies ist beabsichtigt und kein Zufall, da hostes sich speziell um ein DNS-Suchprogramm handelt. /etc/hostsist nicht DNS, es ist (meistens) das, was wir verwendet haben, bevor wir DNS hatten.

Das gleiche gilt auch für digund nslookup- sie sind auch DNS-spezifisch.


Sie sagen also, das hostDienstprogramm wird nicht verwendet /etc/hosts? Und in meinem Fall gibt es nichts zu reparieren?
z4y4ts

yup, so ziemlich - hier gibt es nichts zu sehen :)
Alnitak

Was ich nicht verstehe, ist, dass host> früher <der "normale" Befehl zur /etc/nsswitch.conf
Namensabfrage war

@Kwaio Ich kann in den ISC-Quellen keine Beweise finden, die hostjemals erbracht wurden
Alnitak

Nun, ich hätte vielleicht ungewöhnliche Distributionsimplementierungen verwendet, meine schlechte.
mveroone

15

Der hostBefehl (zusammen mit digund nslookup) ist Teil der bindDNS-Dienstprogramme. Als DNS-Auflösungsdienstprogramm wird nur die DNS-Auflösung ausgeführt.

Wenn Sie einen Eintrag aus einem beliebigen libnssDatenspeicher abrufen möchten, können Sie das getentProgramm verwenden. Um einen Hosts-Eintrag zu erhalten, verwenden Sie ihn beispielsweise folgendermaßen:

getent hosts google.com

Dies folgt der Auflösung Reihenfolge unter festgelegten hosts:in /etc/nsswitch.confum, die beinhaltet , /etc/hostswenn „Dateien“ als eine der Optionen lisiert wird.


Vielen Dank, dass Sie mich an den getentBefehl erinnert haben .
Emmanuel

2
Ich glaube, dass man heutzutage verwenden sollte, getent ahostsanstatt getent hostsweil getent hostsverwendet gethostbyaddr()oder gethostbyname*()die veraltet sind. Wenn ich es richtig verstanden habe, getent hostsemuliert es, wie alte UNIX C-Programme funktionierten, und getent ahostsemuliert, wie Moderm-Programme funktionieren sollten.
Mikko Rantalainen

0

Bei mir trat dieses Problem aufgrund falscher Dateiberechtigungen auf. Nur root konnte / etc / hosts lesen. Die Datei sollte weltweit lesbar sein.

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.