Про отключение (включение) протокола IPv6 в Windows

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

На самом деле, Microsoft не рекомендует полностью отключать IPv6 в Windows без крайней (и доказанной) необходимости. Особенно в Windows Server, где большинство компонентов использует локальные IPv6-адреса (link-local) для внутренней коммуникации, даже если внешние IPv6 адреса не используются.

Настройте приоритет IPv4 над IPv6 в Windows

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

Если Windows обнаруживает, что для удаленного хоста доступны оба типа IP адреса (IPv6 – AAAA запись, и IPv4 — A запись), компьютер сначала будет пытаться установить соединение по IPv6 адресу. Если этот адрес не доступен, или конкретная сетевая служба (legacy приложение) не поддерживает работу с IPv6 адресами, это может вызвать дополнительные задержки или ошибки подключения. По умолчанию IPv6 имеет более высокий приоритет над IPv4 при выборе протокола для подключения, что задается в настройках политики Prefix Policies (подробности в статье Изменяем приоритет протокола IPv4 над IPv6 в Windows).

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

Чтобы увеличить приоритет IPv4 над IPv6, нужно создать параметр реестра DisabledComponents со значением 0x20:

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

Значение параметра DisabledComponentsОписание
0 Включить IPv6 (По умолчанию)
0x10 отключить IPv6 на не-туннельных интерфейсах
0x01 отключить IPv6 на туннельных интерфейсах
0x11 отключить IPv6 везде кроме loopback
0x20 Prefer IPv4 over IPv6 (предпочтительный способ)
0xFF Полное отключение IPv6 (не рекомендуется)

Полный список возможных значений параметра DisabledComponents есть в статье: Guidance for configuring IPv6 in Windows for advanced users

Как корректно отключить IPv6 в Windows?

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

Большинство считает, что для этого достаточно отключить опцию Internet Protocol Version 6 (TCP/IPv6) в свойствах сетевого адаптера ( ncpa.cpl ). Но это не приводит к полному отключению этого протокола в Windows. Это лишь отключает использование IPv6 для одного конкретного адаптера, при этом стек IPv6 остается активным глобально.

отключение IPv6 в свойствах сетевого интерфейса

Наоборот, такой способ отключения может привести к проблемам с сетевыми приложениями,

Эквивалентом отключению IPv6 в свойствах интерфейса будет выполнение следующей PowerShell команды с указанием имени сетевого адаптера:

Disable-NetAdapterBinding -Name "Ethernet0" -ComponentID ms_tcpip[6]

Get-NetAdapterBinding Ethernet0

Disable-NetAdapterBinding ms_tcpip[6]

Команда отключает привязку IPv6 на указанном интерфейсе, это видно по тому, что IPv6 адрес пропал в конфигурации сетевого интерфейса. Но сам стек протокола в системе остаётся.

ipconfig /all

ipconfig - проверить что ipv6 адрес у сетевого отсутствует

Для полного отключения стека IPv6 на компьютере, нужно изменить значение параметра DisabledComponents:

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

DisabledComponents -0xFF полное отключение IPv6 в Windows

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

Если нужно отключить IPv6 сразу на нескольких компьютерах в AD, параметр реестра DisabledComponents можно распространить через GPO.

Как проверить, что IPv6 действительно не работает (нет адресов, нет маршрутов, нет слушающих сервисов)?

Можно вывести список интерфейсов, поддерживающих IPv6 (список будет пустым):

netsh interface ipv6 show interfaces

Или можно выполнить простой ping на loopback интерфейс. Когда IPv6 включен, команда будет возвращать IPv6 адрес loopback интерфейса ( ::1: ). После отключения, будет возвращаться уже IPv4 адрес 127.0.0.1 .

ping localhost до и после отключения IPv6 адреса

Чтобы откатить изменения, и включить поддержку протокола IPv6, нужно изменить значение параметра DisabledComponents на 0, или удалить его:

reg delete "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters" /v DisabledComponents /f

 


Предыдущая статья Следующая статья


Комментариев: 0 Оставить комментарий

Оставить комментарий

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

Я не робот( Обязательно отметьте)