Di mesin linux saya, ketika saya menjalankan hostname
, itu menunjukkan mongodb
, tetapi ketika saya menjalankan host mongodb
, itu menunjukkan:
mongodb@mongodb:/var/hadoop/hadoop-1.2.1/bin$ host mongodb
Host mongodb not found: 2(SERVFAIL)
/etc/hosts
File saya :
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
Pertanyaan pertama saya adalah: Karena
/etc/hosts
pemetaan dari IP ke nama host, mengapa mesin ini tidak dapat menyelesaikan nama hostmongodb
ke IP 192.168.10.10? Sebaliknya, ketika saya menjalankanhost localhost
, itu bisa diselesaikan dan menunjukkan:localhost has address 127.0.0.1
Pertanyaan saya yang lain: Menurut
/etc/hosts
file tersebut, nama hostlocalhost
seharusnya telah diselesaikan ke 192.168.10.10 alih-alih alamat IP loopback 127.0.0.1. Adakah yang bisa menjelaskan hal ini kepada saya?
/etc/hosts
tidak memiliki apa pun berpengaruh pada resolusi DNS ketika query server DNS secara langsung, yang adalah apa yanghost
dilakukannya. Namun, banyak alat-alat sistem dan utilitas menggunakan yanglocalhost
definisi, mengharapkan untuk alamat loopback, dan resolusi nama menggunakan sistem (yang terlihat pada/etc/hosts
sebelum query DNS) ke nama tekad daripada ketat akan DNS, yang mungkin tidak selalu hadir./etc/hosts
file tersebutlocalhost
. Di masa lalu kami telah menggunakan beberapa perangkat lunak yang akan memasukkan a127.0.0.2 localhost
di file host dan dengan itu menjadilocalhost
entri terakhir yang menyebabkannya yang menyebabkan semua jenis masalah perangkat lunak dan lisensi. Jadi rekomendasi saya adalah memiliki127.0.0.1 localhost
entri pertama di/etc/hosts
file Anda dan pastikan tidak adalocalhost
entri lain di file itu. Dan saya juga akan memverifikasi hal-hal ipv6 juga./etc/resolv.conf
poin Anda ke server DNS berjalan langsung pada perangkat Anda (seperti cachingdnsmasq
) dan server tersebut berkonsultasi dengan lokal Anda/etc/hosts
sebelum menanyakan server eksternal. Kemudian, secara tidak langsung, perintah sepertihost
akan dilakukan oleh Anda/etc/hosts
- ini adalah pengaturan yang tidak biasa, tetapi yang saya lihat ada pada perangkat yang dikirim, dan pengalaman seseorang yang menggunakan sistem seperti itu tampaknya dapat bertentangan dengan jawaban ini jika seseorang tidak mengetahui pengaturan khusus ini. .Selain jawaban DopeGhoti, untuk menguji penyelesaian Anda, termasuk
/etc/hosts
prioritas, Anda dapat menggunakangetent hosts <some_hostname>
perintah.sumber
Saya mendapat masalah serupa dengan / etc / hosts yang mengandung banyak spasi antara IP dan hostname, alih-alih menggunakan TAB. Setelah mengubah ke TAB, nama host dapat diatasi dengan ping.
lihat juga di /superuser//a/938366/467479
sumber
hosts
mengatakan:Fields of the entry are separated by any number of blanks and/or tab characters.
Mungkin dalam kasus Anda ada beberapa karakter yang tidak dapat dicetak antara IP dan nama host?127.0.0.1
diikuti oleh 7 spasi diikuti olehlocalhost
. Jadi saya akan sedikit ragu untuk menyematkan masalah khusus pada beberapa karakter spasi dan menyimpulkan menggunakan karakter tab sebagai solusinya.localhost