Чи переглядають записи у локальних файлах "хостів" перегляд і прямого, і зворотного пошуку імен?


16

Якщо я маю такі записи у файлі хостів:

192.168.100.1    bugs
192.168.100.2    daffy.example.com
192.168.100.3    elmer.example.com.

Чи будуть спроби IP-> вирішення імен місцевими утилітами (я вважаю, що використання "gethostbyaddr" або еквівалент Windows) шанували ці записи? Чи можна налаштувати таку поведінку? Як це змінюється між операційними системами? Чи має значення, чи є записи "хостів" повністю кваліфікованими чи ні?

EDIT: У відповідь на Russell, моя тестова система Linux працює із RHEL 4. Мій /etc/nsswitch.conf містить такий рядок 'hosts':

hosts:      files dns nis

Якщо я прошиваю будь-який з своїх хостів по імені (наприклад, помилки, daffy), роздільна здатність переадресації працює правильно. Якщо я відстежую будь-який з них за IP-адресою, функція зворотного пошуку функціонує, як очікувалося. Однак, якщо я запитую їх за допомогою IP-адреси, пінг не видасть імена хостів. Я розумів, що Linux ping завжди намагатиметься вирішити IP-адреси на імена, якщо не буде доручено інше. Чому traceroute зможе обробляти зворотні пошуки у файлах хостів, але ping ні?

Відповіді:


16

Як правило, файл хостів буде використовуватися як для прямого, так і для зворотного пошуку. Перевага в системі Unix це залежатиме від порядку записів у вашому файлі nsswitch.conf.

наприклад, рядок нижче перетворить файл хостів у DNS-файл. Повернення записів призведе до того, що DNS замінить файл хостів.

хости: файли dns

Я не впевнений, чи можете ви налаштуватися на порядок уподобань у системі Windows.

Я переглянув джерело для ping в inetutils-20071127 (версія, встановлена ​​в моєму вікні Ubuntu 9.04), і джерело, здається, увімкнув режим числення лише, якщо ви вводите IP-адресу, а не ім'я хоста:

                if (inet_aton (ціль, і whereto.sin_addr) == 1) {
                        ім'я хоста = ціль;
                        якщо (argc == 1)
                                параметри | = F_NUMERIC;

Це могло б пояснити, чому ви не отримуєте зворотного пошуку, коли пінг-хост проводиться за IP-адресою.


Це була моя думка, але це, мабуть, не так. Детальну інформацію див. У оновленому запитанні.
Муралі Суріар

У мене ще не було можливості подивитися джерело; проте швидкий огляд виводу ldd показує, що в моїй системі пінг пов'язаний безпосередньо з бібліотекою DNS-рішень libresolv DNS, що може означати, що він обходить файл nsswitch і безпосередньо робить його зворотні
пошуки

Під час використання hostутиліти ISC може скластися враження, що редагування / etc / hosts не впливає. host 10.0.0.1виконає запит DNS і проігнорує файл хостів. Це дозволяє перевірити системну perl -MSocket -le '$a=inet_aton(shift); $_=gethostbyaddr $a, AF_INET; print' 10.0.0.1
резолюцію

8

Я знайшов посилання на зміну записів реєстру, щоб змінити порядок вирішення імені в Windows:

http://forums11.itrc.hp.com/service/forums/questionanswer.do?threadId=963485

Цитуючи звідти:

За замовчуванням Windows перевіряє постачальників роздільної здатності імен у такому порядку:

Локальний (кеш локальних імен NetBT), хости, DNS, NetBT (WINS).

Ви хочете, щоб замовлення було Hosts, DNS, Local, NetBT.

Далі далі нижчі числа мають вищий пріоритет.

Наступні ключі реєстру в

HKEY_LOCAL_MACHINE\SYSTEM\CurentControlSet\ServicessTcpip\ServiceProvider

потребують модифікації.

DnsPriority= 0x3e8 (Decimal: 1000)
HostsPriority= 0x1f4 (Decimal: 500)
LocalPriority= 0x5dc (Decimal: 1500)
NetbtPriority= 0x7d1 (Decimal: 2001)

Як вони отримують таку інформацію про "взаємодію"?
Pacerier

1

У /etc/host.confфайлі вказується, який порядок використовується для виявлення IP-адрес. Шахта містить за замовчуванням:

#
# /etc/host.conf
#

order hosts,bind
multi on

Це означає, що файл хостів завжди спочатку перевіряється, а потім DNS (прив'язує).

Якщо nisтут не вказано, воно ніколи не буде розглянуто /etc/nsswitch.conf.

Посилання на документацію: http://tldp.org/LDP/nag/node82.html


Метод /etc/host.conf застарілий для деяких систем, використовується лише nsswitch.conf (як, наприклад, системи на базі glibc та eglibc). Ці версії glibc проаналізують '/etc/host.conf' без попередження та відкинуть рядок "замовлення".
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.