Предпочитать DNS-запросы A (IPv4) перед AAAA (IPv6)


44

Обратите внимание, что моя недавно установленная Ubuntu 10.10 всегда выполняет поиск DNS AAAA перед поиском записи A. Можно ли как-то настроить систему для поиска в первую очередь?

(Хотя различные браузеры и другие приложения могут содержать свои собственные средства распознавания, я говорю о тех, что в glibc)


Чтобы уточнить, вы хотите, чтобы присутствовали как IPv4, так и IPv6?
— Белаква

Желательно да. Но так как у меня есть только локальная ссылка на IPv6, довольно бесполезно каждый раз запрашивать, например, запись AAAA на google.com, а потом запрашивать запись A.
— №

Ответы:


53

Это стандарт расстановки приоритетов IPv6 над IPv4, чтобы позволить IP следующего поколения вступить во владение :)

Вы можете изменить это, отредактировав блоки приоритетов в /etc/gai.conf(gai означает getaddrinfoстандартный системный вызов для разрешения имен хостов). Просто закомментируйте строку, как описано в файле:

# Для сайтов, которые предпочитают соединения IPv4, измените последнюю строку на

#precedence :: ffff: 0: 0/96 100

Подробное объяснение gai.confможно найти на странице руководства.


спасибо, ты спас мой день! один из моих серверов продолжает получать результаты ipv6 с DNS-сервера, но мой сервер просто не может работать должным образом с ipv6
— Boon

Привет, для этого параметра требуется sysctl или любая перезагрузка службы или перезагрузка, чтобы вступили в силу? Я нашел ваш ответ полезным, но вы можете отредактировать его, чтобы исправить такие сомнения.
— Марко

Страница man для gai.confвас говорит, что вы должны откомментировать все строки, а не только IPv4, чтобы получить правильное модифицированное поведение. From gai.conf(5): «Еще раз, наличие единственной строки приоритета в файле конфигурации приводит к тому, что таблица по умолчанию не используется». Если вы хотите, чтобы другие строки таблицы по умолчанию продолжали работать, вы также должны откомментировать их.
— Ян Д. Аллен

10

Моя проблема была такой же, у меня были запросы IPV6, сделанные до IPV4, и они тратили ресурсы впустую, поэтому я изменил свой файл /etc/gai.conf, так как freddyb опубликовал, но мой сценарий немного отличается, мой сервер Natted, поэтому IPv4 не будет иметь приоритет над IPv6 только с этой строкой. Решение также закомментирует другие строки на gai.conf, так что это будет выглядеть так

#For sites which prefer IPv4 connections change the last line to
precedence ::ffff:0:0/96 100
...
#    For sites which use site-local IPv4 addresses behind NAT there is
#    the problem that even if IPv4 addresses are preferred they do not
#    have the same scope and are therefore not sorted first.  To change
#    this use only these rules:
#
scopev4 ::ffff:169.254.0.0/112  2
scopev4 ::ffff:127.0.0.0/104    2
scopev4 ::ffff:0.0.0.0/96       14

Таким образом, ваш сервер попробует сначала ipv4, даже если вы Natted!


2
/etc/gai.confФайл в Ubuntu 15.04 «яркий» говорит , что эти три scopev4линии , которые вы предлагаете выше уже по умолчанию. Я сделал только однострочное precedence ::ffff:0:0/96 100изменение, и это работало даже за NAT.
— Ян Д. Аллен

1

Если вы вообще не хотите, чтобы IPv6 был включен, вы можете отключить IPv6 для этого. http://www.webupd8.org/2010/05/how-to-disable-ipv6-in-ubuntu-1004.html

если нет, вы можете попробовать добавить

options single-request

В ваш файл /etc/resolv.conf. (см. http://udrepper.livejournal.com/20948.html для подробностей)


1
Страница руководства для resolv.conf указывает на то, что предлагаемый вами вариант делает именно противоположное: «Этот параметр [...] заставляет glibc выполнять запросы IPv6 и IPv4 последовательно (за счет некоторого замедления процесса разрешения)». - man7.org/linux/man-pages/man5/resolver.5.html
— ndemou

последовательный = сначала один, затем другой - в отличие от параллельного. здесь работает нормально
— cweiske
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.