Як дозволити браузеру віддавати перевагу IPv6 перед IPv4?


16

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

Як я можу це змінити і дозволити браузеру використовувати IPv6 замість IPv4, якщо такий доступний?

Гуглячись навколо, я знайшов підказку, що браузери віддадуть перевагу IPv4 над IPv6 для тунелів 6to4 / teredo, але поки що я не знайшов пояснення, чому або як це змінити.

Відповіді:


10

Адже браузери не віддають перевагу жодному з варіантів, це операційна система. Стандарт визначає пріоритети приблизно так:

  1. ipv6
  2. ipv4
  3. 6to4-Трафік

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

Детальне пояснення gai.confможна знайти на сторінці людини

Це, до речі, також пояснює досвід Джонатана, що тунель SiXXS віддав перевагу над 6to4.


7

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


Я вважаю, це для 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

оновлено : thx до freddyb для того, щоб вказати, що моя попередня відповідь була неправильною: нам потрібно коментувати останній рядок, а не 3-й. Тепер це працює для мене!


6

З недавнього часу Chrome, Firefox, а також перехідні веб-переглядачі насправді уникають IPv6, якщо сайт реагує швидше на IPv4. Змінити цю поведінку неможливо за допомогою налаштування конфігурації.

Сама функція, ймовірно, є розумною для звичайного користувача, але вона майже зводить мене з розуму, що ви не можете її відключити. Підключення до IPv6 сьогодні досить добре, і іноді IPv6 має ряд переваг перед підключенням через IPv4, навіть якщо затримка - через тунелювання - вище. Я переглядав IPv6 протягом багатьох років, і незважаючи на те, що маршрутизація та ефективність IPv6 покращуються, ця проклята функція "злому" браузера повертає мене на десятиліття.


2
Така поведінка рекомендується в RFC 6555. Це звична практика з приблизно 2010 року. І щоб забезпечити гідне користувацьке враження, це абсолютно правильна поведінка, яка використовується за замовчуванням. Якби браузери цього не робили, то більшість веб-сайтів взагалі відмовилися б публікувати записи AAAA. Однак, налаштування налаштувати багато мілісекунд, щоб дати IPv6 було б хорошою ідеєю. Бути в змозі вибрати, що головний старт для кожного сайту було б ще краще. Налаштування для кожного сайту можуть бути додані до веб-переглядача як можливе повернене значення через проксі-скрипт.
kasperd

2

Гаразд, я розглядав це, і це дивно.

  1. Використовувати локальний проксі
    Якщо я встановив Firefox проксі через Squid, що працює на моїй машині, Firefox (а точніше, Squid) підключиться через тунель miredo. Якщо у мене встановлено miredo, але Firefox встановлено на "немає проксі", Firefox спочатку використовує IPV4.

  2. Встановити aiccu
    Якщо я встановлю aiccu і налаштую його за допомогою тунелю (наприклад, SiXXS), то незалежно від моїх налаштувань проксі IPV6 спочатку використовує Firefox.

Можливо, оскільки miredo є для підключення до IPV6-сайтів, він використовується лише тоді, коли IPV4 недоступний, і в цьому випадку спробуйте aiccu.


1

Відповідь проста: Змініть етикетки.

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

Це робить їх еквівалентом ipv6 "ванільного".

Якщо ви залишите їх у коментарях, вони підберуть значення за замовчуванням.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.