In meinem Linux - Rechner, wenn ich laufe hostname
, es zeigt mongodb
, aber wenn ich laufe host mongodb
, es zeigt:
mongodb@mongodb:/var/hadoop/hadoop-1.2.1/bin$ host mongodb
Host mongodb not found: 2(SERVFAIL)
Meine /etc/hosts
Akte:
192.168.10.10 mongodb
192.168.10.10 localhost
127.0.0.1 localhost
#127.0.0.1 localhost
# 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
Meine erste Frage lautet: Da
/etc/hosts
die Zuordnung von IP zu Hostname erfolgt, kann dieser Computer den Hostnamen nichtmongodb
in IP 192.168.10.10 auflösen . Stattdessen kann es beim Ausführenhost localhost
aufgelöst werden und zeigt Folgendes:localhost has address 127.0.0.1
Meine andere Frage: Laut der
/etc/hosts
Datei sollte der Hostnamelocalhost
auf 192.168.10.10 anstelle der Loopback-IP-Adresse 127.0.0.1 aufgelöst worden sein. Kann mir jemand das erklären?
/etc/hosts
hat keine Auswirkung auf die DNS-Auflösung, wenn DNS-Server direkt abgefragt werdenhost
. Viele Systemtools und Dienstprogramme verwenden jedoch dielocalhost
Definition, wobei erwartet wird, dass es sich um eine Loopback-Adresse handelt, und verwenden die Systemnamensauflösung (die/etc/hosts
vor dem Abfragen von DNS ausgeführt wird), um Namen aufzulösen, anstatt ausschließlich zu DNS zu wechseln, das möglicherweise nicht immer vorhanden ist./etc/hosts
Datei bezüglich teilenlocalhost
. In der Vergangenheit hatten wir eine Software verwendet, die ein127.0.0.2 localhost
in die Hosts-Datei einfügte, und mit diesem letztenlocalhost
Eintrag wurden alle Arten von Software- und Lizenzproblemen verursacht. Daher empfehle ich,127.0.0.1 localhost
als ersten Eintrag in Ihrer/etc/hosts
Datei sicherzustellen, dass sichlocalhost
in dieser Datei kein anderer Eintrag befindet. Und ich würde auch alle IPv6-Sachen überprüfen./etc/resolv.conf
auf einen DNS-Server verweisen, der direkt auf Ihrem Gerät ausgeführt wird (wie ein Cachingdnsmasq
), und dieser Server Ihren lokalen Server konsultiert,/etc/hosts
bevor Sie externe Server abfragen. Dann werden Befehle wiehost
diese indirekt von Ihnen ausgeführt/etc/hosts
- dies ist eine ungewöhnliche Einrichtung, aber eine, mit der ich Geräte ausgeliefert habe, und die Erfahrung von jemandem, der ein solches System verwendet, kann mit dieser Antwort in Konflikt stehen, wenn jemand diese besondere Einrichtung nicht kennt .Neben DopeGhoti Antwort, Ihre Lösung, inlcuding die testen
/etc/hosts
Vorrang, können Sie das verwendengetent hosts <some_hostname>
Befehl.quelle
Ich habe ähnliche Probleme mit einer / etc / hosts, die mehrere Leerzeichen zwischen IP und Hostname enthält, anstatt ein TAB zu verwenden. Nach dem Wechsel zu TAB konnte der Hostname durch Ping aufgelöst werden.
Siehe auch unter /superuser//a/938366/467479
quelle
hosts
heißt es:Fields of the entry are separated by any number of blanks and/or tab characters.
Vielleicht gab es in Ihrem Fall ein nicht druckbares Zeichen zwischen der IP und dem Hostnamen?127.0.0.1
7 Leerzeichen gefolgt vonlocalhost
. Ich würde also ein wenig zögern, das Problem spezifisch auf mehrere Leerzeichen zu beschränken und abschließend das Tabulatorzeichen als Lösung zu verwenden.localhost