Как заставить Kerberos использовать TCP вместо UDP в Windows

В этой статье описывается, как заставить Kerberos использовать TCP вместо UDP.

Область применения: Windows 10 — все выпуски, Windows Server 2012 R2
Исходный номер базы знаний: 244474

Сводка

Пакет проверки подлинности Windows Kerberos — это пакет проверки подлинности по умолчанию в Windows Server 2003, в Windows Server 2008 и в Windows Vista. Он сосуществует с протоколом запроса и ответа NTLM и используется в тех случаях, когда клиент и сервер могут согласовывать Kerberos. Запрос примечаний (RFC) 1510 указывает, что клиент должен отправить датаграмму пользовательского протокола datagram (UDP) на порт 88 по IP-адресу Центра распространения ключей (KDC), когда клиент обращается к KDC. KDC должен ответить датаграммой ответа на порт отправки по IP-адресу отправителя. В RFC также указано, что UDP должен быть первым протоколом, который используется.

Примечание.

RFC 4120 теперь устарела RFC 1510. RFC 4120 указывает, что KDC должен принимать TCP-запросы и прослушивать такие запросы через порт 88 (десятичный). По умолчанию Windows Server 2008 и Windows Vista сначала опробуют TCP для Kerberos, так как значение по умолчанию MaxPacketSize теперь равно 0. Для переопределения этого поведения по-прежнему можно использовать значение реестра MaxPacketSize.

Ограничение на размер пакета UDP может привести к следующему сообщению об ошибке при входе в домен:

Ошибка журнала событий 5719
Исходная версия NETLOGON

Windows NT или контроллер домена Windows 2000 недоступен для домена. Произошла следующая ошибка:

В настоящее время нет доступных серверов входа для обслуживания запроса на вход.

Кроме того, средство Netdiag может отображать следующие сообщения об ошибках:

  • Сообщение об ошибке 1

    Проверка списка контроллеров домена. . . . . . . . . . . : сбой [WARNING] Не удается вызвать DsBind в COMPUTERNAMEDC.domain.com (159.140.176.32). [ERROR_DOMAIN_CONTROLLER_NOT_FOUND]

  • Сообщение об ошибке 2

    Тестирование Kerberos. . . . . . . . . . . : сбой [FATAL] у Kerberos нет билета для MEMBERSERVER$.] В журналах событий Windows XP, которые являются симптомами этой проблемы, являются SPNegotiate 40960 и Kerberos 10.

Дополнительная информация

Важно!

В этот раздел, описание метода или задачи включены действия, содержащие указания по изменению параметров реестра. Однако неправильное изменение параметров реестра может привести к возникновению серьезных проблем. Поэтому следует в точности выполнять приведенные инструкции. Для дополнительной защиты создайте резервную копию реестра, прежде чем редактировать его. Так вы сможете восстановить реестр, если возникнет проблема. Для получения дополнительной информации о том, как создать резервную копию и восстановить реестр, см. статью Сведения о резервном копировании и восстановлении реестра Windows.

Если вы используете UDP для Kerberos, клиентский компьютер может перестать отвечать (зависать), когда появится следующее сообщение: Загрузка личных параметров.

По умолчанию максимальный размер пакетов датаграмм, для которых Windows Server 2003 использует UDP, составляет 1465 байт. Для Windows XP и Windows 2000 это максимальное значение составляет 2000 байт. Протокол TCP используется для любого пакета datagram, который больше этого максимума. Максимальный размер пакетов датаграмм, для которых используется UDP, можно изменить, изменив раздел реестра и значение.

По умолчанию Kerberos использует пакеты данных UDP без подключения. В зависимости от различных факторов, включая журнал идентификаторов безопасности (SID) и членство в группах, некоторые учетные записи будут иметь больший размер пакетов проверки подлинности Kerberos. В зависимости от конфигурации оборудования виртуальной частной сети (VPN) эти большие пакеты должны быть фрагментированы при прохождении через VPN. Проблема вызвана фрагментацией этих больших пакетов Kerberos UDP. Так как UDP является протоколом без подключения, фрагментированные пакеты UDP будут удалены, если они поступают в место назначения не по порядку.

При изменении параметра MaxPacketSize на значение 1 клиент будет принудительно использовать TCP для отправки трафика Kerberos через VPN-туннель. Так как TCP ориентирован на подключение, это более надежный способ транспортировки через VPN-туннель. Даже если пакеты удаляются, сервер повторно запрашивает отсутствующий пакет данных.

Можно изменить значение MaxPacketSize на 1, чтобы клиенты использовали трафик Kerberos по протоколу TCP. Для этого выполните следующие действия:

  1. Откройте редактор реестра.

  2. Найдите и выделите следующий подраздел реестра: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters.

    Примечание.

    Если ключ Parameters не существует, создайте его сейчас.

  3. В меню Правка выберите пункт Создать, а затем Параметр DWORD.

  4. Введите MaxPacketSize и нажмите клавишу ВВОД.

  5. Дважды щелкните MaxPacketSize, введите 1 в поле Значение , щелкните, чтобы выбрать параметр Decimal , а затем нажмите кнопку ОК.

  6. Закройте редактор реестра.

  7. Restart your computer.

Это подход к решению для Windows 2000, XP и Server 2003. Windows Vista и более новые версии используют значение по умолчанию "0" для MaxPacketSize, что также отключает использование UDP для клиента Kerberos.

Следующий шаблон представляет собой административный шаблон, который можно импортировать в групповая политика, чтобы можно было задать значение MaxPacketSize для всех корпоративных компьютеров под управлением Windows Server 2003, Windows XP или Windows 2000. Чтобы просмотреть параметры MaxPacketSize в Редактор объекта групповая политика, щелкните Показать только политики в меню Вид, чтобы не был выбран параметр Показывать только политики. Этот шаблон изменяет разделы реестра за пределами раздела Политики. По умолчанию групповая политика объектная Редактор не отображает эти параметры реестра.