файл hosts, похоже, игнорируется

18

У меня почти свежая настольная коробка Ubuntu. ОС была установлена ​​две недели назад и обновлена ​​из репозиториев karmic. На прошлой неделе у меня не было проблем с DNS. Но на этой неделе что-то изменилось. Я не уверен, что и когда, и не уверен, изменил ли я какие-либо конфиги.

Так что теперь у меня действительно странная ситуация. По логам разрешение имен должно работать нормально.

/ и т.д. / хосты

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

Но если факт, это не так.

user @ test ~> ping test

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

Пинг в порядке.

user @ test ~> host test

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

Я подозреваю, что NetworkManager может вызвать это неправильное поведение, но не знаю, с чего начать, чтобы проверить это. Есть мысли, предложения?

z4y4ts
источник

Ответы:

20

При такой конфигурации большинство приложений будут успешно работать с вашей записью /etc/hosts.

Однако hostне смотрит на /etc/nsswitch.conf. То есть дизайн, не случайно, так как hostэто специально DNS - LookUp программы. /etc/hostsэто не DNS, это (в основном) то, что мы использовали до того, как у нас был DNS.

То же самое верно и для digи nslookup- они DNS конкретных тоже.

Альнитак
источник
Итак, вы говорите, hostутилита не использует /etc/hosts? И нечего исправить в моем случае?
z4y4ts
да, довольно много - здесь нечего видеть :)
Alnitak
Чего я не понимаю, так это того, что host> раньше был «обычной» командой запроса имен, подчиняясь/etc/nsswitch.conf
mveroone
@ Kwaio Я не могу найти никаких доказательств в источниках ISC, которые hostкогда-либо делали
Альнитак
Ну, я мог бы использовать необычные реализации дистрибутива, тогда мой плохой.
mveroone
15

Команда host(вместе с digи nslookup) является частью bindутилит DNS. Как утилита распознавания DNS, она выполняет только разрешение DNS.

Если вы заинтересованы в извлечении записи из любого libnssхранилища данных на основе -driven, вы можете использовать getentпрограмму. Например, чтобы получить запись hosts, используйте ее так:

getent hosts google.com

Это следует порядку разрешения установить под hosts:в /etc/nsswitch.confв порядке, который включает в себя , /etc/hostsесли «файлы» в lised в качестве одного из вариантов.

tylerl
источник
Спасибо, что напомнили мне getentкоманду.
Эммануэль
2
Я считаю, что в настоящее время нужно использовать, getent ahostsа не getent hostsпотому, что getent hostsиспользует gethostbyaddr()или gethostbyname*()которые устарели. Если я правильно понял, getent hostsэмулирует, как старые UNIX C-программы раньше работали, и getent ahostsэмулирует, как должны работать программы Moderm.
Микко Ранталайнен,
0

Для меня эта проблема возникла из-за неправильных прав доступа к файлам. Только root может читать / etc / hosts. Файл должен быть доступен для чтения всем.


источник