- 1С:Предприятие 8.3 и приоритизация протокола IPv4 над IPv6 в Windows Server 2012 R2
- Архив метки: IPv6
- Снижение приоритета (предпочитаемости) IPv6
- GNU/Linux
- Руководство по настройке IPv6 в Windows для опытных пользователей
- Аннотация
- Использование реестра для настройки IPv6
- Расчет значения реестра
- Использование GUI свойств сети для отключения IPv6 не поддерживается
- Справочные материалы
1С:Предприятие 8.3 и приоритизация протокола IPv4 над IPv6 в Windows Server 2012 R2
Анализируя содержимое технологического журнала сервера 1С:Предприятие 8.3 можно обнаружить события проверки соединения с рабочим сервером кластера 1С. В случае, когда сервер проверяет сам себя мы можем заметить, что используется IPv6, несмотря на то, что, возможно, ранее мы отключали использование этого протокола в свойствах сетевого подключения в Windows.
События такого рода в журнале имеют примерно следующий вид:
Теоретически это не должно являться проблемой для 1С, так как петлевой интерфейс с адресом ::1 доступен по протоколу IPv6. Это легко проверить с помощью утилиты ping
При этом UDP и TCP-прослушиватели в системе создаются серверным процессом 1С не только для IPv4, но и для IPV6:
Некоторые специалисты в области поддержки 1С, в качестве дополнительной меры в комплексе мероприятий по достижению стабильности работы серверов 1С, дают рекомендацию по полному отключению протокола IPv6 там, где этот протокол полноценно не используется. В качестве более «мягкого» варианта предлагается изменение приоритезации для протокола IPv6. То есть речь идёт не о полном отключении поддержки IPv6, а именно о понижении приоритета IPv6 над IPv4.
На данный момент времени я объективно не могу сказать, что изменение приоритезации IPv6 конкретно решило для нас ту или иную проблему в работе серверов 1С, так как практически пока не встречался с явными фактами отрицательного влияния системных настроек приоритезации IPv6 на работу 1С. Тем не менее, мы рассмотрим пример того, как выполнить понижение приоритета IPv6.
Понижение приоритета IPv6
В операционных системах Windows начиная с Windows Vista в конфигурации по умолчанию у протокола IPv6 имеется приоритет над протоколом IPv4. В некоторых ситуациях наличие этого приоритета может проявляться даже несмотря на то, что в привычном всем графическом интерфейсе настроек сетевого подключения протокол IPv6 выключен
Например, если мы, находясь на хосте, с помощью утилиты ping попробуем проверить доступность хоста по его же имени или с использованием имени localhost, то увидим, что по умолчанию используется проверка доступности по IPv6 адресу
Понизить приоритет протокола IPv6 можно путём установки параметра реестра DisabledComponents, описанного в статье KB929852 — Guidance for configuring IPv6 in Windows for advanced users
По умолчанию в Windows Server 2012 R2 данный параметр реестра отсутствует. Для полного выключения IPv6 через этот параметр реестра его значение нужно задать как 0xFF . Если же нужно оставить возможность работы протокола IPv6, понизив при этом его приоритет относительно IPv4, то значение этого параметра должно быть установлено как 0x20 .
Готовый reg-файл для импорта параметра в реестр может выглядеть так:
Быстро установить нужный ключ реестра можно командой:
Посмотрим, каким образом, по умолчанию настроены политики префикса IPv6 на примере Windows Server 2012 R2 (до применения указанного параметра реестра)
Столбец Precedence определяет приоритет префикса. Чем больше число, тем выше приоритет
Префикс ::ffff:0:0/96 относится ко всем IPv4 адресам. В списке политик этот префикс представлен с меткой Label 4 и имеет более низкий приоритет по отношению ко всем IPv6 адресам ( ::/0 )
После внесения изменений в реестр и перезагрузки сервера ситуация с приоритетами изменится так, что префикс, относящийся ко всем IPv4 адресам, поднимется на самый верхний уровень.
Недостатком описанного способа изменения приоритезации является необходимость перезагрузки системы для вступления изменений в силу. Если мы не хотим действовать через реестр и перезагружать систему, то есть альтернативный вариант повышения приоритета IPv4 над IPv6, который начинает работать сразу в оперативном режиме. Для этого нужно воспользоваться утилитой netsh
Чтобы поднять приоритет адресов IPv4 над всеми прочими, задав ему приоритет, например, 55 , достаточно будет выполнить одну команду типа:
Сделанные изменения начнут действовать в системе сразу. Например, если мы, находясь на хосте, попробуем его пропинговать по его же имени, то увидим, что теперь по умолчанию используется проверка доступности по IPv4 адресу
Восстановление системных настроек по умолчанию
Если приоритет IPv4 повышался через правку параметра реестра, то простое удаление ранее добавленного в реестр параметра DisabledComponents с последующей перезагрузкой сервера приведёт к автоматическому восстановлению стандартных настроек приоритезации. То есть настройки prefixpolicies автоматически вернутся в исходное состояние и в системе опять будет выставлен приоритет IPv6 над IPv4.
Если же для изменения приоритезации мы использовали не правку реестра с перезагрузкой, а вышеописанный метод с использованием прямой правки политик утилитой netsh, то следует учесть один нюанс. В случае такой правки после следующей перезагрузки системы из таблицы приоритезации исчезнут все используемые там по умолчанию префиксы и останется только заданный нами ране префикс:
В некоторых ситуациях это может стать проблемой при работе в смешанных средах IPv4 и IPv6: TechNet Forums — Windows 7 Networking — How to change default TCP/IP to v4?
Поэтому, если в такой ситуации нам потребуется вернуть исходную конфигурацию, используемую по умолчанию в Windows Server 2012 R2, то можем выполнить удаление созданным нами ранее политик. При их удалении будут автоматически восстановлены настройки по умолчанию. Например, в нашем случае достаточно будет выполнить команду удаления одной ранее добавленной политики:
Архив метки: IPv6
В некоторых случаях могут происходит странные ошибки, связанные со стабильностью работы платформы 1С:Предприятие 8.
Одной из рекомендаций является понизить приоритет протокола ipv6 или выключить его совсем.
В ряде случаев эти ошибки обусловлены тем, что клиент запрашивает у сервера его адрес, а сервер вместо адреса в формате IPv4 вида 192.168.1.2 возвращает адрес в формате IPv6 в формате вида ::1 или fe80::e168:38a1:5a4d:d271%40 (адреса взяты для примера, ключевое там — много групп цифр, разделённых вместо точек двоеточиями).
Увидеть это можно, выполнив в командной строке команду
ping servername
где вместо servername надо подставить имя своего сервера. Если ответ будет в формате IPv6 — ваш сервер тоже может быть подвержен такой проблеме.
Ранее в нашем блоге давалось решение вида «отключить протокол IPv6 полностью»: http://www.gilev.ru/disableipv6/, на Инфостарте проблема тоже обсуждалась: http://infostart.ru/public/160388/, решений приводилось два — полное отключение протокола IPv6 полностью, и занесение IP-адреса сервера в файл hosts.
Первое решение может быть неудобно тем, что как минимум требует перезагрузить сервер, второе может быть неудобно или даже неработоспособно в случае нахождения сервера в нескольких подсетях одновременно (например, несколько сетевых карт).
А вот теперь сообщаем более технологичное решение: просто повысить приоритет протокола IPv4 над протоколом IPv6, тем не менее сохранив работоспособность IPv6. Решение не требует перезагрузки, вступает в действие моментально. Нужно открыть командную строку в режиме администратора, и выполнить там две команды:
netsh interface ipv6 set prefix ::/96 60 3
netsh interface ipv6 set prefix ::ffff:0:0/96 55 4
Всё, работает! Проверим на примере «чистой» Windows 2012 Server (жирным выделены команды, дальше в сокращённом виде приводится ответ операционной системы):
ping gilev_test
Обмен пакетами с gilev_test [fe80::21c0:ff89:967f:955a%19] с 32 байтами данных:
Ответ от fe80::21c0:ff89:967f:955a%19: время Рубрика: Администрирование, тюнинг, Устранение ошибок | Метки: IPv4, IPv6, netsh, ping
Снижение приоритета (предпочитаемости) IPv6
Впервые опубликовано 2011-11-17.
Настроив у себя IPv6-туннель от одного из туннельных брокеров, вы вероятно заметите, что в случаях когда удалённые сайты или прочие сервера имеют как IPv4, так и IPv6-адрес, ваши компьютеры теперь будут предпочитать связываться с ними по протоколу IPv6.
Поскольку весь ваш IPv6-трафик в случае с туннельным брокером идёт через его сервер, в ряде случаев данное поведение может оказаться нежелательным. Используемый при обращении к тем же серверам напрямую по IPv4 маршрут может оказаться более коротким, и обеспечивать более высокую скорость.
В качестве примеров, где это может оказаться важным, можно назвать загрузку обновлений ОС с имеющих поддержку IPv6 файловых зеркал, а также просмотр YouTube, с недавнего времени добавившего IPv6-адреса своим серверам раздачи видео. Последнее, судя по всему, является довольно частой жалобой: «после установки туннеля YouTube тормозит», когда по итогам диагностики выясняется, что получение видео с данного сервиса теперь идёт по IPv6 через туннельный сервер в Европе, вместо (к примеру) установленных Гуглом в Москве или непосредственно у вашего провайдера кэширующих серверов его собственной CDN.
Решением проблемы может являться придание IPv6-адресам вашего туннельного брокера статуса «низкоприоритетных», т.е. используемых только при отсутствии возможности соединиться по IPv4. Такой статус по-умолчанию уже имеют 6to4 и Teredo-адреса (поэтому с ними вышеописанной проблемы в общем случае не возникает).
GNU/Linux
Необходимо отредактировать файл /etc/gai.conf . По-умолчанию там уже есть следующая закомментированная секция:
Раскомментируйте её, и добавьте в список (к примеру со значением «2», т.е. равным со 6to4-адресами приоритетом) ту IPv6-сеть вашего туннельного брокера, адрес из которой выдан вам и сконфигурирован у вас на туннельном интерфейсе. В случае с Hurricane Electric это 2001:470::/32. В результате секция будет выглядеть следующим образом:
Этого должно быть достаточно, чтобы IPv6 использовался только при подключении к IPv6-only сервисам, либо при явном указании требования использовать IPv6 в соответствующей программе («ssh -6», «curl -6» и т.д). В остальных случаях автоматически будет предпочитаться IPv4.
Если же вы хотите «прицельно» снизить предпочитаемость только IPv6-адресов определённых сайтов и сервисов, это можно сделать абсолютно идентичным способом, просто вместо префикса используемого вами туннеля необходимо прописать префикс используемый серверами, к которым вы подключаетесь (но не хотите более подключаться по v6). К примеру европейским Google используется префикс 2a00:1450::/32, а «глобальным» – 2001:4860::/32. В таблицу можно добавить оба, с одинаковым значением «2».
Руководство по настройке IPv6 в Windows для опытных пользователей
Windows Vista, Windows Server 2008 и более поздние версии Windows реализуют RFC 3484 и используют таблицу префиксов, чтобы определить, какой адрес использовать при наличии нескольких адресов для DNS-имени.
По умолчанию Windows поддерживает глобальные одноавказные адреса IPv6, а не IPv4-адреса.
Исходная версия продукта: Windows 10 — все выпуски, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2
Исходный номер КБ: 929852
Аннотация
ИТ-администраторы часто отключать IPv6 для устранения проблем, связанных с сетью, таких как устранение проблем с именами.
Протокол IPv6 является обязательной частью Windows Vista и Windows Server 2008 и более новых версий. Не рекомендуется отключать IPv6 или его компоненты. В этом случае некоторые компоненты Windows могут не работать.
Рекомендуется использовать prefer IPv4 over IPv6 в политиках префиксов, а не отключать IPV6.
Использование реестра для настройки IPv6
Точно следуйте всем указаниям из этого раздела. Внесение неправильных изменений в реестр может привести к возникновению серьезных проблем. Прежде чем приступить к изменениям, создайте резервную копию реестра для восстановления на случай возникновения проблем.
Функциональность IPv6 можно настроить, изменяя следующий ключ реестра:
Расположение: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\
Имя: DisabledComponents
Тип: REG_DWORD
Min Value: 0x00 (значение по умолчанию)
Максимальное значение: 0xFF (IPv6 отключен)
Функциональность IPv6 | Значение реестра и комментарии |
---|---|
Предпочитать IPv4 по IPv6 | 32 декабря Hex 0x20 Bin xx1x xxxx Рекомендуется вместо отключения IPv6. |
Отключение IPv6 | 255 декабря Hex 0xFF Bin 1111 1111 См. задержку при запуске после отключения IPv6 в Windows, если после отключения IPv6 в Windows 7 с Windows Server 2008 R2 SP1. Кроме того, если неправильно отключить IPv6, запуск системы будет отложен на пять секунд, установив для параметра реестра DisabledComponents значение 0xffffffff. Правильное значение должно быть 0xff. Дополнительные сведения см. в обзоре протокола IPv6 версии 6. Значение реестра DisabledComponents не влияет на состояние этого контрольного окна. Даже если для ключа реестра DisabledComponents установлено отключение IPv6, можно установить этот элемент на вкладке «Сеть» для каждого интерфейса. Это ожидаемое поведение. Невозможно полностью отключить IPv6, так как IPv6 используется внутри системы для многих задач TCPIP. Например, после настройки этого параметра можно будет запустить ::1 ping. |
Отключение IPv6 во всех интерфейсах без туннеля | 16 декабря Hex 0x10 Bin xxx1 xxxx |
Отключение IPv6 на всех интерфейсах туннеля | 1 декабря Hex 0x01 Bin xxxx xxx1 |
Отключение IPv6 во всех интерфейсах, не включаемых вtunnel (за исключением обратной связи), и в интерфейсе туннеля IPv6 | 17 декабря Hex 0x11 Bin xxx1 xxx1 |
Предпочитать IPv6 через IPv4 | Bin xx0x xxxx |
Повторное включить IPv6 на всех интерфейсах, не относяхся к туннелю | Bin xxx0 xxxx |
Повторное включить IPv6 на всех интерфейсах туннеля | Bin xxx xxx0 |
Повторное включить IPv6 в интерфейсах нетоннеля и в туннелях IPv6 | Bin xxx0 xxx0 |
- Администраторы должны создать ADMX-файл, чтобы отобрать параметры реестра, которые приведены ниже, в параметре групповой политики.
- Чтобы изменения вступили в силу, необходимо перезагрузить компьютер.
- Значения, кроме 0 или 32, вызывают сбой службы маршрутов и удаленного доступа после вступления этого изменения в силу.
По умолчанию протокол туннелинга 6to4 включен в Windows, если интерфейсу назначен общедоступный IPv4-адрес (общедоступный IPv4-адрес означает любой IPv4-адрес, который не находится в диапазонах 10.0.0.0/8, 172.16.0.0/12 или 192.168.0.0/16). 6to4 автоматически назначает IPv6-адрес интерфейсу туннелинга 6to4 для каждого адреса, а 6to4 динамически регистрирует эти IPv6-адреса на назначенном DNS-сервере. Если такое поведение не требуется, рекомендуется отключить интерфейсы туннеля IPv6 на затронутых ведущих приложениях.
Чтобы изменить параметр реестра, выполните следующие действия:
Откройте окно административной командной подсказки.
Выполните следующую команду:
Замените значение соответствующим значением.
Расчет значения реестра
Windows использует битовуюmasks для проверки значений DisabledComponents и определения, следует ли отключить компонент.
Чтобы узнать, какой компонент каждый бит (от низкого до высокого) элементов управления, см. в следующей таблице.
Имя | Setting |
---|---|
Туннель | Отключение интерфейсов туннеля |
Tunnel6to4 | Отключение интерфейсов 6to4 |
TunnelIsatap | Отключение интерфейсов Isatap |
Tunnel Teredo | Отключение интерфейсов Teredo |
Нативное | Отключение нативных интерфейсов (также PPP) |
PreferIpv4 | Предпочитать IPv4 в политике префикса по умолчанию |
TunnelCp | Отключение интерфейсов CP |
TunnelIpTls | Отключение интерфейсов IP-TLS |
Для каждого бита 0 означает «false», а 1 — «true». Пример можно найти в следующей таблице.
Setting | Предпочитать IPv4 по IPv6 в политиках префикса | Отключение IPv6 во всех интерфейсах без туннеля | Отключение IPv6 на всех интерфейсах туннеля | Отключение IPv6 в нетоннелических интерфейсах (за исключением обратной связи) и в туннелевом интерфейсе IPv6 |
---|---|---|---|---|
Отключение интерфейсов туннеля | 0 | 0 | 1 | 1 |
Отключение интерфейсов 6to4 | 0 | 0 | 0 | 0 |
Отключение интерфейсов Isatap | 0 | 0 | 0 | 0 |
Отключение интерфейсов Teredo | 0 | 0 | 0 | 0 |
Отключение нативных интерфейсов (также PPP) | 0 | 1 | 0 | 1 |
Предпочитать IPv4 в политике префикса по умолчанию. | 1 | 0 | 0 | 0 |
Отключение интерфейсов CP | 0 | 0 | 0 | 0 |
Отключение интерфейсов IP-TLS | 0 | 0 | 0 | 0 |
Binary | 0010 0000 | 0001 0000 | 0000 0001 | 0001 0001 |
Hexadecimal | 0x20 | 0x10 | 0x01 | 0x11 |
Использование GUI свойств сети для отключения IPv6 не поддерживается
Это значение реестра не влияет на состояние следующего контрольного окна. Даже если в реестре настроено отключение IPv6, можно установить этот элемент на вкладке «Сеть» для каждого интерфейса. Это ожидаемое поведение.
Справочные материалы
Дополнительные сведения о RFC 3484 см. в стандарте «Выбор адреса по умолчанию для протокола IPv6 версии 6».
Дополнительные сведения о том, как установить приоритет IPv4 над IPv6, см. в SIO_ADDRESS_LIST_SORT.
Сведения о RFC 4291 см. в ip-адреснойархитектуре версии 6.
Дополнительные сведения о связанных проблемах см. в статьях ниже:
Netmon 3.4 не совместим с Windows Server 2012 или более новой ОС, если включена команда сетевой сети LBFO. Вместо этого используйте анализатор сообщений.