Windows Server DNS 서버 구성 가이드

Windows Server DNS 구성 가이드입니다. DNS 역할 설치, 방화벽, forwarder, 캐시 DNS와 권한 DNS 차이, zone/A record 생성과 Resolve-DnsName 검증을 정리했습니다.

Windows Server DNS 서버 구성 가이드

DNS 서버는 이름을 IP 주소로 해석해 주는 핵심 인프라다. Windows Server의 DNS 역할을 설치하면 단순 캐시 네임서버로도 사용할 수 있고, 직접 관리하는 내부 도메인 zone을 가진 권한 DNS 서버로도 사용할 수 있다.

실습은 Server Manager GUI 기준으로 DNS 역할 설치, 서비스 확인, nslookup 테스트, 정방향 조회 영역 생성 흐름을 다뤘다. 여기서는 같은 작업을 PowerShell 명령과 검증 절차까지 포함해 정리한다.

캐시 DNS와 권한 DNS 구분

구분설명예시
캐시 DNS클라이언트 질의를 받아 외부 DNS로 재귀 질의하고 결과를 캐시한다.내부 PC가 인터넷 도메인을 빠르게 해석
권한 DNS직접 소유한 zone의 정답 record를 제공한다.st12.xyz zone의 www A record 관리
Forwarder외부 이름 해석을 넘길 upstream DNS 서버다.사내 상위 DNS 또는 ISP DNS

1. DNS 역할 설치

관리자 PowerShell에서 DNS Server 역할과 관리 도구를 설치한다.

Install-WindowsFeature -Name DNS -IncludeManagementTools
Get-WindowsFeature -Name DNS

서비스 상태를 확인한다.

Get-Service DNS
Get-DnsServer

2. 방화벽 확인

DNS는 기본적으로 UDP/53과 TCP/53을 사용한다. 역할 설치 시 규칙이 생성되지만, 랩에서는 명령으로 확인해 둔다.

Get-NetFirewallRule |
 Where-Object DisplayGroup -like "*DNS*" |
 Select-Object DisplayName, Enabled, Direction, Action

필요하면 명시적으로 열 수 있다.

New-NetFirewallRule `
 -DisplayName "DNS UDP 53 Inbound" `
 -Direction Inbound `
 -Protocol UDP `
 -LocalPort 53 `
 -Action Allow

New-NetFirewallRule `
 -DisplayName "DNS TCP 53 Inbound" `
 -Direction Inbound `
 -Protocol TCP `
 -LocalPort 53 `
 -Action Allow

3. Forwarder 설정

내부 DNS가 모르는 외부 도메인은 forwarder로 넘길 수 있다. 운영망에서는 사내 상위 DNS를 넣는 것이 일반적이고, 실습망에서는 테스트용 upstream DNS를 사용할 수 있다.

$Forwarders = "8.8.8.8", "1.1.1.1"
Set-DnsServerForwarder -IPAddress $Forwarders
Get-DnsServerForwarder

4. 클라이언트 DNS 서버 지정

클라이언트가 이 Windows DNS를 사용해야 테스트가 의미 있다. 클라이언트 또는 서버 자신에서 DNS 서버 주소를 지정한다.

Set-DnsClientServerAddress `
 -InterfaceAlias "Ethernet" `
 -ServerAddresses "192.168.10.198"

Get-DnsClientServerAddress -AddressFamily IPv4

5. 캐시 DNS 동작 확인

Resolve-DnsName www.microsoft.com -Server 192.168.10.198
nslookup www.microsoft.com 192.168.10.198

캐시 상태와 서버 통계를 볼 수 있다.

Get-DnsServerCache | Select-Object -First 20
Get-DnsServerStatistics

6. 정방향 조회 영역 생성

실습에서는 st12.xyz 하위 도메인을 직접 관리하는 권한 DNS 서버 구성을 했다. 아래는 file-backed primary zone 예시다.

Add-DnsServerPrimaryZone `
 -Name "st12.xyz" `
 -ZoneFile "st12.xyz.dns"

Get-DnsServerZone | Where-Object ZoneName -eq "st12.xyz"

7. A record 추가

테스트 host record를 추가한다. 예시처럼 gateway 정보를 테스트 record로 넣을 수 있지만, 실제 운영에서는 서비스 이름과 실제 서버 IP를 정확히 매핑한다.

Add-DnsServerResourceRecordA `
 -ZoneName "st12.xyz" `
 -Name "gw" `
 -IPv4Address "192.168.10.1"

Add-DnsServerResourceRecordA `
 -ZoneName "st12.xyz" `
 -Name "web01" `
 -IPv4Address "192.168.10.199"

Get-DnsServerResourceRecord -ZoneName "st12.xyz"

8. 권한 DNS 질의 확인

Resolve-DnsName gw.st12.xyz -Server 192.168.10.198
Resolve-DnsName web01.st12.xyz -Server 192.168.10.198

nslookup gw.st12.xyz 192.168.10.198
nslookup web01.st12.xyz 192.168.10.198

9. 문제 해결

증상확인 지점
외부 도메인만 실패forwarder, recursion, 인터넷 라우팅, 방화벽 확인
내부 zone만 실패zone 생성 여부, record 이름, 클라이언트 DNS 서버 주소 확인
서버에서는 되지만 클라이언트에서 실패Windows Firewall, VLAN, UDP/TCP 53 통신 확인
이전 IP가 계속 나옴client cache, server cache, record TTL 확인
Clear-DnsClientCache
Clear-DnsServerCache -Force
Resolve-DnsName web01.st12.xyz -Server 192.168.10.198

정리

Windows DNS는 역할 설치만으로 끝나지 않는다. 서비스, 방화벽, forwarder, 클라이언트 DNS 설정, zone, record, 질의 결과를 모두 확인해야 한다. 캐시 DNS로 쓸 때와 권한 DNS로 쓸 때의 목적이 다르므로, Resolve-DnsNameGet-DnsServerResourceRecord로 현재 서버가 어떤 답을 제공하는지 직접 확인하는 습관이 중요하다.

문서 링크

BGM EVER