31

У меня есть подключение по IPv6 через туннель Hurricane Electric. Со дня выпуска IPv6 в этом году многие службы (google.com, facebook.com и т.д.) Включили IPv6 на своих основных доменах. На моей машине с Windows IPv6 предпочтительнее, чем IPv4. Это означает, что всякий раз, когда я посещаю Google, весь трафик проходит через мой туннель к Hurricane Electric, что увеличивает задержку более чем на 100%:

C:\> ping www.google.com

Pinging www.l.google.com [2001:4860:8005::68] with 32 bytes of data:
Reply from 2001:4860:8005::68: time=85ms
Reply from 2001:4860:8005::68: time=84ms
Reply from 2001:4860:8005::68: time=112ms
Reply from 2001:4860:8005::68: time=86ms

Ping statistics for 2001:4860:8005::68:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 84ms, Maximum = 112ms, Average = 91ms


C:\> ping -4 www.google.com

Pinging www.l.google.com [173.194.79.103] with 32 bytes of data:
Reply from 173.194.79.103: bytes=32 time=28ms TTL=48
Reply from 173.194.79.103: bytes=32 time=28ms TTL=48
Reply from 173.194.79.103: bytes=32 time=55ms TTL=46
Reply from 173.194.79.103: bytes=32 time=29ms TTL=46

Ping statistics for 173.194.79.103:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 28ms, Maximum = 55ms, Average = 35ms

Вопрос: Как сделать так, чтобы Windows 7 всегда предпочитала IPv4, если для определенного доменного имени доступны записи как IPv4, так и IPv6?

4 ответа4

40

Решение № 1: Добавьте префиксную политику для предпочтения адресов IPv4 над IPv6

Таблица политик префиксов аналогична таблице маршрутизации, она определяет, какие IP-адреса предпочтительнее при установлении соединения. Обратите внимание, что более высокий приоритет в префиксных политиках представлен значением "приоритетности" лагера, точно противоположным значению "стоимости" таблицы маршрутизации.

Таблица политик префиксов Windows по умолчанию:

C:\>netsh interface ipv6 show prefixpolicies
Querying active state...

Precedence  Label  Prefix
----------  -----  --------------------------------
        50      0  ::1/128
        40      1  ::/0
        30      2  2002::/16
        20      3  ::/96
        10      4  ::ffff:0:0/96
         5      5  2001::/32

Обратите внимание, что адреса IPv6 (::/0) предпочтительнее адресов IPv4 (::/96, ::ffff:0:0/96).

Мы можем создать политику, которая сделает туннель Hurricane Electric IPv6 менее выгодным, чем любой адрес IPv4:

netsh interface ipv6 add prefixpolicy 2001:470::/32 3 6

2001:470::/32 - префикс Hurricane Electric, 3 - это приоритет (очень низкий), а 6 - метка.

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

Если вы адаптируете это решение, вам нужно заменить соответствующий префикс IPv6 вместо моего Hurricane Electric.

Решение № 2: настройка реестра, чтобы Windows всегда предпочитала IPv4, а не IPv6

Это решение является более общим, но более инвазивным и менее совместимым со стандартами. В конце концов, Windows все равно изменит таблицу политик префиксов для вас.

  • Откройте RegEdit, перейдите к HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters
  • Создайте значение реестра DWORD DisabledComponents , установите для него значение 20 (шестнадцатеричное). См. Microsoft KB 929852 для получения дополнительной информации об этом разделе реестра, особенно если DisabledComponents уже существует в вашей системе.
  • Перезагружать.
21

Если вас пугают моноширинный текст и таблицы со странными числами и символами, вы можете сделать это с помощью Microsoft Fix-it, простых установщиков от Microsoft, которые вносят изменения в конфигурацию.

Это исправление взято из базы знаний KB 2533454, в которой объясняется, что вы захотите сделать это, если ваше соединение IPv6 нарушено. Вы должны быть администратором, чтобы запустить исправление; после загрузки щелкните правой кнопкой мыши и выберите «Запуск от имени администратора».

7

Самый простой способ, и это всегда так просто, что мы упускаем их из виду ...

  1. открыть Центр управления сетями и общим доступом.

  2. Там нажмите на Изменить настройки адаптера

  3. В "строке меню" нажмите "Дополнительно". **Заметка..Если вы видите только "Организовать", нажмите на нее, а затем из выпадающего меню выберите «Макет - Строка меню»

  4. После нажатия кнопки "Дополнительно" на предыдущем шаге нажмите "Дополнительные параметры" на этом шаге (на экране появится окно)

  5. То, что отображается, это адаптеры и настройки, и адаптер, который вы используете в данный момент, уже будет выделен в верхней части, а его характерная разбивка ниже (вы должны увидеть привязки для этого адаптера). Выделите любую из привязок в списке, и вы должны заметить, что стрелки справа загораются, используйте эти стрелки, чтобы изменить порядок привязки в соответствии с вашими предпочтениями, а затем выберите ОК снизу.

  6. Обратите внимание, что так же, как при установке протокола, службы или клиента в свойствах вашего адаптера. То же самое относится и здесь. это то, что вы меняете один адаптер, а остальные следуют его примеру. Так, например, если вы выбираете IPV6 для беспроводного адаптера более 4, адаптер локальной сети также изменится.

Это самый простой способ, который я могу придумать, чтобы выполнить эту конкретную задачу, не думая слишком много или не имея слишком много знаний о маршрутизации пакетов во внутренней сети.

1

Укороченная версия

Before September 2012                     After September 2012
Precedence  Prefix                        Precedence  Prefix       
----------  -------------                 ----------  -------------
        50  ::1/128        IPv6 loopback          50  ::1/128        IPv6 loopback
        40  ::/0           Native IPv6            40  ::/0           Native IPv6
        40  fc00::/7       ULAs                   35  ::ffff:0:0/96  IPv4
        40  fec0::/10      site-local             30  2002::/16      6to4
        40  3ffe::/16      6bone                   5  2001::/32      Teredo
        30  2002::/16      6to4                    3  fc00::/7       ULAs
        20  ::/96          IPv4compat              1  fec0::/10      site-local
        10  ::ffff:0:0/96  IPv4                    1  3ffe::/16      6bone
         5  2001::/32      Teredo                  1  ::/96          IPv4compat

Длинная версия

RFC6724 определил изменение в том, как адреса должны быть предпочтительными. С этим изменением IPv6 больше не является предпочтительным адресом почти во всех случаях :(

Этот вопрос, который был задан в июне 2012 года, был "исправлен" RFC с сентября 2012 года. В зависимости от версии Windows, у вас либо была новая политика из коробки (Windows 8.1), либо, скорее всего, она уже была доставлена с помощью обновления (Windows 8, Windows 7, Windows Vista).

Мы здесь, потому что мы хотим использовать IPv6; мы хотим, чтобы это изменение было отменено.

Как поставить обратно

Если вы получаете несколько IP-адресов для одного хоста, ваш компьютер должен решить, какой адрес он будет использовать. Пример рейтинга может быть:

  • IPv6 loopback
  • Родной IPv6
  • Уникальные локальные адреса (ULA), например, fdxx::
  • Локальный сайт, например, fec0
  • 6bone
  • 6to4
  • IPv4compat
  • IPv4
  • Teredo, например, 2001

На вашем компьютере с Windows этот рейтинг называется политикой префиксов.

Политика префиксов

Вы можете просмотреть политику префиксов вашего компьютера, запустив:

>netsh int ipv6 show prefixpolicies

В прежние времена (первоначально определенные RFC 3484), политика префикса была:

Precedence  Prefix         
----------  -------------
        50  ::1/128        IPv6 loopback
        40  ::/0           Native IPv6
        40  fc00::/7       ULAs
        40  fec0::/10      site-local
        40  3ffe::/16      6bone
        30  2002::/16      6to4
        20  ::/96          IPv4compat
        10  ::ffff:0:0/96  IPv4
         5  2001::/32      Teredo

Итак, вы видите, что он почти всегда будет использовать IPv6 (да!):

  1. IPv6 loopback
  2. Собственный IPv6, ULA, локальный сайт, 6one
  3. 6to4
  4. IPv4compat
  5. IPv4
  6. древоточец

Если вы приложили усилия для развертывания IPv6: это просто сработало.

Новая политика префиксов

В 2012 году новый порядок преференций был определен RFC6724. В настоящее время политика префиксов в значительной степени гарантирует, что вы никогда не будете использовать IPv6:

Precedence  Prefix         
----------  -------------
        50  ::1/128        
        40  ::/0           Native IPv6
        35  ::ffff:0:0/96  IPv4
        30  2002::/16      
         5  2001::/32      
         3  fc00::/7       ULAs
         1  fec0::/10      site-local
         1  3ffe::/16      
         1  ::/96          

Вы увидите, что вы никогда не сможете использовать свои уникальные локальные адреса или локальный адрес сайта; это постоянно сломано:

  1. IPv6 loopback
  2. Родной IPv6
  3. IPv4
  4. 6to4
  5. древоточец
  6. ulaş
  7. сайт-местный
  8. 6bone
  9. IPv6compat

Как это исправить?

Мы хотим исправить IPv6 так, чтобы ULA были предпочтительнее IPv4. По крайней мере, мы хотим продвинуть использование ULA (fc00::/7) выше, чем IPv4:

Precedence  Prefix         
----------  -------------
        50  ::1/128        
        40  ::/0           Native IPv6
        37  fc00::/7       ULAs <---------- from 3 up to 37
        35  ::ffff:0:0/96  IPv4
        30  2002::/16      
         5  2001::/32      
         1  fec0::/10      site-local
         1  3ffe::/16      
         1  ::/96          

Что сделано:

>netsh interface ipv6 set prefixpolicy prefix=fc00::/7 precedence=37 label=13 store=active

Это будет держать его активным только до следующей перезагрузки. Чтобы сделать изменение постоянным:

>netsh interface ipv6 set prefixpolicy fc00::/7 37 13

Если я:

  • Мы попытались сгенерировать глобальный префикс ULA для моего /48
  • и выберите идентификатор подсети для моего /64
  • и развертывание ULA на каждой машине на предприятии
  • и обновите DNS-серверы, чтобы они возвращали адреса ULA IPv6 в дополнение к адресам IPv4

самое малое, что может сделать компьютер, - это вежливое обращение с адресом.

Бонус Болтовня

Диапазон fc00::/7 разделен на две части:

  • fd00::/8 - префикс GlobalID генерируется локально
  • fc00::/8 - ???

Никто так и не решил, что fc , и поэтому просто сидит там.

Адреса fd определены как:

fd [40-bit random GlobalID] [16-bit subnet] [64-bits for host assignment] битная для назначения хоста]

Поэтому, если вы сгенерировали a4d7f6dd66 качестве своего криптографически случайного 40-битного GlobalID, это даст вам /48:

  • fda4:d7f5:dd66:: /48
  • fda4:d7f5:dd66:face:: /64 (в подсети face )
  • fda4:d7f5:dd66:face::825 в качестве IP-адреса хоста

SixXS поддерживает общедоступную базу данных префиксов GlobalID уникального локального адреса, чтобы уменьшить вероятность коллизий, например:

  • fdee:e004:2208::/48: Apple Inc - Leopard OSX
  • fdd4:43c8:ba34::/48: TekSavvy - Дэнни Мюррей
  • fdac:afbd:fea1::/48: IBM Rational Build Forge - Крис Фуллер

Но из-за замедления использования и, в первую очередь, сомнительной ценности, SixXS прекратил обслуживание в 2018 году.

Бонус Чтение

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .