요약 (TL;DR)
간단히: Windows Server에 DNS 역할을 추가하고 Forward Lookup Zone을 만든 뒤 호스트(A/AAAA) 레코드를 추가하면 기본적인 이름 해석 환경을 구성할 수 있습니다. 보안(포트 53, DNSSEC), AD 통합, 그리고 테스트 명령(nslookup 또는 Resolve-DnsName)을 잊지 마세요.
소개
DNS(Domain Name System)는 도메인 이름을 IP 주소로 변환하는 서비스입니다. Windows Server에 DNS를 설치하면 내부 리소스와 인터넷 서비스 접근이 편리해집니다. 이 가이드는 GUI와 PowerShell 방법, 보안 및 운영 체크리스트, 문제 해결 흐름을 포함하여 실무에서 바로 쓸 수 있도록 구성했습니다.
사전 요구사항
- 서버 관리자 권한이 있는 계정
- Windows Server (2012 R2, 2016, 2019, 2022 등) 권장
- 네트워크 연결 및 고정 IP(권장)
- 방화벽 규칙에서 UDP/TCP 포트 53 허용
중요: DNS는 포트 53을 사용합니다. 내부 네트워크와 방화벽에서 해당 포트를 열어야 합니다.
단계별 가이드: GUI로 DNS 설치 및 구성
- 관리자 권한으로 Windows Server에 로그인합니다.
- 시작 메뉴에서 Server Manager를 실행합니다.
- Server Manager에서 오른쪽 상단의 Manage를 클릭하고 Add Roles and Features를 선택합니다.
- Role-based or feature-based installation을 선택하고 Next를 클릭합니다.
- 서버 풀에서 구성할 서버를 선택한 뒤 Next를 클릭합니다.
- 역할 목록에서 DNS Server에 체크하고, 필요한 경우 나타나는 추가 프롬프트를 확인한 후 Next를 클릭합니다.
- 선택 내용을 검토한 뒤 Install을 클릭합니다. 설치가 완료될 때까지 기다립니다.
- 설치 완료 후 Server Manager의 Tools > DNS를 통해 DNS Manager를 엽니다.
- DNS Manager에서 Forward Lookup Zones를 마우스 오른쪽 버튼으로 클릭하고 New Zone을 선택합니다. 마법사의 지시에 따라 프라이머리 존(Primary Zone)을 생성합니다.
- 존 이름(보통 도메인 이름)을 입력하고 존 유형으로 Primary Zone을 선택합니다.
- 존 생성 후 해당 존을 우클릭하고 New Host (A or AAAA)를 선택하여 호스트 레코드(A/AAAA)를 추가합니다.
참고: 내/외부 DNS 분리(split-horizon DNS)가 필요한 경우 전용 설계가 필요합니다.
PowerShell로 빠르게 설치하고 구성하기
다음 PowerShell 명령으로 DNS 역할을 설치할 수 있습니다.
Install-WindowsFeature -Name DNS -IncludeManagementTools
Add-DnsServerPrimaryZone -Name "example.local" -ZoneFile "example.local.dns" -DynamicUpdate Secure
Add-DnsServerResourceRecordA -Name "www" -ZoneName "example.local" -IPv4Address "10.0.0.10"
설명: - Install-WindowsFeature는 DNS 역할을 설치합니다. - Add-DnsServerPrimaryZone은 프라이머리 존을 만듭니다. - Add-DnsServerResourceRecordA는 A 레코드를 추가합니다.
DNS 구성 시 권장 설정과 보안
- 포트: DNS는 UDP 및 TCP 포트 53을 사용합니다. 내부/외부 방화벽과 네트워크 ACL에서 허용하세요.
- DNSSEC: 가능하면 DNSSEC을 사용해 응답 위·변조를 방지하세요(내부 도메인의 경우 계획 필요).
- 접근 제어: 관리자 전용 관리 인터페이스 접근을 제한하세요.
- 감사 로깅: 변경 이벤트를 로깅하고 정기 검토를 수행하세요.
중요: Active Directory 환경에서는 DNS가 AD 기능에 필수적입니다. AD 통합 DNS를 구성하면 보안 업데이트와 복제 모델을 활용할 수 있습니다.
테스트와 검증
- nslookup 또는 PowerShell의 Resolve-DnsName으로 쿼리 테스트:
nslookup www.example.local 10.0.0.2
Resolve-DnsName -Name www.example.local -Server 10.0.0.2
- 레코드가 즉시 보이지 않으면 TTL, 캐시(Flush-DNS), 포워더 설정을 점검하세요.
- 클라이언트에서 IP로 핑이 되는지 확인하여 이름 해석 후 네트워크 접근이 가능한지 검증합니다.
문제 발생 시 점검 순서(짧은 체크리스트)
- 네트워크 연결 및 DNS 서버 IP 확인
- 방화벽에서 포트 53이 열려 있는지 확인
- DNS 서비스가 실행 중인지 확인(서비스 이름: DNS)
- 존과 레코드가 존재하는지 확인
- 클라이언트의 DNS 설정(사용중인 DNS 서버 주소) 확인
- 캐시 초기화: ipconfig /flushdns
- 로그 파일 및 이벤트 뷰어 확인
역할별 체크리스트
- 시스템 관리자
- DNS 역할 설치 및 서비스 상태 모니터링
- 백업(존 파일) 주기적으로 수행
- 네트워크 관리자
- 방화벽 규칙(포트 53)과 라우팅 점검
- 외부 포워더/재귀 동작 정책 관리
- AD 관리자
- AD 통합 DNS 설정 및 복제 상태 모니터링
- DNS 관련 권한과 SRV 레코드 확인
보안 강화 권장 항목
- DNSSEC 도입(가능한 경우)
- 관리자 인터페이스에 대한 전용 관리 네트워크 사용
- DNS 캐시 포이즈닝 방지: 내부 정책 및 리졸버 설정 강화
- 정기 패치와 구성 감사
대체 접근 방법 및 언제 GUI보다 PowerShell을 쓰는가
- 대규모 배포 또는 자동화: PowerShell 스크립트로 다수 서버를 일괄 구성하세요.
- 변경 이력/버전 관리를 원할 때: IaC(인프라 코드) 방식으로 DNS 스크립트를 관리하면 더 안전합니다.
- 단일 수작업 설정: GUI가 직관적이라 신속한 테스트에 유리합니다.
자주 묻는 질문
DNS가 무엇인가요?
DNS는 도메인 이름을 IP 주소로 변환하는 시스템입니다. 사람이 읽기 쉬운 이름을 네트워크가 해석 가능한 숫자 주소로 매핑합니다.
Windows Server에서 DNS를 어떻게 구성하나요?
Server Manager에서 DNS Server 역할을 추가한 뒤 DNS Manager에서 Forward Lookup Zone을 만들고 호스트(A/AAAA) 레코드를 추가합니다. PowerShell로도 동일 작업을 자동화할 수 있습니다.
DNS 서버의 주요 유형은 무엇인가요?
주요 유형으로는 재귀 리졸버(Recursive Resolver), 루트 네임서버(Root), 최상위 도메인 서버(TLD), 권한 있는 네임서버(Authoritative Name Server)가 있습니다. 각각 질의 처리 단계에서 다른 역할을 합니다.
간단한 유지보수 SOP(일상 운영 가이드)
- 주간: 이벤트 로그 및 DNS 서비스 상태 확인
- 월간: 존 파일 백업 및 레코드 검토
- 변경 시: 변경 전 백업, 변경 적용, 검증 테스트(Resolve-DnsName) 실행
- 장애 시: 서비스 재시작 후 네트워크 및 포트(53) 점검
결정 트리: 어떤 존 유형을 선택할까
flowchart TD
A[새 존 생성] --> B{존 공개 여부}
B -- 내부 전용 --> C[Primary Zone 'AD 통합 권장']
B -- 공개 인터넷 용 --> D[Primary Zone '권한 있는 네임서버 구성']
C --> E{동적 업데이트 필요}
E -- 예 --> F[Secure Dynamic Update 설정]
E -- 아니오 --> G[정적 존 파일 관리]
용어 한 줄 정의
- 존(Zone): DNS 네임스페이스의 관리 단위입니다.
- A 레코드: 호스트 이름을 IPv4 주소에 매핑합니다.
- AAAA 레코드: 호스트 이름을 IPv6 주소에 매핑합니다.
- TTL: 레코드의 캐시 유효 시간입니다.
요약 및 다음 단계
Windows Server에 DNS를 설정하는 것은 비교적 단순하지만, 보안과 운영 정책을 함께 설계해야 합니다. 설치 후에는 테스트, 모니터링, 백업 정책을 반드시 마련하세요. AD 통합, DNSSEC, PowerShell 자동화는 다음 단계로 고려할 기능입니다.