Compartir a través de


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.

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/respuesta NTLM y se usa en instancias en las que un cliente y un servidor pueden negociar Kerberos. Solicitud de comentarios (RFC) 1510 indica que el cliente debe enviar un datagrama de 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. La RFC también indica que UDP debe ser el primer protocolo que se intenta.

Nota:

RFC 4120 ahora obsoleta 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 PRIMERO TCP para Kerberos porque el valor predeterminado MaxPacketSize es ahora 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 en el inicio de sesión de 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 el 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 [ADVERTENCIA] 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. . . . . . . . . . . : error [FATAL] Kerberos 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. Por lo tanto, asegúrese de que sigue estos pasos con atención. Para la protección añadida, realice una copia de seguridad del Registro antes de modificarlo. A continuación, puede restaurar el Registro si se produce un problema. Para obtener más información sobre cómo realizar copias de seguridad y restaurar el registro, vea Cómo hacer copia de seguridad y restaurar el registro en Windows.

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

De forma predeterminada, el tamaño máximo de paquetes de datagramas para los que Windows Server 2003 usa UDP es de 1465 bytes. Para Windows XP y para Windows 2000, este máximo es de 2000 bytes. El Protocolo de control de transmisión (TCP) se usa para cualquier datagrampacket 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 datagrama 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 mayores. En función de la configuración de hardware de 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 Kerberos UDP grandes. Dado que UDP es un protocolo sin conexión, los paquetes UDP fragmentados se quitará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 obligar a los clientes a usar el tráfico Kerberos a través de TCP. Para ello, siga estos pasos:

  1. Inicia 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. Reinicie el equipo.

Este es el enfoque de la 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 la directiva de grupo para permitir que el valor MaxPacketSize se establezca para todos los equipos empresariales que ejecutan Windows Server 2003, Windows XP o Windows 2000. Para ver la configuración de MaxPacketSize en el Editor de objetos de directiva de grupo, 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, el Editor de objetos de directiva de grupo no muestra esta configuración del Registro.