Изменяем ценность протокола IPv4 над IPv6 в Виндовс

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

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

Resolve-DnsName DESKTOP-U97VIM5

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

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

Выведите текущие опции политики префиксов 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.

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

netsh interface ipv6 reset

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

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

reg add HKLMsystemcurrentcontrolsetservicestcpip6parameters /v DisabledComponents /t REG_DWORD /d 0x20

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

reg add hklmsystemcurrentcontrolsetservicestcpip6parameters /v DisabledComponents /t REG_DWORD /d 0x0

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


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *