Если в файле hosts есть следующие записи:
192.168.100.1 bugs
192.168.100.2 daffy.example.com
192.168.100.3 elmer.example.com.
Будут ли попытки разрешения IP-> имен локальными утилитами (я предполагаю, что с помощью gethostbyaddr или эквивалента Windows) учитывать эти записи? Можно ли настроить это поведение? Как это зависит от операционной системы? Имеет ли значение, являются ли записи файла "hosts" полностью квалифицированными или нет?
РЕДАКТИРОВАТЬ: В ответ Расселу моя тестовая система Linux работает под управлением RHEL 4. Мой /etc/nsswitch.conf содержит следующую строку «hosts»:
hosts: files dns nis
Если я пингую какой-либо из моих хостов по имени (например, bugs, daffy), прямое разрешение работает правильно. Если я трассирую какой-либо из них по IP-адресу, обратный поиск работает должным образом. Однако, если я пингую их по IP, пинг, похоже, не разрешает их имена хостов. Насколько я понимаю, команда ping Linux всегда будет пытаться преобразовать IP-адреса в имена, если не указано иное. Почему traceroute может обрабатывать обратный поиск в файлах hosts, а ping - нет?
Обычно файл hosts используется как для прямого, так и для обратного просмотра. Предпочтение в системе Unix будет зависеть от порядка записей в вашем файле nsswitch.conf.
например строка ниже заставит файл hosts переопределить DNS. При изменении записей DNS переопределит файл hosts.
hosts: files dns
Я не уверен, что вы можете настроить порядок предпочтений в системе Windows.
Я взглянул на источник для ping в inetutils-20071127 (версия, установленная в моем Ubuntu 9.04), и источник, похоже, включает только числовой режим, если вы пинговаете IP-адрес, а не имя хоста:
if (inet_aton(target, &whereto.sin_addr) == 1) { hostname = target; if (argc == 1) options |= F_NUMERIC;
Это может объяснить, почему вы не получаете обратный поиск при пинге своего хоста по IP-адресу.
Я нашел ссылку на изменение записей реестра для изменения порядка разрешения имен в 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)
В /etc/host.conf
файл указывает, какой порядок используется для обнаружения IP-адресов. Моя по умолчанию содержит следующее:
#
# /etc/host.conf
#
order hosts,bind
multi on
Это означает, что сначала всегда проверяется файл hosts, а затем DNS (привязка).
Если nis
здесь не указано, то он никогда не будет смотреть на /etc/nsswitch.conf
.
Ссылка на документацию: http://tldp.org/LDP/nag/node82.html