다음을 통해 공유


DHCP 서버에서 "항상 동적으로 DNS 레코드 업데이트"를 사용하는 경우 예기치 않은 DNS 레코드 등록 동작

적용 대상: Windows 11, Windows 10, Windows 8.1

증상

Windows DHCP(동적 호스트 구성 프로토콜) 클라이언트와 Microsoft DHCP 서버를 사용하여 IP 주소를 할당하고 관리하는 인프라가 있습니다. DHCP 서버에서 아래 설정에 따라 DNS 동적 업데이트 사용을 선택하고 항상 DNS 레코드를 동적으로 업데이트합니다. 이 구성에서는 DHCP 서버가 A 레코드 및 PTR 레코드에 대한 동적 DNS 업데이트를 관리할 것으로 예상합니다. 그러나 클라이언트와 서버가 모두 DNS 레코드를 만드는 것을 관찰합니다. 구성에 따라 이 동작에는 다음과 같은 효과가 있습니다.

  • 비보안 및 보안 동적 업데이트에 대한 DNS 영역을 구성하는 경우 DHCP 서버가 레코드를 만든 다음 DHCP 클라이언트가 동일한 레코드를 삭제하고 다시 만드는 것을 볼 수 있습니다.
  • 보안 전용 동적 업데이트에 대한 DNS 영역을 구성하는 경우 DNS 레코드가 일치하지 않을 수 있습니다. DHCP 서버와 DHCP 클라이언트 모두 레코드를 만듭니다. 그러나 DHCP 서버는 DHCP 클라이언트가 만드는 레코드를 업데이트할 수 없으며 DHCP 클라이언트는 DHCP 서버에서 만든 레코드를 업데이트할 수 없습니다.

원인

IP 주소를 가져오기 위해 DHCP 클라이언트는 DHCP 요청 메시지를 DHCP 서버로 보냅니다. 일반적으로 이 메시지에는 클라이언트의 FQDN(정규화된 도메인 이름) 및 동적 DNS 업데이트 동작을 제어하는 플래그가 포함됩니다. 이 정보의 이름은 옵션 81 ( 클라이언트 FQDN 옵션이라고도 함)입니다.

참고

일부 이전 DHCP 클라이언트는 옵션 81을 사용하지 않습니다. 이러한 클라이언트에 대한 동적 업데이트를 제공하려면 업데이트를 요청하지 않는 DHCP 클라이언트(예: Windows NT 4.0을 실행하는 클라이언트) 옵션에 대해 DNS 레코드를 동적으로 업데이트할 수 있도록 DHCP 서버를 구성합니다.

DHCP 서버는 동적 DNS 업데이트 동작을 제어하는 옵션 81 플래그 집합도 저장합니다. DHCP DORA(Discover/Offer/Request/Acknowledge) 프로세스의 일부로 클라이언트와 옵션 81 플래그 값의 서버를 비교하여 DNS 업데이트를 담당하는 사용자를 결정합니다. 증상 섹션에 설명된 동작과 관련된 플래그의 이름은 O(재정의) 및 S(서버) 비트입니다. 플래그는 다음과 같이 작동합니다.

  • S = 0인 경우 클라이언트는 A 레코드를 업데이트해야 합니다.
  • S = 1인 경우 서버는 A 레코드를 업데이트해야 합니다.
  • 클라이언트가 요청에서 보내는 S 값이 서버의 S 값과 다른 경우 서버는 O 값을 1로 설정합니다.

RFC에 설명된 대로 요청 메시지에 대한 DHCP 서버의 회신에는 플래그 값이 포함되어야 합니다. 서버 메시지에서 O1 로 설정된 경우 클라이언트는 서버가 클라이언트의 S 값을 재정의하고 있음을 이해해야 합니다.

Windows 8.1 DHCP 클라이언트의 동적 DNS 업데이트 동작에 의도적으로 디자인 변경이 도입되었습니다. 이 변경은 이후 버전의 Microsoft 운영 체제에서 TCP/IP(전송 제어 프로토콜/인터넷 프로토콜) 스택의 지속적인 개발 및 향상을 지원합니다. Windows 8.1 이상 버전에서 DHCP 클라이언트는 DHCP 서버의 Option 81 OS 값을 적용하지 않습니다. 클라이언트가 A 레코드를 업데이트하도록 구성된 경우 서버가 A 레코드를 업데이트하도록 구성된 경우에도 이 작업을 계속 수행합니다. DHCP 관리 콘솔 항상 동적으로 DNS 레코드 업데이트를 선택하는 경우입니다.

동적 업데이트만 보안을 위해 DNS 영역을 구성하는 경우 DNS 레코드를 만든 엔터티(DHCP 클라이언트, DHCP 서버 또는 DHCP 서비스가 사용하도록 구성된 계정)만 해당 레코드를 업데이트하거나 삭제할 수 있습니다. DHCP 서버가 아닌 DHCP 클라이언트가 DNS 레코드를 만드는 경우 DHCP 서버는 나중에 해당 레코드를 수정할 수 없습니다.

참고

Microsoft의 DHCP 클라이언트는 사용자 인터페이스에서 클라이언트의 OS 값을 직접 설정하는 메서드를 제공하지 않습니다. 기본적으로 두 값은 모두 0입니다. DHCP 클라이언트 요청의 netsh 추적 을 기록하고 Netmon과 같은 도구를 사용하여 결과를 확인하여 값을 볼 수 있습니다.

Windows PowerShell cmdlet Get-DhcpServerv4OptionValue를 사용하여 DHCP 서버의 옵션 81 값을 볼 수 있습니다. 그러나 cmdlet은 이 값을 여러 다른 설정을 비트 값으로 결합하는 단일 정수로 보고합니다. 예를 들어 DHCP scope 속성 창의 DNS 탭에서 항상 동적으로 DNS 레코드 업데이트를 선택하면 S 값이 1로 설정됩니다. 그러나 cmdlet은 옵션 81에 대해 가능한 8가지 값 중 하나를 보고합니다. 이러한 모든 S1을 사용합니다=. 특정 값은 DNS 탭에서 만든 설정의 조합에 따라 달라집니다.

DHCP 클라이언트, DHCP 서버 및 DNS 서버 간에 동적 업데이트가 작동하는 방법에 대한 자세한 내용은 DNS 프로세스 및 상호 작용을 참조하세요.

해결 방법

아키텍처에서 Always를 사용하여 DNS 레코드를 동적으로 업데이트해야 하는 경우 클라이언트 컴퓨터에 레지스트리 키를 만들어 DHCP 클라이언트가 DHCP 서버 재정의를 적용하도록 강제할 수 있습니다.

중요

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

  1. 다음 하위 키로 이동합니다. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters

  2. 하위 키 아래에서 다음 항목을 만듭니다.

    • 이름: RegistrationOverwrite
    • 형식: REG_DWORD
    • 값: 2

    참고

    RegistrationOverwrite 에는 다음과 같은 가능한 값이 있습니다.

    • 0 - 덮어쓰지 않습니다.
    • 1 - DNS 클라이언트가 만든 레코드는 DHCP 서버에서 만드는 덮어쓰기 레코드입니다. 이 값은 기본값입니다.
    • 2 - DHCP 서버가 DNS 클라이언트가 만드는 덮어쓰기 레코드를 만드는 레코드).
  3. 클라이언트 컴퓨터를 다시 시작합니다.

  4. DNS 서버 관리 콘솔 앞으로 및 역방향 조회 영역을 검사. 특정 환경에 따라 DHCP 서버에 삭제 또는 변경 권한이 없는 A 및 PTR 레코드를 수동으로 삭제해야 할 수 있습니다.