opened image

Как изменить приоритет протокола IPv4 вместо IPv6 на Windows

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

Тем не менее, в инфраструктуре, где большинство сервисов доступно только по IPv4 (например, корпоративные VPN‑туннели, внутренние web‑приложения или старые балансировщики), имеет смысл сделать так, чтобы сервер предпочитал именно IPv4‑соединения. Самый безопасный способ — изменить политику приоритета префиксов IPv6, оставив сам протокол активным.

 

В этой статье рассмотрены два проверенных метода — через реестр и через netsh — и приведены практические советы по тестированию и откату изменений. Материал рассчитан на системных администраторов и DevOps‑инженеров, знакомых с командной строкой Windows Server. 

 

 

Почему не стоит полностью отключать IPv6

 

  • Совместимость. Многие современные библиотеки Windows используют IPv6‑сокеты по умолчанию. Отключение может нарушить их работу.

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

  • Функции Windows. DirectAccess, BranchCache, SMB over QUIC, некоторые механизмы DNS‑кеша и даже Windows Update зависят от IPv6‑стека.

 

Поэтому задача сводится именно к приоритизации IPv4, а не к «вырубанию» IPv6.

 

 

Метод 1 — Изменение реестра

 

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

  1. Войдите в систему под учётной записью Администратор.

  2. Откройте редактор реестра regedt.exe

  3. Перейдите к ветке:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters
  4. Создайте (или измените) параметр DisabledComponents (тип REG_DWORD).

    • Значение 0x20 заставит систему предпочитать IPv4‑адреса при разрешении имён.

  5. Закройте редактор и перезагрузите сервер.

 

 

 

 

 

2.1 Откат изменений

 

Удалите параметр DisabledComponents или измените его значение на 0x00, затем перезагрузитесь.

 

Совет: чтобы внести параметр массово, используйте PowerShell‑скрипт:

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters" `
                 -Name DisabledComponents -Type DWord -Value 0x20

Добавьте скрипт в GPO «Startup Scripts» для OU с серверами.

 

 

 

 

 

3. Метод 2 — Изменение политики префиксов IPv6 через netsh

 

Плюс этого подхода — изменения вступают в силу без перезагрузки.

 

  1. Запустите повышенную командную строку (cmd.exe → «Run as administrator»).

  2. Проверьте текущие приоритеты:

    netsh interface ipv6 show prefixpolicies
  3. Зафиксируйте вывод — он пригодится для отката. 

 

 

 

 

 

 

  1. Примените новый порядок (IPv4‑mapped адресам присваиваем наибольший приоритет — 50):

    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
  2. Снова проверьте список:

    netsh interface ipv6 show prefixpolicies

     

Убедитесь, что ::ffff:0:0/96 теперь сверху.

 

 

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

 

Попробуйте пропинговать localhost:

 

ping localhost

 

Ожидаемый вывод:

 

Pinging <HOSTNAME> [127.0.0.1] with 32 bytes of data:
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
... (IPv4)

 

Если вместо ::1 используется 127.0.0.1, настройка применена корректно.

 

 

 

 

3.2 Откат изменений

 

Выполните:

 

netsh interface ipv6 reset

 

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

 

 

4. Массовое развертывание (GPO / Intune)

 

  • Group Policy: импортируйте .reg‑файл в «Computer Configuration → Preferences → Windows Settings → Registry».

  • Intune: создайте PowerShell‑скрипт с командой netsh и назначьте на группу серверов.

 

 

Часто задаваемые вопросы

 

ВопросОтвет
Нужно ли перезапускать сервисы?Для метода с реестром — необходима перезагрузка системы. Для netsh — нет, но текущие соединения могут работать по старому приоритету до повторного DNS‑разрешения.
Повлияет ли на DNS‑серверы?Нет, приоритет влияет только на выбор стека при создании исходящего соединения.
Безопасно ли отключать IPv6 полностью?Не рекомендуется. Некоторые сервисы Windows могут перестать обновляться или подключаться к CDN Microsoft.

 

 

 

Заключение

 

Приоритет IPv4 над IPv6 полезен там, где инфраструктура ещё не готова полноценно обслуживать двустековые подключения. Важное отличие подхода из статьи от полного отключения IPv6 — отсутствие побочных эффектов: протокол остаётся активным, а приложения, которые требуют IPv6, продолжают работать. Используйте метод реестра для долгосрочной политики через GPO и метод netsh — для точечных изменений без перезагрузки.

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