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


31

Я маю підключення 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 доступні для конкретного доменного імені?


4
Правильний спосіб цього для більшості операційних систем - це налаштування політики префікса - для Windows, через netsh interface ipv6 show prefixpolicy. Я можу опублікувати більш детальну відповідь завтра.
grawity

1
@grawity Це повинно бути prefixpolicies, ні prefixpolicy.
Пітер Вуд

@PeterWood Можливо, буде відрізнятися від XP, значить.
grawity

1
@grawity Так, я перебуваю в Windows 7, і дзвінки дозволяють netsh interface ipv6 showвикористовувати в тому числі show prefixpolicies - Shows prefix policy entries, але ні prefixpolicy. Ура.
Пітер Вуд

Відповіді:


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 від ISP, він матиме перевагу над IPv4.

Якщо ви адаптуєте це рішення, вам потрібно замінити відповідний префікс IPv6 замість мого урагана Electric.

Рішення №2: Налаштуйте реєстр, щоб Windows завжди віддав перевагу IPv4 перед IPv6

Це рішення більш загальне, але більш інвазивне та менш відповідне стандартам. Зрештою, Windows все одно змінить таблицю політики префіксів для вас.

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

Команди PowerShell для рішення №2: Get-ItemProperty -Path hklm:SYSTEM\CurrentControlSet\Services\tcpip6\Parameters -Name "DisabledComponents" | select -exp DisabledComponents Set-Itemproperty -Path hklm:SYSTEM\CurrentControlSet\Services\tcpip6\Parameters -Name "DisabledComponents" -value 32
Сергій Волчков

Це промінь, що ви не можете встановити цей параметр за з'єднання (наприклад, у мене є помилковий маршрутизатор), але лише глобально або максимум на адаптер.
mirh

23

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

Вони виправлені з KB 2533454 , де пояснюється, що ви б хотіли це зробити, якщо ваш IPv6 зв’язок порушений. Вам потрібно бути адміністратором, щоб запустити його виправлення; після завантаження клацніть правою кнопкою миші та виберіть Запустити як адміністратор.


+1 з кнопковим способом увімкнути / відключити це справді чудово, ура
ashes999

7

Найпростіший спосіб, і вони завжди такі прості, що ми їх не помічаємо ...

  1. відкрити Центр мережі та обміну.

  2. Натисніть кнопку Змінити налаштування адаптера

  3. На панелі меню натисніть кнопку Додатково. ** Примітка. Якщо ви бачите лише "Організувати", натисніть це, а потім зі спадного меню виберіть "Макет - панель меню"

  4. Після натискання на розширений на попередньому кроці натисніть "Розширені налаштування" на цьому кроці (на екрані відкриється вікно)

  5. Відображаються адаптери та налаштування, і адаптер, який ви зараз використовуєте, вже буде виділено у верхній половині, а його представницька розбивка внизу (ви повинні побачити прив'язки для цього адаптера). Виділіть будь-яку з прив’язок у списку, і ви повинні помітити стрілки вправо, загорівшись, скористайтеся цими стрілками, щоб змінити порядок зв’язування на ваш уподобання, а потім виберіть "Ок" знизу.

  6. Зауважте, як і під час встановлення протоколу, послуги чи клієнта у властивості адаптера. Те саме стосується і тут. що полягає в тому, що ви міняєте один адаптер, а решта слідуєте за відповідним чином. Так, наприклад, якщо ви вибираєте IPV6 віддаєте перевагу понад 4 на своєму бездротовому адаптері, ваш адаптер LAN також змінюється.

Це найпростіший спосіб мені придумати виконання цієї конкретної задачі, не задумуючись надто багато, або маючи занадто багато знань про маршрутизацію пакетів у міжмережевій мережі.


2
Коли я заходжу туди, IPv4 вже вказаний першим у обох категоріях. Однак, коли я переходжу до властивостей мого мережного адаптера, IPv6 вказується першим.
kojow7

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 петля
  • Рідний IPv6
  • Унікальні локальні адреси (ULA), наприклад, fdxx ::
  • Місцевий веб-сайт, наприклад, fec0
  • 6 кістка
  • 6то4
  • IPv4compat
  • IPv4
  • Тередо, наприклад, 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 петля
  2. Рідні IPv6, ULA, локальний сайт, 6он
  3. 6то4
  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 петля
  2. Рідний IPv6
  3. IPv4
  4. 6то4
  5. Тередо
  6. ULAs
  7. сайт-локальний
  8. 6 кістка
  9. IPv6compat

Як це виправити?

Ми хочемо виправити IPv6 таким чином, щоб ULAs віддав перевагу перед IPv4. Принаймні, ми хочемо просунути використання ULAs ( 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 для повернення IPla6 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як криптовалюту випадковий 40-розрядний глобальний ID , ви отримаєте ваш / 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 році.

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


fc00::/7Мережа дійсно розділена на дві частини. fc00::/8Мережа Зарезервовано для майбутнього глобального органу для призначення з, і не може в даний час використовується, але fd00::/8доступний для локального завдання, але це вимагає , щоб наступні 40 біт , які будуть обрані випадковим чином .
Рон Моупін

Насправді ми тут, тому що ми (і ОП) НЕ ХОЧУМИ використовувати IPv6, і вона все ще активна при зворотному циклі, хоча я відключила кожен екземпляр IPv6, який я міг знайти!
AaA

0

Є більш простий метод, який працює для мене. Я просто змінив показник інтерфейсу #, щоб визначити його пріоритет. Раніше я використовував цей метод, щоб змінити пріоритет мережевих адаптерів (пріоритет бездротового NIC, другий пріоритет NIC), але я виявив, що він працює і на TCP / IPv4 та TCP / IPv6. У цьому випадку я змінив метрику інтерфейсу TCP / IPv4 з Автоматична на 5, а метрику інтерфейсу TCP / IPv6 з Автоматичної на 10. Чим менший номер метрики, тим вище його пріоритет. Потім перезавантажте комп'ютер. Тому тепер, коли я використовую ім'я хоста, він відповість з IPv4 замість Ipv6.

Ось більш детальна інструкція

https://www.windowscentral.com/how-change-priority-order-network-adapters-windows-10

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