Как отключить ipv6 с помощью групповых политик в Windows Server

Disable ipv6Встала задача выключить на всех windows машинках, вроде бы не сложно, но зайдя в групповую политику не обнаружил нужной политики. Немного погуглив нашел на забугорском сайте, дополнительный административный шаблон для решения этой задачи. Так же мне хочется в целом затронуть данный холивар, в котором сломано много копий, и самому вывести ответ на вопрос, точно ли нужно отключать IPv6 в Windows Server или же нет.

Нужно ли отключать IPv6 в Windows Server

В 21-ом веке вопрос безопасности стал краеугольным камнем, теперь всегда приходится искать баланс между удобством работы и безопасностью, жертвуя первым. Я всегда придерживаюсь принципа, что работать должно только, то что вы используете или управляете этим. Это безопасно и зачастую уменьшает периметр за которым нужно присматривать. Давайте я попробую привести сводную таблицу плюсов и минусов, если вы вдруг решите отключать, как и я IPv6.

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

Плюсы и минусы
Уменьшается сетевой трафик, нагрузка на сеть и шум
Упрощается сама сеть, более простые arp таблицы на оборудовании
Не будет двойного стека
Некоторые старые приложения или оборудование могут работать некорректно при включенном IPv6
Ну и конечно же вы сделаете вашу сеть немного безопаснее, так как есть векторы атаки использующие IPv6
Вы отключите, то что не используете
Если у вас как и у меня есть kibana, то вы понимаете размер логов с контроллеров домена. Вот там отключение IPv6 ожет существенно их уменьшить
Недостаточное количество специалистов, кто реально понимает как работает IPv6 и как его безопасно использовать
Некоторые службы могут начать работать некорректно. Например, я не отключаю IPv6 на контроллерах домена
IPv6 активно используется в облачных средах (Azure, AWS), SDN и IoT. Отключение может привести к несовместимости.
Какой-то софт может при попытке скачать обновление использовать IPv6
Гипотетически могут не работать какие-то функции в системе, но тут вопрос нужности их
IPv6 по умолчанию поддерживает IPsec? и не требует особых настроек

IPv6 будет лишь дополнительным каналом для проникновения в вашу сеть и скрытого кражи ваших данных.

Настройка GPO для отключения IPv6

Скачиваем его. При разархивировании получаем два файла admx и adml, их нужно скопировать в наше центральное хранилище.

IPv6Configuration.admx – Копируем в  %SYSTEMROOT%\ntds\PolicyDefinitions (на контроллере домена)
IPv6Configuration.adml - Copy this file to %SYSTEMROOT%\ntds\PolicyDefinitions\en-US (ваша языковая папка на контроллере домена )

После того как вы скопировали наши шаблоны, идем в редактор групповых политик. Выбираем уровень домена и создаем правым кликом новую политику. Задаем имя политики

Создание GPO политики по отключению ipv6

 

Теперь давайте отредактируем нашу политику, правым кликом "Изменить"

Редактирование политики GPO для отключения ipv6 протокола

Идем "Конфигурация компьютера-Политики-Административные шаблоны-Сеть-IPV6"

Конфигурация компьютера-Политики-Административные шаблоны-Сеть-IPV6

Выбираем параметры нашей политики и видим возможные варианты, ставим выключить все.

Окно выбора настроек для отключения IPv6 в Active Directory

На выбор есть так же:

  • Disable 6to4
  • Disable ISATAP
  • Disable Teredo
  • Disable Terero and 6to4
  • Disable all tunnel interfaces
  • Disable all LAN and PPP interfaces
  • Disable all LAN, PPP and tunnel interfaces
  • Prefer IPv4 over IPv6

Disable all IPv6 components

Включаем в свойствах сетевого адаптера ipv6

Включаем в свойствах сетевого адаптера ipv6

Проверяем и видим, что получен ipv6 адрес.

Как отключить ipv6 с помощью групповых политик

Теперь, для того чтобы понять как действует политика, перейдем в реестре по данному адресу. «Win+R» вводим regedit.exe. Переходим в ветку:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\TCPIP6\Parameters

Ветка реестра, где производится отключение ipv6 протокола

И видим, текущие записи

Как отключить ipv6 с помощью групповых политик в реестре

Открываем cmd и делаем gpupdate /force, обновление политик

Как отключить ipv6 с помощью групповых политик-09
Как отключить ipv6 с помощью групповых политик-09

И видим, что появился ключ DisabledComponents и параметром 0, он то и запрещает ipv6, если у вас нету домена, то можете просто создать данный ключ вручную.

в контекстном меню выбираем «Создать» -> «Параметр DWORD (32-бита)». Задаем имя этому параметру – DisabledComponents. Теперь делаем двойной клик левой кнопкой на вновь созданном параметре, и устанавливаем значение FF.

После перезагрузки IPv6 будет отключен на всех интерфейсах. Для настройки протокола IPv6 введите одно из следующих значений, затем нажмите кнопку ОК:

  • Введите 0, чтобы включить все компоненты IPv6. Внимание! Это настройка по умолчанию.
  • Введите 0xffffffff, чтобы отключить все компоненты IPv6, кроме интерфейса обратной связи. При этом значении Windows Vista для обработки префиксов также будет использовать протокол интернета версии 4 (IPv4) вместо IPv6.
  • Введите 0x20 для использования IPv4 вместо IPv6 при обработке префиксов.
  • Введите 0x10 для отключения собственных интерфейсов IPv6.
  • Введите 0x01 для отключения туннельных интерфейсов IPv6.
  • Введите 0x11 для отключения всех интерфейсов IPv6, кроме интерфейса обратной связи.

Перезапустите компьютер.

Ключ реестра DisableComponents

К сожалению, данный параметр применится только после перезагрузки, Но перед перезагрузкой выполним команду ipconfig /all , чтобы посмотреть все настройки по ip

Вывод команды ipconfig /all

Видим, что ipv6 есть. Перезагружаемся. Сразу скажу на русской windows я нашел глюк, галка в свойствах сетевого подключения с ipv6 не пропала, но у компьютера при выводе команды ipconfig /all адреса с ipv6 нет.

Успешное отключение IPv6 с помощью групповых политик

Вот так вот просто отключить ipv6 с помощью групповых политик.

Читайте так же Скачать MSI пакеты для отключения ipv6 в Windows

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

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

Как понизить приоритет IPv6 перед IPv4

Если по каким-то причинам вы не хотите расставаться с поддержкой протокола IPv6, то можно сделать IPv4 более приоритетным (Это как играться метриками в статических маршрутах). Запустите PowerShell и введите команду:

New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\ ` -Name DisabledComponents -Type DWord -Value 32

В реестре будет значение 0x20.

Полезные команды для проверки

Проверка всех сетевых интерфейсов на поддержку IPv6 через PowerShell.

Get-NetAdapterBinding -ComponentID ms_tcpip6

Проверка поддержки IPv6 в PowerShell

В cmd так же можно посмотреть.

netsh interface ipv6 show addresses

Просмотр IPv6 в cmd

Массовая проверка Ipv6 на списке серверов

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

# Получаем список серверов из файла, далее кладем в переменную
$servers = Get-Content -Path "C:\Temp\RDS\servers-test.txt"

$results = @()

foreach ($server in $servers) {
try {
# Проверяем доступность сервера
$connectionTest = Test-Connection -ComputerName $server -Count 1 -Quiet -ErrorAction SilentlyContinue

if (-not $connectionTest) {
$result = [PSCustomObject]@{
'ServerName' = $server
'InterfaceName' = 'Сервер недоступен'
'IPv6Address' = 'N/A'
}
$results += $result
continue
}

# На каждом сервере найти все IPv6 адреса
$networkAdapters = Get-NetAdapter -CimSession $server -ErrorAction Stop | Where-Object { $_.Status -eq 'Up' }

$hasIPv6 = $false

foreach ($adapter in $networkAdapters) {
$ipv6Addresses = Get-NetIPAddress -CimSession $server -InterfaceIndex $adapter.InterfaceIndex -AddressFamily IPv6 -ErrorAction SilentlyContinue

if ($ipv6Addresses) {
$hasIPv6 = $true
foreach ($ipv6 in $ipv6Addresses) {
# 3. Формируем объект с данными для вывода
$result = [PSCustomObject]@{
'ServerName' = $server
'InterfaceName' = $adapter.Name
'IPv6Address' = $ipv6.IPAddress
}
$results += $result
}
}
}

# Если на сервере не найдено IPv6 адресов
if (-not $hasIPv6) {
$result = [PSCustomObject]@{
'ServerName' = $server
'InterfaceName' = 'Все интерфейсы'
'IPv6Address' = 'Не найдено'
}
$results += $result
}
}
catch {
$result = [PSCustomObject]@{
'ServerName' = $server
'InterfaceName' = 'Ошибка подключения'
'IPv6Address' = "Ошибка: $_"
}
$results += $result
}
}

# Выводим результаты в табличном виде
$results | Format-Table -AutoSize

Получение IPv6 адресов на списке серверов

Надеюсь, что данный опыт вам поможет определиться с тем, нужен вам IPv6 или нет. С вами был Иван Сёмин, автор и создатель IT портала Pyailistnik.org.

Оцените статью
Настройка серверов windows и linux
Добавить комментарий

  1. AlektroNik

    0xfffffff неправильно. Правильным значением должно быть значение 0xff.

    «Важно! Протокол Интернета версии 6 (IPv6) является обязательной частью Windows Vista и более поздних версий. Не рекомендуется отключить IPv6 или его компоненты, так как некоторые компоненты Windows впоследствии могут не работать. Кроме того при запуске системы будет задержано на 5 секунд при отключении IPv6, задав параметр реестра DisabledComponents значения 0xfffffffнеправильно. Правильным значением должно быть значение 0xff. Дополнительные сведения см. на вопрос «Что такое рекомендации корпорации Майкрософт об отключении IPv6» IPv6 для Microsoft Windows: вопросы и ответы


    https://support.microsoft.com/ru-ru/kb/929852/ru#fixit4me

  2. Иван Семин автор

    У меня работало и так, но если MS так советует я проверю их предложение и отпишусь. Спасибо что поделились информацией. Кстати порадовало что у них появились MSI пакеты для отключения IPV6, которые можно использовать в GP через распространение ПО

  3. Вячеслав

    MS не рекомендует отключать ipv6 (с помощью значения ff). рекомендует ставить приоритет ipv4, т.е. ставить значение 32 (десятичное)