Windows понизить приоритет ipv6

Если для удаленного хоста доступен и IPv4 и IPv6 адрес, по умолчанию Windows компьютер будет пытаться подключиться к нему по его IPv6 адресу. Т.е. если сервер DNS или протокол mDNS (в локальной сети) вернул, что для хоста есть записи
AAAA
и
A
, то по умолчанию подключение выполняется по IPv6 адресу в AAAA записи. Это может вызвать проблему с некоторыми сетевыми сервисами или старыми приложениями, которые не поддерживают IPv6 (например, не слушают этот сетевой интерфейс). В этом случае можно увеличить приоритет IPv4 протокола над IPv6 в Windows.

Рассмотрим простой пример с локальной сетью без сервера DNS, в которой для разрешения имен используется широковещательные запросы с помощью встроенного протокола Multicast DNS (
mDNS
). Проверим, какие записи и адреса возвращаются mDNS для другого компьютера в этой же LAN:

Resolve-DnsName DESKTOP-U97VIM5

Resolve-DnsName возвращает доступные A и AAAA записи для имени

Здесь видно, что доступно две записи AAAA и A, соответственно с IPv6 и IPv4 адресами. Теперь проверим, какой протокол используется для подключения к удаленному компьютеру по умолчанию. Выполните простой
ping
по имени компьютера. Команда ping должна вернуть IPv6 адрес компьютера вместо IPv4.

Не рекомендуется полностью отключать протокол IPv6 в Windows, т.к. может вызвать проблемы с некоторыми сетевыми службами и/или приложениями.

Выведите текущие настройки политики префиксов IPv6 (определяет приоритет использования различных типов адресов) с помощью команды:

netsh interface ipv6 show prefixpolicies

или

Get-NetPrefixPolicy

Если для удаленного хоста доступны и IPv4 и IPv6 адрес, Windows использует эту таблицу для определения какой адрес будет использоваться для подключения (чем выше значение Precedence, тем больше приоритет политики).

Рассмотрим основные записи префиксов:

  • ::1/128
    – IPv6 loopback интерфейс (имеет самый высокий приоритет)
  • :/0:
    — глобальный адрес IPv6.
  • ::ffff:0:0/96:
    используется для сопоставления IPv4 с IPv6
  • ::/96
    – префикс, соответствующий IPv4 адресу

Чтобы изменить приоритет в политике префиксов, так чтобы IPv4 адреса имели более высокий приоритет, выполните команду:

netsh interface ipv6 set prefix ::/96 60 3
netsh interface ipv6 set prefix ::ffff:0:0/96 55 4

Это повысит приоритет IPv4 протокола над IPv6 без отключения последнего (перезагрузка не требуется). Попробуйте еще раз выполнить пинг компьютера в LAN. Теперь при резолвинге имени возвращается IPv4 адрес.

Проверьте в таблице политики префиксов, что теперь IPv4 протокол имеет более высокий приоритет чем IPv6.

Повысить приоритет IPv4 над IPv6 в Windows

Чтобы сбросить настройки политики префиксов на значения по умолчанию, сбросьте настройки сети для протокола IPv6:

netsh interface ipv6 reset

Также можно выставить более высокий приоритет IPv4 над IPv6 через реестр. Для этого нужно создать в ветке реестра HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters параметр типа REG_DWORD с именем DisabledComponents и значением 0x20. Для применения изменений нужно перезагрузить компьютер.

Можно создать параметр реестра вручную или из командной строки:

reg add HKLM\system\currentcontrolset\services\tcpip6\parameters /v DisabledComponents /t REG_DWORD /d 0x20

Параметр реестра DisabledComponents для ipv6 в windows

Чтобы вернуться к исходному состоянию, когда IPv6 имеет приоритет выше, чем IPv4:

reg add hklm\system\currentcontrolset\services\tcpip6\parameters /v DisabledComponents /t REG_DWORD /d 0x0

Если вам нужно чтобы на всех компьютерах в домене протокол IPv4 имел приоритет над IPv6, можно распространить этот параметр реестра на компьютеры через Group Policy Preferences.

групповая политика: увеличить приоритет ipv4 над ipv6

Анализируя содержимое технологического журнала сервера 1С:Предприятие 8.3 можно обнаружить события проверки соединения с рабочим сервером кластера 1С. В случае, когда сервер проверяет сам себя мы можем заметить, что используется IPv6, несмотря на то, что, возможно, ранее мы отключали использование этого протокола в свойствах сетевого подключения в Windows.

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

13:39.016001-0,CONN,0,process=rphost,OSThread=6916,Txt='Ping direction statistics: address=[::1]:1541,pingTimeout=5000,pingPeriod=1000,period=10157,packetsSent=10,avgResponseTime=0,maxResponseTime=0,packetsTimedOut=0,packetsLost=1,packetsLostAndFound=1'

Теоретически это не должно являться проблемой для 1С, так как петлевой интерфейс с адресом ::1 доступен по протоколу IPv6. Это легко проверить с помощью утилиты ping

Windows-Server-2012-R2-ping-localhost-ipv6

При этом UDP и TCP-прослушиватели в системе создаются серверным процессом 1С не только для IPv4, но и для IPV6:

Windows-Server-2012-R2-netstat-1C

Некоторые специалисты в области поддержки 1С, в качестве дополнительной меры в комплексе мероприятий по достижению стабильности работы серверов 1С, дают рекомендацию по полному отключению протокола IPv6 там, где этот протокол полноценно не используется. В качестве более «мягкого» варианта предлагается изменение приоритезации для протокола IPv6. То есть речь идёт не о полном отключении поддержки IPv6, а именно о понижении приоритета IPv6 над IPv4.

На данный момент времени я объективно не могу сказать, что изменение приоритезации IPv6 конкретно решило для нас ту или иную проблему в работе серверов 1С, так как практически пока не встречался с явными фактами отрицательного влияния системных настроек приоритезации IPv6 на работу 1С. Тем не менее, мы рассмотрим пример того, как выполнить понижение приоритета IPv6.

Понижение приоритета IPv6

В операционных системах Windows начиная с Windows Vista в конфигурации по умолчанию у протокола IPv6 имеется приоритет над протоколом IPv4. В некоторых ситуациях наличие этого приоритета может проявляться даже несмотря на то, что в привычном всем графическом интерфейсе настроек сетевого подключения протокол IPv6 выключен

Windows-Server-2012-R2-disable-ipv6-via-nic-properties

Например, если мы, находясь на хосте, с помощью утилиты ping попробуем проверить доступность хоста по его же имени или с использованием имени localhost, то увидим, что по умолчанию используется проверка доступности по IPv6 адресу

Windows-Server-2012-R2-ping-hostname-via-ipv6

Понизить приоритет протокола IPv6 можно путём установки параметра реестра DisabledComponents, описанного в статье KB929852 — Guidance for configuring IPv6 in Windows for advanced users

По умолчанию в Windows Server 2012 R2 данный параметр реестра отсутствует. Для полного выключения IPv6 через этот параметр реестра его значение нужно задать как 0xFF. Если же нужно оставить возможность работы протокола IPv6, понизив при этом его приоритет относительно IPv4, то значение этого параметра должно быть установлено как 0x20.

Готовый reg-файл для импорта параметра в реестр может выглядеть так:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP6\Parameters]

"DisabledComponents"=dword:00000020

Быстро установить нужный ключ реестра можно командой:

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters" /v DisabledComponents /t REG_DWORD /d 0x20 /f

setup-prioritization-of-IPv4-over-IPv6-in-Windows-Server-2012-R2-via-registry

Посмотрим, каким образом, по умолчанию настроены политики префикса IPv6 на примере Windows Server 2012 R2 (до применения указанного параметра реестра)

netsh interface ipv6 show prefixpolicies

Windows-Server-2012-R2-ipv6-prefix-policies

Столбец Precedence определяет приоритет префикса. Чем больше число, тем выше приоритет

Префикс ::ffff:0:0/96 относится ко всем IPv4 адресам. В списке политик этот префикс представлен с меткой Label 4 и имеет более низкий приоритет по отношению ко всем IPv6 адресам (::/0)

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

Windows-Server-2012-R2-ipv6-prefix-policies

Недостатком описанного способа изменения приоритезации является необходимость перезагрузки системы для вступления изменений в силу. Если мы не хотим действовать через реестр и перезагружать систему, то есть альтернативный вариант повышения приоритета IPv4 над IPv6, который начинает работать сразу в оперативном режиме. Для этого нужно воспользоваться утилитой netsh

Чтобы поднять приоритет адресов IPv4 над всеми прочими, задав ему приоритет, например, 55, достаточно будет выполнить одну команду типа:

netsh interface ipv6 set prefix ::ffff:0:0/96 55 4

Windows-Server-2012-R2-ipv6-set-prefix-policies-for-ipv4

Сделанные изменения начнут действовать в системе сразу. Например, если мы, находясь на хосте, попробуем его пропинговать по его же имени, то увидим, что теперь по умолчанию используется проверка доступности по IPv4 адресу

Windows-Server-2012-R2-ping-hostname-via-ipv4

Восстановление системных настроек по умолчанию

Если приоритет IPv4 повышался через правку параметра реестра, то простое удаление ранее добавленного в реестр параметра DisabledComponents с последующей перезагрузкой сервера приведёт к автоматическому восстановлению стандартных настроек приоритезации. То есть настройки prefixpolicies автоматически вернутся в исходное состояние и в системе опять будет выставлен приоритет IPv6 над IPv4.

Если же для изменения приоритезации мы использовали не правку реестра с перезагрузкой, а вышеописанный метод с использованием прямой правки политик утилитой netsh, то следует учесть один нюанс. В случае такой правки после следующей перезагрузки системы из таблицы приоритезации исчезнут все используемые там по умолчанию префиксы и останется только заданный нами ране префикс:

Windows-Server-2012-R2-ipv6-prefix-policies-with-netsh

В некоторых ситуациях это может стать проблемой при работе в смешанных средах IPv4 и IPv6: TechNet Forums — Windows 7 Networking — How to change default TCP/IP to v4?

Поэтому, если в такой ситуации нам потребуется вернуть исходную конфигурацию, используемую по умолчанию в Windows Server 2012 R2, то можем выполнить удаление созданным нами ранее политик. При их удалении будут автоматически восстановлены настройки по умолчанию. Например, в нашем случае достаточно будет выполнить команду удаления одной ранее добавленной политики:

netsh interface ipv6 delete prefixpolicy ::ffff:0:0/96

Windows-Server-2012-R2-ipv6-delete-prefix-policies

Дополнительные источники информации:

  • Википедия — Зарезервированные адреса IPv6
  • TechNet Articles — How to Disable IPv6 through Group Policy
  • Gilev.ru — Отключение IPv6 для 1С

В операционной системе Windows по умолчанию предпочтение отдается протоколу IPv6, если для удаленного хоста доступны адреса IPv4 и IPv6. Это может вызывать проблемы с приложениями или сетевыми службами, которые не поддерживают IPv6, например, из-за отсутствия прослушивания соответствующего сетевого интерфейса. В этой статье мы разберем, как настроить приоритет IPv4 над IPv6 в Windows, используя Командную строку, Редактор реестра или Групповые политики, сохраняя при этом полную функциональность обоих протоколов.

Приобрести оригинальные ключи активации Windows всегда можно у нас в каталоге от 1099 ₽

Почему Windows выбирает IPv6?

Когда для хоста доступны записи AAAA (IPv6) и A (IPv4), Windows использует таблицу политики префиксов, которая определяет, какой протокол будет приоритетным. Если DNS-сервер или протокол mDNS (в локальной сети) возвращает оба типа адресов, подключение по умолчанию выполняется через IPv6. Это может привести к сбоям в работе старых приложений или служб, не настроенных на работу с IPv6.

Отключать IPv6 полностью не рекомендуется, так как это может нарушить работу системных компонентов и современных приложений, таких как Центр обновления Windows или Магазин Microsoft. Вместо этого можно изменить приоритет протоколов, чтобы IPv4 использовался в первую очередь.

Проверка текущего поведения сети

Чтобы понять, какой протокол используется в вашей сети, выполните проверку в локальной сети, где имена устройств разрешаются через протокол Multicast DNS (mDNS):

1. Откройте Командную строку (нажмите Win+R, введите cmd и нажмите Enter) или найдите в поиске.

2. Выполните команду для проверки доступных записей:


Resolve-DnsName <имя_компьютера>

Например:


Resolve-DnsName DESKTOP-U97VIM5

Команда покажет доступные записи A (IPv4) и AAAA (IPv6).

3. Проверьте, какой адрес используется для подключения:


ping <имя_компьютера>

Если в ответе отображается IPv6-адрес, это подтверждает приоритет IPv6.

Анализ текущей политики префиксов

Таблица политики префиксов определяет порядок использования адресов. Для её просмотра выполните одну из следующих команд в Командной строке с правами администратора (щелкните правой кнопкой мыши на ПускКомандная строка (администратор)):


netsh interface ipv6 show prefixpolicies

или


Get-NetPrefixPolicy

Основные префиксы в таблице:

::1/128: Локальный интерфейс IPv6 (наивысший приоритет).

::/0: Глобальный адрес IPv6.

::ffff:0:0/96: Используется для сопоставления IPv4 с IPv6.

::/96: Соответствует адресам IPv4.

Чем выше значение параметра Precedence, тем выше приоритет протокола при выборе адреса для подключения.

Способ 1: Настройка приоритета через Командную строку

Для повышения приоритета IPv4 над IPv6 без отключения последнего выполните следующие шаги:

1. Откройте Командную строку с правами администратора.

2. Введите команды для изменения приоритета префиксов:


netsh interface ipv6 set prefix ::/96 60 3
netsh interface ipv6 set prefix ::ffff:0:0/96 55 4

3. Проверьте обновленную таблицу:


netsh interface ipv6 show prefixpolicies

4. Выполните проверку подключения:


ping <имя_компьютера>

Теперь в ответе должен отображаться IPv4-адрес.

Эти изменения применяются мгновенно, перезагрузка не требуется.

Способ 2: Настройка через Редактор реестра

Для более постоянной настройки или автоматизации можно изменить приоритет через Редактор реестра:

1. Нажмите Win+R, введите regedit и нажмите Enter, чтобы открыть Редактор реестра.

2. Перейдите в раздел:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters

3. Щелкните правой кнопкой мыши в правой панели, выберите СоздатьПараметр DWORD (32-бит).

4. Назовите параметр DisabledComponents и установите его значение в 0x20 (в шестнадцатеричном формате).

5. Нажмите ОК и перезагрузите компьютер.

Альтернативно, выполните команду в Командной строке с правами администратора:


reg add HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters /v DisabledComponents /t REG_DWORD /d 0x20

Для восстановления приоритета IPv6 установите значение 0x0:


reg add HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters /v DisabledComponents /t REG_DWORD /d 0x0

Способ 3: Настройка через Групповые политики

В доменной среде приоритет IPv4 можно распространить на все компьютеры с помощью Групповых политик:

1. Откройте Управление групповыми политиками (Win+R, введите gpedit.msc).

2. Создайте или отредактируйте объект групповой политики (GPO).

3. Перейдите в раздел:

Конфигурация компьютера → Параметры → Параметры Windows → Реестр

4. Создайте новый элемент реестра:

– Путь: HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters

– Имя параметра: DisabledComponents

– Тип: REG_DWORD

– Значение: 0x20

5. Примените политику и дождитесь её распространения.

Сброс настроек

Для возврата к стандартным настройкам политики префиксов выполните:


netsh interface ipv6 reset

Эта команда сбрасывает конфигурацию IPv6. После выполнения может потребоваться перезагрузка.

Проверка результата

После применения одного из способов:

– Выполните команду ping <имя_компьютера> и убедитесь, что возвращается IPv4-адрес.

– Проверьте таблицу политики префиксов:


netsh interface ipv6 show prefixpolicies

– Убедитесь, что приложения, ранее сталкивавшиеся с проблемами подключения, теперь работают корректно.

Настройка приоритета IPv4 над IPv6 в Windows решает проблемы с подключением для приложений и служб, не поддерживающих IPv6, без необходимости его отключения. Использование Командной строки — самый быстрый способ, не требующий перезагрузки. Для автоматизации в доменной среде подойдут Групповые политики, а для локальных изменений — Редактор реестра. Все методы сохраняют совместимость с современными сетевыми стандартами, обеспечивая стабильность и гибкость.

Categories:

  • IT
  • Компьютеры
  • Cancel

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

С одной стороны понимаю, что ходить в инет через туннели (например, через тот же Hurricane Electric) — не самый правильный способ. До того же вконтактега пинг по IPv4 — 136 мс, а через HE-туннель — 177 мс.

С другой стороны надо было проверить полноценную работу IPv6 через 6to4 туннель. Оказалось, что через 6to4 IPv6-трафик идёт только до IPv6-only ресурсов. Если у ресурса есть IPv4-адрес, то винда отдаёт приоритет ему.

Гугл навёл на обсуждение этого вопроса — IPv4 vs IPv6 priority in Windows 7. Итак, существует два способа назначения приоритетов выбора протокола в Win7:

  • netsh — netsh interface ipv6 show prefixpolicies, например.
  • Microsoft KB 929852 — HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\DisabledComponents

Не совсем правда понял, как работает первый способ:

C:\Windows\system32>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

При этом 6to4 ходит только до IPv6-only. Если прибиваем 30ый приоритет, то 6to4 начинает ходить везде.

А пока решил снизить приоритет своего HE-туннеля. До лучших времён, до нативного IPv6. Или до тех пор, пока не прикручу MRTG для тестов.

UPD: А собственно вот — Source and Destination Address Selection for IPv6

IPv6 is an integral part of Windows. It’s tempting to disable IPv6 on Windows especially on home networks. This can have a variety of side effects that might cause applications and processes to misbehave. Microsoft explicitly does not recommend you disable IPv6. The best way to ensure your Windows computer uses IPv4 is to simply change the IPv6 prefix policy precedence. 

There are two ways to do this:

  1. Create a registry entry to prefer IPv4 over IPv6.
  2. Directly modify the IPv6 prefix policies to prefer IPv4 over IPv6.

Method 1: Registry Entry

You will need to reboot for the change to take effect.

  • Login to your computer as an administrator
  • Run the registry editor (regedt32.exe)
  • Add a registry key per the screenshot below then reboot for the change to take effect. To undo this change, simply delete the registry entry, then reboot again.

    Location: HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters
    Key: DisabledComponents
    Type: REG_DWORD
    Value: 0x20

    Prefer IPv5 over IPv6 DisabledComponents

Method 2: Modify IPv6 Prefix Policies

This is slightly more complicated but you don’t need to reboot your computer for the changes to take effect.

  • Login to your computer.
  • Open an elevated command prompt and type:
netsh interface ipv6 show prefixpolicies

You should see the following output:

Precedence  Label  Prefix
---------- ----- --------------------------------
50 0 ::1/128
40 1 ::/0
35      4  ::ffff:0:0/96
30 2 2002::/16
5 5 2001::/32
3 13 fc00::/7
1 11 fec0::/10
1 12 3ffe::/16
1 3 ::/96

The first line with a precedence of 50 is the IPv6 localhost address. The second line with a precedence of 40 is all (global) IPv6 unicast addresses. The third with a precedence of 35 is all IPv4 to IPv6 mapped addresses. A complete list of IPv6 prefixes can be found here.

  • To change the precedence you need to reorder the precedence of all prefix policies to ensure the IPv4 to IPv6 mapped addresses has the highest priority. All prefix policies must be entered. The higher the prefix value the more preferred it is. Hence, type or cut and paste the following at the elevated command prompt:
netsh interface ipv6 set prefixpolicy ::ffff:0:0/96 50 0
netsh interface ipv6 set prefixpolicy ::1/128 40 1
netsh interface ipv6 set prefixpolicy ::/0 30 2
netsh interface ipv6 set prefixpolicy 2002::/16 20 3
netsh interface ipv6 set prefixpolicy 2001::/32 5 5
netsh interface ipv6 set prefixpolicy fc00::/7 3 13
netsh interface ipv6 set prefixpolicy fec0::/10 1 11
netsh interface ipv6 set prefixpolicy 3ffe::/16 1 12
netsh interface ipv6 set prefixpolicy ::/96 1 4
  • To confirm the changes have taken effect type the following:
netsh interface ipv6 show prefixpolicies

You will now see the precendence list has changed as follows:

Precedence  Label  Prefix
---------- ----- --------------------------------
50      0  ::ffff:0:0/96
40 1 ::1/128
30 2 ::/0
20 3 2002::/16
5 5 2001::/32
3 13 fc00::/7
1 11 fec0::/10
1 12 3ffe::/16
         1      4  ::/96

Now when you ping a host (for example), the IPv4 address (i.e. 127.0.0.1) will be used in preference to the IPv6 address (i.e. ::1). For example:

C:\>ping localhost

Pinging WORKSTATION [127.0.0.1] with 32 bytes of data:
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128

To undo this change simply reset the precedence as follows:

netsh interface ipv6 reset

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Активация office 2013 на windows 11
  • Как отключить проверку обновлений windows 10 автоматическую
  • C windows system32 dxva2 dll
  • Opencv cuda windows install
  • Что делать если пишет диспетчер задач отключен администратором на windows 10