2012-06-13 23:34:40 +0000 2012-06-13 23:34:40 +0000
33
33

Приоритет IPv4 против IPv6 в Windows 7

У меня есть IPv6-соединение через туннель “Ураган Электрик”. Со дня 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 записи доступны для определенного доменного имени?

Ответы (5)

45
45
45
2012-06-14 18:15:03 +0000

Решение ## #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 one.

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

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

  • Откройте RegEdit, перейдите к HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters
  • Создайте значение реестра DisabledComponents DWORD, установите его значение на 20 (шестнадцатеричное). См. раздел Microsoft KB 929852 для получения более подробной информации об этом ключе реестра, особенно если DisabledComponents уже существует в вашей системе.
  • Перезагрузка.
23
23
23
2014-05-15 12:13:20 +0000

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

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

7
7
7
2014-05-15 08:58:51 +0000

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

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

  2. Нажмите Изменить параметры адаптера

  3. В “Панели меню” нажмите на кнопку Дополнительно. **Note… Если вы видите только “Упорядочить”, нажмите на нее, а затем из выпадающего меню выберите “Макет - Панель меню”

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

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

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

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

2
2
2
2018-10-31 02:38:41 +0000

Короткая версия

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
  • Нативный IPv6
  • Уникальные локальные адреса (ULA), например, fdxx::
  • Сайт-локальный, например. fec0
  • 6bone
  • 6to4
  • IPv4compat
  • IPv4
  • Teredo, например, 2001

На вашей машине Windows этот рейтинг называется prefix policy.

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

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

>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 в цикле
  2. Отрицательный IPv6, ULA, site-local, 6one
  3. 6to4
  4. IPv4-компат
  5. IPv4
  6. Teredo

Если вы прошли через усилия по развертыванию 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
  2. Встроенный IPv6
  3. IPv4
  4. 6to4
  5. Тередо
  6. УЛЬСЫ
  7. сайт-локал 0х2 и 8. 6 кость 0х2 и 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 серверы для возврата IPv6 адресов ULA в дополнение к IPv4 адресам

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

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

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

  • fd00::/8 - Префикс GlobalID, сгенерированный локально
  • fc00::/8 - ????

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

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

fd [40-bit random GlobalID] [16-bit subnet] [64-bits for host assignment]

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

  • fda4:d7f5:dd66:: /48
  • fda4:d7f5:dd66:face:: /64 (в подсети face)
  • fda4:d7f5:dd66:face::825 как IP-адрес хоста SixXS поддерживает общедоступную базу данных уникальных локальных адресных префиксов GlobalID для того, чтобы уменьшить вероятность коллизий, д. g.:

  • fdee:e004:2208::/48: Apple Inc - Leopard OSX

  • fdd4:43c8:ba34::/48: TekSavvy - Danny Murray

  • fdac:afbd:fea1::/48: IBM Rational Build Forge - Chris Fuller

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

Бонусное чтение

0
0
0
2019-03-27 20:53:05 +0000

Есть более простой метод, который работает на меня. Я только что изменил метрику интерфейса # для определения его приоритета. В прошлом я использовал этот метод для изменения приоритета сетевых адаптеров (приоритет беспроводных сетевых адаптеров - первый, приоритет сетевых адаптеров LAN - второй), но я обнаружил, что он работает и на TCP/IPv4, и на TCP/IPv6. В данном случае я изменил метрику интерфейса TCP/IPv4 с Automatic на 5, а метрику интерфейса TCP/IPv6 - с Automatic на 10. Чем меньше номер метрики, тем выше ее приоритет. Затем перезагрузите компьютер. Теперь всякий раз, когда я пингую с помощью имени хоста, он будет отвечать с IPv4, а не с Ipv6.

Вот более подробная инструкция https://www.windowscentral.com/how-change-priority-order-network-adapters-windows-10

Похожие вопросы

3
3
28
13
8