Ринат Фахрутдинов

Ринат Фахрутдинов 

Технический писатель.

5subscribers

41posts

Showcase

4
Windows предпочитает IPv6: почему старые сервисы могут ломаться

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


A -> IPv4-адрес
AAAA -> IPv6-адрес


то подключение с windows-клиента часто пойдет именно по IPv6-адресу из AAAA. В обычной современной сети это нормально. IPv6 - не лишний протокол, а полноценная часть сетевого стека Windows. Но иногда из-за этого начинаются странные проблемы. Например:

• имя хоста резолвится нормально;
• ping может работать;
• по IPv4 сервис доступен;
• но приложение пытается подключиться по IPv6;
• а сам сервис IPv6 не слушает или работает с ним криво.

Особенно часто это всплывает со старыми приложениями, самописными сервисами, легаси-софтом, SMB-сценариями в рабочих группах и внутренними утилитами, которые всегда жили на IPv4.

"Симптомы могут выглядеть так:

по IP 192.168.x.x все открывается
по имени хоста - ошибка
соседний компьютер виден, но сервис не отвечает
приложение пишет timeout
в логах видно попытку подключения к IPv6"

Первый импульс - полностью отключить IPv6. Но это плохая идея. Microsoft не рекомендует полностью отключать IPv6 в Windows, потому что часть компонентов системы рассчитывает на его наличие.

Более аккуратный обходной путь - поднять приоритет IPv4 над IPv6 в prefix policy. Посмотреть текущую таблицу префиксов:


netsh interface ipv6 show prefixpolicies


Увеличить приоритет IPv4-mapped адресов можно так:


netsh interface ipv6 set prefix ::ffff:0:0/96 55 4


В некоторых инструкциях также встречается настройка для ::/96:


netsh interface ipv6 set prefix ::/96 60 3


После изменения стоит проверить таблицу еще раз:


netsh interface ipv6 show prefixpolicies


Смысл этих настроек в том, что винда меняет предпочтения при выборе адреса назначения. IPv6 остается включенным, но при наличии IPv4 и IPv6 система может начать чаще выбирать IPv4.

Проверить резолвинг можно так:


nslookup hostname


А доступность порта:


Test-NetConnection hostname -Port 445


#windows #network

NetworkAdmin
Subscription levels1

Просто подписка

$1.29 per month
Go up