Jak wymusić użycie protokołu Kerberos przy użyciu protokołu TCP zamiast protokołu UDP w systemie Windows

W tym artykule opisano sposób wymuszenia używania protokołu Kerberos przy użyciu protokołu TCP zamiast protokołu UDP.

Dotyczy: Windows 10 — wszystkie wersje, Windows Server 2012 R2
Oryginalny numer KB: 244474

Podsumowanie

Pakiet uwierzytelniania Kerberos systemu Windows jest domyślnym pakietem uwierzytelniania w systemie Windows Server 2003, Windows Server 2008 i Windows Vista. Współistnieje on z protokołem NTLM challenge/response i jest używany w wystąpieniach, w których zarówno klient, jak i serwer mogą negocjować protokół Kerberos. Żądanie komentarzy (RFC) 1510 wskazuje, że klient powinien wysłać datagram protokołu UDP (User Datagram Protocol) do portu 88 pod adresem IP centrum dystrybucji kluczy (KDC), gdy klient kontaktuje się z centrum dystrybucji kluczy. Centrum dystrybucji kluczy powinno odpowiadać za pomocą datagramu odpowiedzi na port wysyłający pod adresem IP nadawcy. RFC stwierdza również, że UDP musi być pierwszym protokołem, który jest wypróbowany.

Uwaga

RFC 4120 teraz przestarzałe RFC 1510. RFC 4120 określa, że centrum dystrybucji kluczy musi akceptować żądania TCP i nasłuchiwać takich żądań na porcie 88 (dziesiętne). Domyślnie system Windows Server 2008 i Windows Vista spróbują najpierw użyć protokołu TCP dla protokołu Kerberos, ponieważ wartość domyślna MaxPacketSize wynosi teraz 0. Nadal możesz użyć wartości rejestru MaxPacketSize, aby zastąpić to zachowanie.

Ograniczenie rozmiaru pakietu UDP może spowodować następujący komunikat o błędzie podczas logowania do domeny:

Błąd dziennika zdarzeń 5719
Źródłowy NETLOGON

Dla domeny domeny nie jest dostępny żaden kontroler domeny systemu Windows NT ani Windows 2000. Wystąpił następujący błąd:

Obecnie nie ma dostępnych serwerów logowania do obsługi żądania logowania.

Ponadto narzędzie Netdiag może wyświetlać następujące komunikaty o błędach:

  • Komunikat o błędzie 1

    Test listy kontrolerów domeny. . . . . . . . . . . : Niepowodzenie [OSTRZEŻENIE] Nie można wywołać metody DsBind do COMPUTERNAMEDC.domain.com (159.140.176.32). [ERROR_DOMAIN_CONTROLLER_NOT_FOUND]

  • Komunikat o błędzie 2

    Test protokołu Kerberos. . . . . . . . . . . : Błąd [KRYTYCZNY] Protokół Kerberos nie ma biletu dla elementu MEMBERSERVER$.] Dzienniki zdarzeń systemu Windows XP, które są objawami tego problemu, to SPNegotiate 40960 i Kerberos 10.

Więcej informacji

Ważna

W tej sekcji, metodzie lub w tym zadaniu podano informacje dotyczące modyfikowania rejestru. Niepoprawne zmodyfikowanie rejestru może jednak być przyczyną poważnych problemów. Dlatego należy uważnie wykonywać podane czynności. Dla większego bezpieczeństwa przed zmodyfikowaniem rejestru należy wykonać jego kopię zapasową. Dzięki temu będzie można przywrócić rejestr w przypadku wystąpienia problemu. Aby uzyskać więcej informacji na temat sposobu tworzenia kopii zapasowych, przywracania i modyfikowania rejestru, zobacz artykuł Tworzenie kopii zapasowych i przywracanie rejestru systemu Microsoft Windows.

Jeśli używasz protokołu UDP dla protokołu Kerberos, komputer kliencki może przestać odpowiadać (zawieszać się), gdy zostanie wyświetlony następujący komunikat: Ładowanie ustawień osobistych.

Domyślnie maksymalny rozmiar pakietów datagramów, dla których system Windows Server 2003 używa protokołu UDP, wynosi 1465 bajtów. W systemach Windows XP i Windows 2000 ta maksymalna wartość to 2000 bajtów. Protokół TCP (Transmission Control Protocol) jest używany dla dowolnego pakietu datagrampacket, który jest większy niż ten maksymalny. Maksymalny rozmiar pakietów datagramów, dla których jest używany protokół UDP, można zmienić, modyfikując klucz i wartość rejestru.

Domyślnie protokół Kerberos używa pakietów datagramów UDP bez połączenia. W zależności od różnych czynników, w tym historii identyfikatora zabezpieczeń (SID) i członkostwa w grupach, niektóre konta będą miały większe rozmiary pakietów uwierzytelniania Kerberos. W zależności od konfiguracji sprzętu wirtualnej sieci prywatnej (VPN) te większe pakiety muszą zostać pofragmentowane podczas przechodzenia przez sieć VPN. Problem jest spowodowany fragmentacją tych dużych pakietów protokołu Kerberos UDP. Ponieważ UDP jest protokołem bez połączenia, pofragmentowane pakiety UDP zostaną porzucone, jeśli dotrą do miejsca docelowego poza kolejnością.

Jeśli zmienisz wartość MaxPacketSize na wartość 1, wymusisz na kliencie użycie protokołu TCP do wysyłania ruchu Kerberos przez tunel VPN. Ponieważ TCP jest zorientowany na połączenie, jest to bardziej niezawodny środek transportu przez tunel VPN. Nawet jeśli pakiety zostaną porzucone, serwer ponownie zażąda brakującego pakietu danych.

Możesz zmienić wartość MaxPacketSize na 1, aby zmusić klientów do korzystania z ruchu Kerberos za pośrednictwem protokołu TCP. Aby to zrobić, wykonaj następujące kroki.

  1. Uruchom Edytor rejestru.

  2. Odszukaj, a następnie kliknij następujący podklucz rejestru: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters

    Uwaga

    Jeśli klucz Parameters nie istnieje, utwórz go teraz.

  3. W menu Edycja wskaż polecenie Nowy, a następnie kliknij polecenie Wartość DWORD.

  4. Wpisz MaxPacketSize, a następnie naciśnij klawisz ENTER.

  5. Kliknij dwukrotnie pozycję MaxPacketSize, wpisz 1 w polu Dane wartości , kliknij, aby wybrać opcję Dziesiętne , a następnie kliknij przycisk OK.

  6. Zamknij Edytor rejestru.

  7. Ponownie uruchom komputer.

Jest to rozwiązanie dla systemów Windows 2000, XP i Server 2003. System Windows Vista i nowsze używają wartości domyślnej "0" dla parametru MaxPacketSize, która wyłącza również używanie protokołu UDP dla klienta Kerberos.

Poniższy szablon jest szablonem administracyjnym, który można zaimportować do zasady grupy, aby umożliwić ustawienie wartości MaxPacketSize dla wszystkich komputerów z systemem Windows Server 2003, Windows XP lub Windows 2000. Aby wyświetlić ustawienia MaxPacketSize w zasady grupy object Redaktor, kliknij pozycję Pokaż zasady tylko w menu Widok, aby nie zaznaczono opcji Pokaż tylko zasady. Ten szablon modyfikuje klucze rejestru poza sekcją Zasady. Domyślnie zasady grupy Redaktor obiektu nie wyświetla tych ustawień rejestru.