Windows에서 Kerberos가 UDP 대신 TCP를 사용하도록 강제하는 방법

이 문서에서는 Kerberos가 UDP 대신 TCP를 사용하도록 강제 적용하는 방법을 설명합니다.

적용 대상: Windows 10 - 모든 버전, Windows Server 2012 R2
원래 KB 번호: 244474

요약

Windows Kerberos 인증 패키지는 Windows Server 2003, Windows Server 2008 및 Windows Vista의 기본 인증 패키지입니다. NTLM 챌린지/응답 프로토콜과 공존하며 클라이언트와 서버가 Kerberos를 협상할 수 있는 인스턴스에서 사용됩니다. RFC(주석 요청) 1510은 클라이언트가 KDC에 연결할 때 클라이언트가 KDC(키 배포 센터)의 IP 주소에서 포트 88에 UDP(사용자 데이터그램 프로토콜) 데이터그램을 보내야 한다고 명시합니다. KDC는 보낸 사람의 IP 주소에서 보내는 포트에 대한 회신 데이터그램으로 응답해야 합니다. 또한 RFC는 UDP가 시도되는 첫 번째 프로토콜이어야 한다고 명시합니다.

참고

RFC 4120은 이제 RFC 1510을 더 이상 사용하지 않습니다. RFC 4120은 KDC가 TCP 요청을 수락해야 하며 포트 88(10진수)에서 이러한 요청을 수신 대기해야 한다고 지정합니다. 기본적으로 Windows Server 2008 및 Windows Vista는 MaxPacketSize 기본값이 0이므로 Kerberos에 대해 먼저 TCP를 시도합니다. MaxPacketSize 레지스트리 값을 사용하여 해당 동작을 재정의할 수 있습니다.

UDP 패킷 크기에 대한 제한으로 인해 도메인 로그온 시 다음 오류 메시지가 발생할 수 있습니다.

이벤트 로그 오류 5719
원본 NETLOGON

도메인 도메인에는 Windows NT 또는 Windows 2000 도메인 컨트롤러를 사용할 수 없습니다. 다음 오류가 발생했습니다.

현재 로그온 요청을 서비스할 수 있는 로그온 서버가 없습니다.

또한 Netdiag 도구는 다음과 같은 오류 메시지를 표시할 수 있습니다.

  • 오류 메시지 1

    DC 목록 테스트. . . . . . . . . . . : 실패 [경고] DsBind를 에 호출할 COMPUTERNAMEDC.domain.com 수 없습니다(159.140.176.32). [ERROR_DOMAIN_CONTROLLER_NOT_FOUND]

  • 오류 메시지 2

    Kerberos 테스트. . . . . . . . . . . : 실패한 [FATAL] Kerberos에 MEMBERSERVER$에 대한 티켓이 없습니다.] 이 문제의 증상인 Windows XP 이벤트 로그는 SPNegotiate 40960 및 Kerberos 10입니다.

추가 정보

중요

이 절, 방법 또는 작업에는 레지스트리를 수정하는 방법에 대한 단계가 포함되어 있습니다. 그러나 레지스트리를 잘못 수정하면 심각한 문제가 발생할 수 있습니다. 따라서 다음 단계를 주의하여 수행해야 합니다. 추가된 보호를 위해 레지스트리를 수정하기 전에 백업하세요. 그런 다음 문제가 발생할 경우 레지스트리를 복원할 수 있습니다. 레지스트리를 백업 및 복원하는 방법에 대한 자세한 내용은 Windows에서 레지스트리를 백업 및 복원하는 방법을 참조하세요.

Kerberos에 UDP를 사용하는 경우 개인 설정 로드라는 메시지가 표시되면 클라이언트 컴퓨터에서 응답을 중지(중단)할 수 있습니다.

기본적으로 Windows Server 2003에서 UDP를 사용하는 데이터그램 패킷의 최대 크기는 1,465바이트입니다. Windows XP 및 Windows 2000의 경우 이 최대값은 2,000바이트입니다. TCP(Transmission Control Protocol)는 이 최대값보다 큰 모든 데이터그램 패키지에 사용됩니다. 레지스트리 키와 값을 수정하여 UDP를 사용하는 데이터그램 패킷의 최대 크기를 변경할 수 있습니다.

기본적으로 Kerberos는 연결 없는 UDP 데이터그램 패킷을 사용합니다. SID(보안 식별자) 기록 및 그룹 멤버 자격을 비롯한 다양한 요인에 따라 일부 계정에는 Kerberos 인증 패킷 크기가 더 커집니다. VPN(가상 사설망) 하드웨어 구성에 따라 VPN을 통과할 때 이러한 더 큰 패킷을 조각화해야 합니다. 이 문제는 이러한 큰 UDP Kerberos 패킷의 조각화로 인해 발생합니다. UDP는 연결 없는 프로토콜이므로 대상에 순서가 없으면 조각난 UDP 패킷이 삭제됩니다.

MaxPacketSize를 값 1로 변경하면 클라이언트가 TCP를 사용하여 VPN 터널을 통해 Kerberos 트래픽을 보내도록 강제합니다. TCP는 연결 지향이므로 VPN 터널을 통해 보다 안정적인 전송 수단입니다. 패킷이 삭제되더라도 서버는 누락된 데이터 패킷을 다시 요청합니다.

MaxPacketSize를 1로 변경하여 클라이언트가 TCP를 통해 Kerberos 트래픽을 사용하도록 강제할 수 있습니다. 이렇게 하려면 다음과 같이 하십시오.

  1. 레지스트리 편집기를 시작합니다.

  2. 레지스트리 하위 키 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters을(를) 찾아 클릭합니다.

    참고

    매개 변수 키가 없으면 지금 만듭니다.

  3. 편집 메뉴에서 새로 만들기를 가리킨 다음 DWORD 값을 클릭합니다.

  4. MaxPacketSize를 입력한 다음 Enter 키를 누릅니다.

  5. MaxPacketSize를 두 번 클릭하고 값 데이터 상자에 1을 입력하고 을 클릭하여 10진수 옵션을 선택한 다음 확인을 클릭합니다.

  6. 레지스트리 편집기를 종료합니다.

  7. Restart your computer.

이는 Windows 2000, XP 및 Server 2003에 대한 솔루션 방법입니다. Windows Vista 이상에서는 MaxPacketSize에 대해 기본값인 "0"을 사용합니다. 그러면 Kerberos 클라이언트에 대한 UDP 사용도 해제됩니다.

다음 템플릿은 Windows Server 2003, Windows XP 또는 Windows 2000을 실행하는 모든 엔터프라이즈 컴퓨터에 대해 MaxPacketSize 값을 설정할 수 있도록 그룹 정책 가져올 수 있는 관리 템플릿입니다. 그룹 정책 개체 편집기 MaxPacketSize 설정을 보려면 보기 메뉴에서 정책만 표시를 클릭하여 정책만 표시를 선택하지 않도록 합니다. 이 템플릿은 정책 섹션 외부에서 레지스트리 키를 수정합니다. 기본적으로 그룹 정책 개체 편집기 이러한 레지스트리 설정을 표시하지 않습니다.