На моем Linux-компьютере, когда я бегу hostname
, он показывает mongodb
, но когда я бегу host mongodb
, он показывает:
mongodb@mongodb:/var/hadoop/hadoop-1.2.1/bin$ host mongodb
Host mongodb not found: 2(SERVFAIL)
Мой /etc/hosts
файл:
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
Мой первый вопрос: поскольку
/etc/hosts
сопоставление с IP на имя хоста, почему этот компьютер не может преобразовать имя хостаmongodb
в IP 192.168.10.10? Вместо этого, когда я бегуhost localhost
, это может быть решено и показывает:localhost has address 127.0.0.1
Мой другой вопрос: Согласно
/etc/hosts
файлу, имя хостаlocalhost
должно было быть разрешено до 192.168.10.10 вместо IP-адреса обратной связи 127.0.0.1. Кто-нибудь может объяснить это мне?
/etc/hosts
не имеет никакого влияния на разрешение DNS при запросе DNS - серверов напрямую, что это то , чтоhost
делает. Однако многие системные инструменты и утилиты используют этоlocalhost
определение, ожидая, что это будет адрес обратной связи, и используют разрешение имен системы (которое проверяет/etc/hosts
перед запросом DNS), чтобы разрешать имена, а не строго обращаться к DNS, которое может не всегда присутствовать.