Na moim komputerze z systemem Linux, gdy uruchamiam hostname
, pokazuje mongodb
, ale kiedy uruchamiam host mongodb
, pokazuje:
mongodb@mongodb:/var/hadoop/hadoop-1.2.1/bin$ host mongodb
Host mongodb not found: 2(SERVFAIL)
Mój /etc/hosts
plik:
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
Moje pierwsze pytanie brzmi: skoro
/etc/hosts
mapowanie z adresu IP na nazwę hosta, dlaczego to urządzenie nie może rozpoznać nazwy hostamongodb
na IP 192.168.10.10? Zamiast tego po uruchomieniuhost localhost
można go rozwiązać i wyświetla:localhost has address 127.0.0.1
Moje kolejne pytanie: zgodnie z
/etc/hosts
plikiem nazwa hostalocalhost
powinna zostać rozstrzygnięta na 192.168.10.10 zamiast adresu IP sprzężenia zwrotnego 127.0.0.1. Czy ktoś może mi to wyjaśnić?
/etc/hosts
nie ma żadnego wpływu na rozpoznawanie DNS podczas bezpośredniego wysyłania zapytań do serwerów DNS, co właśniehost
robi. Jednak wiele narzędzi i narzędzi systemowych korzysta zlocalhost
definicji, oczekując, że będzie to adres zwrotny, i używa rozpoznawania nazw systemu (które sprawdzane są/etc/hosts
przed zapytaniem o DNS) do rozpoznawania nazw, a nie tylko do DNS, które nie zawsze mogą być obecne./etc/hosts
pliku dotyczącychlocalhost
. W przeszłości korzystaliśmy z oprogramowania, które wstawiałoby127.0.0.2 localhost
plik hosta, a ten ostatnilocalhost
wpis powodował, że w rzeczywistości powodował on różnego rodzaju problemy z oprogramowaniem i licencjami. Więc zalecam, aby mieć127.0.0.1 localhost
jako pierwszy wpis w/etc/hosts
pliku i upewnić się, że nie ma w nim innychlocalhost
wpisów. Sprawdziłbym również wszelkie rzeczy związane z ipv6./etc/resolv.conf
wskazujesz na serwer DNS działający bezpośrednio na twoim urządzeniu (np. Buforowaniednsmasq
), a ten serwer konsultuje się z lokalnym/etc/hosts
przed zapytaniem serwerów zewnętrznych. Następnie pośrednio takie poleceniahost
zostaną wykonane przez Ciebie/etc/hosts
- jest to rzadka konfiguracja, ale widziałem, że urządzenia są dostarczane, a doświadczenie kogoś korzystającego z takiego systemu może wydawać się sprzeczne z tą odpowiedzią, jeśli ktoś nie jest świadomy tej szczególnej konfiguracji .Oprócz odpowiedzi DopeGhoti, aby przetestować swoje rozwiązanie, w tym
/etc/hosts
pierwszeństwo, możesz użyćgetent hosts <some_hostname>
polecenia.źródło
Mam podobne problemy z plikiem / etc / hosts zawierającym wiele spacji między adresem IP a nazwą hosta, zamiast tego za pomocą TAB. Po zmianie na TAB nazwę hosta można rozwiązać za pomocą polecenia ping.
patrz również na /superuser//a/938366/467479
źródło
hosts
mówi:Fields of the entry are separated by any number of blanks and/or tab characters.
Być może w twoim przypadku istniała jakaś obca postać, która nie może zostać wydrukowana między adresem IP a nazwą hosta?127.0.0.1
następuje 7 spacji, po których następujelocalhost
. Byłbym więc nieco niezdecydowany, aby przypiąć problem konkretnie do wielu znaków spacji i zakończyć używanie znaku tabulacji jako rozwiązania.localhost