Я установил Miredo и, кажется, у меня запущен и работает IPv6. Я могу ping6 хостов и загружать веб-страницы с помощью wget или моего веб-браузера, когда я указываю адреса IPv6, однако всякий раз, когда я указываю имя хоста, которое предлагается как для IPv4, так и для IPv6, браузер выбирает адрес IPv4 для соединения.
Как я могу изменить это и позволить браузеру использовать IPv6 вместо IPv4, если он доступен?
Поискивая вокруг, я обнаружил подсказку, что браузеры предпочтут IPv4, а не IPv6 для туннелей 6to4 / teredo, но пока у меня нет не нашел объяснения, почему или как это изменить.
Это не браузеры, предпочитающие ни одну из опций, это - операционная система. Стандарт определяет приоритеты примерно как это:
Можно изменить это путем редактирования блоков маркировки/приоритета в /etc/gai.conf
(gai обозначает getaddrinfo
, стандартный системный вызов разрешения имен хостов).
Подробное объяснение на gai.conf
может быть найден в странице справочника
Это, между прочим, также объясняет опыт Jonathon, что туннель SiXXS был предпочтен по 6to4.
Для Firefox & amp; в других браузерах на основе Mozilla / Gecko значение network.dns.disableIPv6
в about:config
должно быть false
, если у вас есть IPv6 (по умолчанию в Ubuntu он установлен на true, потому что в противном случае у многих людей возникают проблемы с ошибочными прокси DNS в домашних маршрутизаторах ).
Хорошо, я изучал это, и это странно.
1) Используйте локальный прокси.
Если я установлю Firefox на прокси через Squid, работающий на моей машине, Firefox (или, точнее, Squid) подключится через туннель Miredo. Если у меня установлено Miredo, но Firefox установлен на «no proxy», Firefox сначала использует IPV4.
2) Установите aiccu
Если я установлю aiccu и настрою его с туннелем (например, SiXXS), то независимо от того, что мои настройки прокси-сервера IPV6 сначала используются Firefox.
Может случиться так, что поскольку miredo существует для подключения к сайтам IPV6, он используется только тогда, когда IPV4 недоступен, и в этом случае попробуйте aiccu.
Как указал 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-ю. Теперь это работает для меня!
В последнее время Chrome, Firefox, а также производные браузеры фактически избегают IPv6, если сайт реагирует быстрее, чем IPv4. Невозможно изменить это поведение с помощью параметра конфигурации.
Сама функция, вероятно, приемлема для обычного пользователя, но меня почти бесит, что вы не можете ее отключить. В настоящее время возможности подключения по протоколу IPv6 довольно хороши, и иногда IPv6 имеет несколько преимуществ по сравнению с подключением через IPv4, даже если задержка - из-за туннелирования - выше. Я просматривал IPv6 в течение многих лет, и, несмотря на то, что маршрутизация и производительность IPv6 значительно улучшились, эта чертова функция взлома браузера отбрасывает меня назад на десятилетие.
Ответ прост: измените метки.
label 2002::/16 1
label 2001:0::/32 1
Это делает их эквивалентными «ванильному» ipv6.
Если вы оставите их закомментированными, они подберут значения по умолчанию.