Comment obliger Kerberos à utiliser TCP au lieu de UDP dans Windows

Cet article explique comment forcer Kerberos à utiliser TCP au lieu d’UDP.

Applicabilité : Windows 10 - toutes les éditions, Windows Server 2012 R2
Numéro de la base de connaissances d’origine : 244474

Résumé

Le package d’authentification Windows Kerberos est le package d’authentification par défaut dans Windows Server 2003, Windows Server 2008 et Windows Vista. Il coexiste avec le protocole de défi/réponse NTLM et est utilisé dans les instances où un client et un serveur peuvent négocier Kerberos. RFC (Request for Comments) 1510 indique que le client doit envoyer un datagramme UDP (User Datagram Protocol) au port 88 à l’adresse IP du Centre de distribution de clés (KDC) lorsqu’un client contacte le KDC. Le KDC doit répondre avec un datagramme de réponse au port d’envoi à l’adresse IP de l’expéditeur. La RFC indique également qu’UDP doit être le premier protocole essayé.

Remarque

RFC 4120 est désormais obsolète RFC 1510. RFC 4120 spécifie qu’un KDC doit accepter les requêtes TCP et doit écouter ces requêtes sur le port 88 (décimal). Par défaut, Windows Server 2008 et Windows Vista essaient d’abord TCP pour Kerberos, car la valeur par défaut de MaxPacketSize est désormais 0. Vous pouvez toujours utiliser la valeur de Registre MaxPacketSize pour remplacer ce comportement.

Une limitation de la taille des paquets UDP peut entraîner le message d’erreur suivant lors de l’ouverture de session de domaine :

Erreur du journal des événements 5719
Source NETLOGON

Aucun contrôleur de domaine Windows NT ou Windows 2000 n’est disponible pour domaine. L’erreur suivante s’est produite :

Actuellement, aucun serveur d’ouverture de session n’est disponible pour traiter la demande d’ouverture de session.

En outre, l’outil Netdiag peut afficher les messages d’erreur suivants :

  • Message d’erreur 1

    DC list test. . . . . . . . . . . : Échec [WARNING] Impossible d’appeler DsBind à COMPUTERNAMEDC.domain.com (159.140.176.32). [ERROR_DOMAIN_CONTROLLER_NOT_FOUND]

  • Message d’erreur 2

    Kerberos test. . . . . . . . . . . : Échec [FATAL] Kerberos n’a pas de ticket pour MEMBERSERVER$.] Les journaux des événements Windows XP qui sont les symptômes de ce problème sont SPNegotiate 40960 et Kerberos 10.

Plus d’informations

Importante

Cette section, méthode ou tâche contient des étapes vous indiquant comment modifier le Registre. Toutefois, des problèmes graves peuvent se produire si vous modifiez le Registre de façon incorrecte. Par conséquent, veillez à suivre ces étapes scrupuleusement. Pour une meilleure protection, sauvegardez le registre avant de le modifier. Vous pouvez alors le restaurer en cas de problème. Pour plus d’informations sur la procédure de sauvegarde et de restauration du Registre, consultez l’article Comment sauvegarder et restaurer le Registre dans Windows.

Si vous utilisez UDP pour Kerberos, votre ordinateur client peut cesser de répondre (se bloquer) lorsque vous recevez le message suivant : Chargement de vos paramètres personnels.

Par défaut, la taille maximale des paquets de datagramme pour lesquels Windows Server 2003 utilise UDP est de 1 465 octets. Pour Windows XP et Windows 2000, ce maximum est de 2 000 octets. Le protocole TCP (Transmission Control Protocol) est utilisé pour tout datagrampacket supérieur à cette valeur maximale. La taille maximale des paquets de datagramme pour lesquels UDP est utilisé peut être modifiée en modifiant une clé de Registre et une valeur.

Par défaut, Kerberos utilise des paquets de datagramme UDP sans connexion. En fonction de divers facteurs, notamment l’historique des identificateurs de sécurité (SID) et l’appartenance au groupe, certains comptes auront des tailles de paquets d’authentification Kerberos plus importantes. En fonction de la configuration matérielle du réseau privé virtuel (VPN), ces paquets plus volumineux doivent être fragmentés lors du passage d’un VPN. Le problème est dû à la fragmentation de ces paquets Kerberos UDP volumineux. Étant donné que UDP est un protocole sans connexion, les paquets UDP fragmentés sont supprimés s’ils arrivent à la destination dans le désordre.

Si vous remplacez MaxPacketSize par la valeur 1, vous forcez le client à utiliser TCP pour envoyer le trafic Kerberos via le tunnel VPN. Étant donné que TCP est orienté connexion, il s’agit d’un moyen de transport plus fiable sur le tunnel VPN. Même si les paquets sont supprimés, le serveur demande à nouveau le paquet de données manquant.

Vous pouvez remplacer MaxPacketSize par 1 pour forcer les clients à utiliser le trafic Kerberos sur TCP. Pour cela, procédez comme suit :

  1. Démarrez l’Éditeur du Registre.

  2. Recherchez la sous-clé de Registre suivante, puis cliquez dessus : HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters.

    Remarque

    Si la clé Parameters n’existe pas, créez-la maintenant.

  3. Dans le menu Edition, pointez sur Nouveau, puis cliquez sur Valeur DWORD.

  4. Tapez MaxPacketSize, puis appuyez sur Entrée.

  5. Double-cliquez sur MaxPacketSize, tapez 1 dans la zone Données de la valeur , cliquez pour sélectionner l’option Décimal , puis cliquez sur OK.

  6. Quittez l’Éditeur du Registre.

  7. Restart your computer.

Il s’agit de l’approche de la solution pour Windows 2000, XP et Server 2003. Windows Vista et les versions ultérieures utilisent la valeur par défaut « 0 » pour MaxPacketSize, ce qui désactive également l’utilisation d’UDP pour le client Kerberos.

Le modèle suivant est un modèle d’administration qui peut être importé dans stratégie de groupe pour permettre la définition de la valeur MaxPacketSize pour tous les ordinateurs d’entreprise exécutant Windows Server 2003, Windows XP ou Windows 2000. Pour afficher les paramètres MaxPacketSize dans stratégie de groupe Rédacteur d’objets, cliquez sur Afficher les stratégies uniquement dans le menu Affichage afin que l’option Afficher les stratégies uniquement ne soit pas sélectionnée. Ce modèle modifie les clés de Registre en dehors de la section Stratégies. Par défaut, stratégie de groupe Rédacteur d’objets n’affiche pas ces paramètres de Registre.