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-DnsServer2. 방화벽 확인
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 Allow3. Forwarder 설정
내부 DNS가 모르는 외부 도메인은 forwarder로 넘길 수 있다. 운영망에서는 사내 상위 DNS를 넣는 것이 일반적이고, 실습망에서는 테스트용 upstream DNS를 사용할 수 있다.
$Forwarders = "8.8.8.8", "1.1.1.1"
Set-DnsServerForwarder -IPAddress $Forwarders
Get-DnsServerForwarder4. 클라이언트 DNS 서버 지정
클라이언트가 이 Windows DNS를 사용해야 테스트가 의미 있다. 클라이언트 또는 서버 자신에서 DNS 서버 주소를 지정한다.
Set-DnsClientServerAddress `
-InterfaceAlias "Ethernet" `
-ServerAddresses "192.168.10.198"
Get-DnsClientServerAddress -AddressFamily IPv45. 캐시 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-DnsServerStatistics6. 정방향 조회 영역 생성
실습에서는 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.1989. 문제 해결
| 증상 | 확인 지점 |
|---|---|
| 외부 도메인만 실패 | 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-DnsName과 Get-DnsServerResourceRecord로 현재 서버가 어떤 답을 제공하는지 직접 확인하는 습관이 중요하다.