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

параметры resolv.conf не соблюдаются

Надеялся реализовать директиву «ротации опций» в resolv.conf, чтобы поиск DNS чередовался с серверами имен, перечисленными в этом файле. Насколько я понимаю, в этом суть данной директивы. Он не работает ни в одной системе, которую я пробовал до сих пор. Он всегда использует первую директиву сервера имен в файле и игнорирует остальные, если только не возникает ошибка.

Я тестировал с помощью поддельного скрипта Python DNS, который имитирует DNS-сервер и всегда отвечает с одним и тем же поддельным адресом 192.168.1.1 независимо от запроса. При размещении первым в файле он всегда будет переходить на этот сервер, а при размещении вторым - никогда. Это с директивой "options rotate", включенной в файл.

# cat /etc/resolv.conf
search some.toplevel
options rotate
nameserver 10.0.0.2 <- fake python DNS server
nameserver 10.0.0.3 <- real DNS server

Используется поддельный скрипт pythons DNS-сервера

Также я использовал команду dig и команду host. Я убедился, что они используют библиотеку resolv. Я пробовал это на CentOS 5.6, а также на моем личном ubuntu с совершенно разными версиями связанных пакетов. Я здесь в полном тупике, мне нужна помощь.

Намек на это есть http://docstore.mik.ua/orelly/networking_2ndEd/dns/ch06_01.htm:

Другими словами, экземпляр преобразователя по-прежнему сначала запрашивает первый сервер имен в resolv.conf, но ищет следующее доменное имя, сначала запрашивает второй сервер имен и так далее.

Обратите внимание, что многие программы не могут воспользоваться этим, поскольку большинство программ инициализируют преобразователь, ищут имя и завершают работу. Ротация не влияет на повторяющиеся команды ping, например, потому что каждый процесс ping инициализирует преобразователь, запрашивает первый сервер имен в resolv.conf, а затем завершается перед повторным использованием преобразователя. Каждый последующий вызов команды ping не знает, какой сервер имен использовал предыдущий, или даже этот ping запускался раньше. Но долгоживущие процессы, которые отправляют множество запросов, такие как демон sendmail, могут использовать ротацию.

Поскольку команды «копать» и «хост» выполняют только один запрос, они не могут чередовать свои запросы. Для ротации требуется программа, которая выдает несколько запросов. (Это буквальное вращение, а не случайное распределение. Первый запрос отправляется первому серверу, второй - второму и так далее.)

Обратите внимание, что многие программы не могут воспользоваться этим, поскольку большинство программ инициализируют преобразователь, ищут имя и завершают работу. Ротация не влияет на повторяющиеся команды ping, например, потому что каждый процесс ping инициализирует преобразователь, запрашивает первый сервер имен в resolv.conf, а затем завершается перед повторным использованием преобразователя. Каждый последующий вызов команды ping не знает, какой сервер имен использовал предыдущий, или даже этот ping запускался раньше. Но долгоживущие процессы, которые отправляют множество запросов, такие как демон sendmail, могут использовать ротацию. - О'Рейли, DNS и привязка