Файл хостів, здається, ігнорується


18

У мене майже свіжа скринька для робочого столу Ubuntu. ОС була встановлена ​​два тижні тому та оновлена ​​з кармічних сховищ. Минулого тижня у мене не було проблем із 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 localhost (127.0.0.1) 56(84) bytes of data.
[skip]

Пінгінг - це нормально.

user @ test ~> тест хоста

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

Я підозрюю, що NetworkManager може спричинити цю поведінку, але не знаю, з чого почати перевіряти. Будь-які думки, пропозиції?

Відповіді:


20

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

Однак hostне дивиться /etc/nsswitch.conf. Це не дизайн, а не випадково, оскільки hostце спеціально програма пошуку DNS. /etc/hostsце не DNS, це (в основному) те, що ми використовували до того, як у нас був DNS.

Те саме стосується digі nslookup- вони також специфічні для DNS.


Отже, ви кажете, hostутиліта не використовує /etc/hosts? І в моєму випадку нічого не можна виправити?
z4y4ts

так, майже - тут нічого не бачити :)
Альнітак

Що я не отримую, це те, що host> раніше <було "звичайною" командою запиту імен, підкоряючись/etc/nsswitch.conf
mveroone

@Kwaio Я не можу знайти жодних доказів у джерелах ISC, які hostколи-небудь
траплялися

Добре, що я, можливо, використовував нереальні реалізації дистрибутиву, значить, мій поганий.
mveroone

15

hostКоманди (поряд з digі nslookup) є частиною bindDNS утилітами. Як утиліта DNS-рішення, вона робить роздільну здатність DNS самостійно.

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

getent hosts google.com

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


Дякую, що нагадали мені getentкоманду.
Еммануїл

2
Я вважаю, що нині слід використовувати getent ahostsзамість того, getent hostsщо getent hostsвикористовує gethostbyaddr()або gethostbyname*()які є застарілими. Якщо я правильно зрозумів, getent hostsпідраховує, як працювали старі програми UNIX C, і getent ahostsемулює спосіб роботи програм модерму.
Мікко Ранталайнен

0

Для мене ця проблема виникла через неправильні дозволи файлів. Лише корінь міг читати / etc / hosts. Файл повинен бути читаним у всьому світі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.