В операционной системе Windows по умолчанию предпочтение отдается протоколу IPv6, если для удаленного хоста доступны адреса IPv4 и IPv6. Это может вызывать проблемы с приложениями или сетевыми службами, которые не поддерживают IPv6, например, из-за отсутствия прослушивания соответствующего сетевого интерфейса. В этой статье мы разберем, как настроить приоритет IPv4 над IPv6 в Windows, используя Командную строку, Редактор реестра или Групповые политики, сохраняя при этом полную функциональность обоих протоколов.
Почему 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, без необходимости его отключения. Использование Командной строки — самый быстрый способ, не требующий перезагрузки. Для автоматизации в доменной среде подойдут Групповые политики, а для локальных изменений — Редактор реестра. Все методы сохраняют совместимость с современными сетевыми стандартами, обеспечивая стабильность и гибкость.