Как позволить браузеру отдавать предпочтение IPv6 по сравнению с IPv4?

16

Я установил Miredo, и, кажется, IPv6 запущен и работает. Я могу ping6 хостов и загружать веб-страницы с помощью wget или моего веб-браузера, когда я указываю адреса IPv6, однако всякий раз, когда я указываю имя хоста, которое предлагается как для IPv4, так и для IPv6, браузер выбирает адрес IPv4 для соединения.

Как я могу изменить это и позволить браузеру использовать IPv6 вместо IPv4, если доступно?

Погуглив, я обнаружил намек на то, что браузеры предпочтут IPv4 вместо IPv6 для туннелей 6to4 / teredo, но до сих пор я не нашел объяснения, почему или как это изменить.

Grumbel
источник

Ответы:

10

Это не браузеры, предпочитающие какой-либо вариант, это операционная система. Стандарт определяет приоритеты примерно так:

  1. ipv6
  2. ipv4
  3. 6to4-трафик

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

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

Это, кстати, также объясняет опыт Джонатона, что туннель SiXXS предпочтительнее, чем 6to4.

freddyb
источник
7

Для Firefox и других браузеров, основанных на Mozilla / Gecko, network.dns.disableIPv6настройка about:configдолжна быть, falseесли у вас есть IPv6 (в Ubuntu по умолчанию установлено значение true, потому что в противном случае у многих людей возникают проблемы с ошибочными прокси DNS в домашних маршрутизаторах).

Janc
источник
Я так понимаю, это для Firefox?
Да, извините, обновлю мой ответ.
JanC
2
Только что проверил. Там нет необходимости трогать прив. В настоящее время по умолчанию используется trueFirefox - также для Firefox в Ubuntu.
freddyb
6

Как указывал freddyb, это зависит от конфигурации стандартного системного вызова для разрешения имен хостов, getaddrinfo .

Чтобы решить вашу проблему, замените содержимое /etc/gai.confна следующие строки:

label ::1/128       0
label ::/0          1
label 2002::/16    2
label ::/96         3
label ::ffff:0:0/96 4
label fec0::/10     5
label fc00::/7      6
#label 2001:0::/32   7

обновлено : спасибо freddyb за указание на то, что мой предыдущий ответ был неправильным: нам нужно комментировать последнюю строку, а не 3-ю. Теперь это работает для меня!

pklaus
источник
6

В последнее время Chrome, Firefox, а также производные браузеры фактически избегают IPv6, если сайт реагирует быстрее, чем IPv4. Невозможно изменить это поведение с помощью параметра конфигурации.

Сама функция, вероятно, приемлема для обычного пользователя, но меня почти сводит с ума, что вы не можете ее отключить. В настоящее время возможности подключения по протоколу IPv6 довольно хороши, и иногда IPv6 имеет несколько преимуществ по сравнению с подключением через IPv4, даже если задержка - из-за туннелирования - выше. Я просматривал IPv6 в течение многих лет, и, несмотря на то, что маршрутизация и производительность IPv6 стали намного лучше, эта чертова функция взлома браузера отбрасывает меня назад на десятилетие.

MegaGuest
источник
2
Такое поведение рекомендуется в RFC 6555. Это было обычной практикой примерно с 2010 года. И чтобы обеспечить достойный пользовательский опыт, это абсолютно правильное поведение по умолчанию. Если бы браузеры этого не сделали, то большинство сайтов вообще отказались бы публиковать записи AAAA. Тем не менее, настройка для настройки имеет много миллисекунд, чтобы дать IPv6 было бы хорошей идеей. Быть способным выбрать это преимущество для каждого сайта было бы еще лучше. Настройка для сайта может быть добавлена ​​в браузер как возможное возвращаемое значение из прокси-скрипта.
Касперд
2

Хорошо, я изучал это, и это странно.

  1. Использование локального прокси
    Если я установлю Firefox на прокси через Squid, работающий на моей машине, Firefox (или, точнее, Squid) подключится через туннель Miredo. Если я установил Miredo, но Firefox установлен на «no proxy», Firefox сначала использует IPV4.

  2. Установите aiccu
    Если я установлю aiccu и настрою его с помощью туннеля (например, SiXXS), то независимо от того, что мои настройки прокси-сервера IPV6 в первую очередь используются Firefox.

Может случиться так, что поскольку miredo существует для подключения к сайтам IPV6, он используется только тогда, когда IPV4 недоступен, и в этом случае попробуйте aiccu.

Джонатон
источник
1

Ответ прост: измените ярлыки.

label 2002::/16    1
label 2001:0::/32   1

Это делает их эквивалентными «ванильному» ipv6.

Если вы оставите их закомментированными, они подберут значения по умолчанию.

Горностай
источник