Назад | Перейти на главную страницу

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

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

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

/ etc / hosts

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

Но если на самом деле это не так.

пользователь @ test ~> тест ping

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

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

пользователь @ test ~> host test

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

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

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

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

То же самое верно и для dig и nslookup - они тоже специфичны для DNS.

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

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

getent hosts google.com

Это соответствует порядку разрешения, изложенному в hosts: в /etc/nsswitch.conf по порядку, который включает /etc/hosts если "файлы" указаны как одна из опций.

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