Cómo hacer que Kerberos use TCP en lugar de UDP en Windows

En este artículo se describe cómo forzar a Kerberos a usar TCP en lugar de UDP.

Se aplica a: Windows 10 (todas las ediciones), Windows Server 2012 R2
Número de KB original: 244474

Resumen

El paquete de autenticación Kerberos de Windows es el paquete de autenticación predeterminado en Windows Server 2003, en Windows Server 2008 y en Windows Vista. Coexiste con el protocolo de desafío y respuesta NTLM y se usa en instancias en las que un cliente y un servidor pueden negociar Kerberos. La solicitud de comentarios (RFC) 1510 indica que el cliente debe enviar un datagrama del Protocolo de datagramas de usuario (UDP) al puerto 88 en la dirección IP del Centro de distribución de claves (KDC) cuando un cliente se pone en contacto con el KDC. El KDC debe responder con un datagrama de respuesta al puerto de envío en la dirección IP del remitente. Rfc también indica que UDP debe ser el primer protocolo que se intenta.

Nota:

RFC 4120 ahora está obsoleto en RFC 1510. RFC 4120 especifica que un KDC debe aceptar solicitudes TCP y debe escuchar dichas solicitudes en el puerto 88 (decimal). De forma predeterminada, Windows Server 2008 y Windows Vista probarán TCP primero para Kerberos porque el valor predeterminado de MaxPacketSize ahora es 0. Todavía puede usar el valor del Registro MaxPacketSize para invalidar ese comportamiento.

Una limitación en el tamaño del paquete UDP puede provocar el siguiente mensaje de error al iniciar sesión en el dominio:

Error del registro de eventos 5719
NETLOGON de origen

No hay ningún controlador de dominio de Windows NT o Windows 2000 disponible para dominio. Se produjo el siguiente error:

Actualmente no hay ningún servidor de inicio de sesión disponible para atender la solicitud de inicio de sesión.

Además, la herramienta Netdiag puede mostrar los siguientes mensajes de error:

  • Mensaje de error 1

    Prueba de lista de controladores de dominio. . . . . . . . . . . : error [WARNING] No se puede llamar a DsBind a COMPUTERNAMEDC.domain.com (159.140.176.32). [ERROR_DOMAIN_CONTROLLER_NOT_FOUND]

  • Mensaje de error 2

    Prueba de Kerberos. . . . . . . . . . . : Kerberos con error [FATAL] no tiene un vale para MEMBERSERVER$.] Los registros de eventos de Windows XP que son síntomas de este problema son SPNegotiate 40960 y Kerberos 10.

Más información

Importante

Esta sección, método o tarea contiene pasos que le indican cómo modificar el Registro. No obstante, pueden producirse problemas graves si modifica el registro de manera incorrecta. En consecuencia, asegúrese de seguir estos pasos cuidadosamente. Para mayor protección, cree una copia de seguridad del registro antes de modificarlo. Después, puede restaurar el registro si se produce un problema. Para obtener más información sobre cómo hacer una copia de seguridad del Registro y cómo restaurarlo, consulte Cómo realizar una copia de seguridad del Registro y restaurarlo en Windows.

Si usa UDP para Kerberos, el equipo cliente puede dejar de responder (bloquear) cuando reciba el siguiente mensaje: Carga de la configuración personal.

De forma predeterminada, el tamaño máximo de los paquetes de datagramas para los que Windows Server 2003 usa UDP es de 1.465 bytes. Para Windows XP y Windows 2000, este máximo es de 2000 bytes. El Protocolo de control de transmisión (TCP) se usa para cualquier datagrampacket que sea mayor que este máximo. El tamaño máximo de los paquetes de datagramas para los que se usa UDP se puede cambiar modificando una clave y un valor del Registro.

De forma predeterminada, Kerberos usa paquetes de datagramas UDP sin conexión. En función de diversos factores, como el historial de identificador de seguridad (SID) y la pertenencia a grupos, algunas cuentas tendrán tamaños de paquetes de autenticación Kerberos más grandes. En función de la configuración de hardware de la red privada virtual (VPN), estos paquetes más grandes deben fragmentarse al pasar por una VPN. El problema se debe a la fragmentación de estos paquetes de Kerberos UDP de gran tamaño. Dado que UDP es un protocolo sin conexión, los paquetes UDP fragmentados se descartarán si llegan al destino fuera de orden.

Si cambia MaxPacketSize a un valor de 1, obliga al cliente a usar TCP para enviar tráfico Kerberos a través del túnel VPN. Dado que TCP está orientado a la conexión, es un medio de transporte más confiable a través del túnel VPN. Incluso si se quitan los paquetes, el servidor volverá a solicitar el paquete de datos que falta.

Puede cambiar MaxPacketSize a 1 para forzar a los clientes a usar el tráfico Kerberos a través de TCP. Para ello, siga estos pasos:

  1. Inicie el Editor del Registro.

  2. Busque la siguiente subclave del Registro y haga clic en ella: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters.

    Nota:

    Si la clave Parameters no existe, créela ahora.

  3. En el menú Edición, seleccione Nuevo y haga clic en Valor DWORD.

  4. Escriba MaxPacketSize y presione ENTRAR.

  5. Haga doble clic en MaxPacketSize, escriba 1 en el cuadro Datos de valor , haga clic para seleccionar la opción Decimal y, a continuación, haga clic en Aceptar.

  6. Salga del editor del Registro.

  7. Restart your computer.

Este es el enfoque de solución para Windows 2000, XP y Server 2003. Windows Vista y versiones posteriores usan un valor predeterminado de "0" para MaxPacketSize, que también desactiva el uso de UDP para el cliente Kerberos.

La plantilla siguiente es una plantilla administrativa que se puede importar en directiva de grupo para permitir que se establezca el valor MaxPacketSize para todos los equipos empresariales que ejecutan Windows Server 2003, Windows XP o Windows 2000. Para ver la configuración de MaxPacketSize en directiva de grupo Editor object, haga clic en Mostrar solo directivas en el menú Ver para que No se seleccione Mostrar solo directivas. Esta plantilla modifica las claves del Registro fuera de la sección Directivas. De forma predeterminada, directiva de grupo Editor object no muestra esta configuración del Registro.