Dela via


Så här tvingar du Kerberos att använda TCP i stället för UDP i Windows

Den här artikeln beskriver hur du tvingar Kerberos att använda TCP i stället för UDP.

Ursprungligt KB-nummer: 244474

Sammanfattning

Windows Kerberos-autentiseringspaketet är standardautentiseringspaketet i Windows Server 2003, Windows Server 2008 och Windows Vista. Det samexisterar med NTLM-protokollet för utmaning/svar och används i instanser där både en klient och en server kan förhandla om Kerberos. Begäran om kommentarer (RFC) 1510 anger att klienten ska skicka ett UDP-datagram (User Datagram Protocol) till port 88 på IP-adressen för Key Distribution Center (KDC) när en klient kontaktar KDC. KDC bör svara med ett svarsdatagram till den sändande porten på avsändarens IP-adress. RFC anger också att UDP måste vara det första protokollet som provas.

Kommentar

RFC 4120 föråldrade RFC 1510. RFC 4120 anger att en KDC måste acceptera TCP-begäranden och ska lyssna efter sådana begäranden på port 88 (decimal). Som standard provar Windows Server 2008 och Windows Vista TCP först för Kerberos eftersom MaxPacketSize-standardvärdet nu är 0. Du kan fortfarande använda registervärdet MaxPacketSize för att åsidosätta det beteendet.

En begränsning av UDP-paketstorleken kan orsaka följande felmeddelande vid domäninloggning:

Händelseloggfel 5719
NETLOGON-källa

Ingen Windows NT- eller Windows 2000-domänkontrollant är tillgänglig för domändomänen. Följande fel inträffade:

Det finns för närvarande inga inloggningsservrar tillgängliga för att hantera inloggningsbegäran.

Dessutom kan verktyget Netdiag visa följande felmeddelanden:

  • Felmeddelande 1

    DC-listtest. . . . . . . . . . . : Det gick inte att anropa DsBind till COMPUTERNAMEDC.domain.com (159.140.176.32). [ERROR_DOMAIN_CONTROLLER_NOT_FOUND]

  • Felmeddelande 2

    Kerberos-test. . . . . . . . . . . : Det gick inte [FATAL] Kerberos har ingen biljett för MEMBERSERVER$.] Windows XP-händelseloggarna som är symptom på det här problemet är SPNegotiate 40960 och Kerberos 10.

Mer information

Viktigt!

Det här avsnittet, metoden eller uppgiften innehåller steg som beskriver hur du ändrar registret. Det kan uppstå allvarliga problem om du gör detta felaktigt. Följ därför noggrant dessa steg. För extra skydd, säkerhetskopiera registret innan du ändrar det. Då kan du återställa registret om det uppstår problem. Mer information om hur du säkerhetskopierar och återställer registret finns i Hur du säkerhetskopierar och återställer registret i Windows.

Om du använder UDP för Kerberos kanske klientdatorn slutar svara (låser sig) när du får följande meddelande: Läser in dina personliga inställningar.

Som standard är den maximala storleken på datagrampaket för vilka Windows Server 2003 använder UDP 1 465 byte. För Windows XP och För Windows 2000 är detta maximalt 2 000 byte. Transmission Control Protocol (TCP) används för alla datagrampacket som är större än det här maxvärdet. Den maximala storleken på datagrampaket som UDP används för kan ändras genom att ändra en registernyckel och ett värde.

Kerberos använder som standard anslutningslösa UDP-datagrampaket. Beroende på en mängd olika faktorer, inklusive historik för säkerhetsidentifierare (SID) och gruppmedlemskap, har vissa konton större Kerberos-autentiseringspaketstorlekar. Beroende på maskinvarukonfigurationen för virtuellt privat nätverk (VPN) måste dessa större paket fragmenteras när de går via ett VPN. Problemet orsakas av fragmentering av dessa stora UDP Kerberos-paket. Eftersom UDP är ett anslutningslöst protokoll tas fragmenterade UDP-paket bort om de kommer till målet i fel ordning.

Om du ändrar MaxPacketSize till värdet 1 tvingar du klienten att använda TCP för att skicka Kerberos-trafik via VPN-tunneln. Eftersom TCP är anslutningsorienterat är det ett mer tillförlitligt transportmedel i VPN-tunneln. Även om paketen tas bort begär servern det saknade datapaketet igen.

Du kan ändra MaxPacketSize till 1 för att tvinga klienterna att använda Kerberos-trafik via TCP. För att göra detta följer du stegen nedan:

  1. Öppna Registereditorn.

  2. Leta upp och välj sedan registerundernyckeln: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters.

    Kommentar

    Om parameternyckeln inte finns skapar du den nu.

  3. Gå till Redigera-menyn, peka på Nytt och klicka sedan på DWORD-värde.

  4. Skriv MaxPacketSize och tryck sedan på RETUR.

  5. Dubbelklicka på MaxPacketSize, skriv 1 i rutan Värdedata, klicka för att välja alternativet Decimal och klicka sedan på OK.

  6. Avsluta Registereditorn.

  7. Starta om datorn.

Det här är lösningsmetoden för Windows 2000, XP och Server 2003. Windows Vista och senare använder standardvärdet "0" för MaxPacketSize, vilket också inaktiverar användningen av UDP för Kerberos-klienten.

Följande mall är en administrativ mall som kan importeras till grupprincip så att MaxPacketSize-värdet kan anges för alla företagsdatorer som kör Windows Server 2003, Windows XP eller Windows 2000. Om du vill visa MaxPacketSize-inställningarna i grupprincip Objektredigeraren klickar du på Visa endast principer på menyn Visa så att Visa endast principer inte är markerat. Den här mallen ändrar registernycklar utanför avsnittet Principer. Som standard visar grupprincip Objektredigeraren inte dessa registerinställningar.