리눅스/프로젝트 실습
Ubuntu(20.04) DNS 서버 구성(with PNetLab 실습)
CBROJIN
2025. 5. 28. 08:27
🧩 전체 토폴로지
🧩 실습 구성 개요
- 목표: 내부 DNS 서버를 구축하여 www.network.local --> 192.168.50.4로 해석되도록 설정
- 서버 정보:
- DNS 서버 IP: 192.168.50.3 (ens4)
- 도메인: network.local
- 웹 서버 IP: 192.168.50.4
Step 1. BIND9 설치
sudo apt update
sudo apt install bind9 -y
Step 2. BIND9 실행 상태 확인 및 자동 시작 설정
sudo systemctl status bind9 # 서비스 실행 확인 (active (running))
sudo systemctl enable named.service # 부팅 시 자동 실행되도록 설정(bind9는 alias이므로 named.service로 등록해야 함)

# sudo systemctl status bind9 상태 확인과 Unit의 이름을 알 수 있습니다.
Step 3. 네트워크 설정(netplan)
sudo nano /etc/netplan/00-installer-config.yaml
Step 4. 도메인 zone 등록
sudo nano /etc/bind/named.conf.local # 내가 직접 관리할 도메인(zone)을 선언할 때 여기에 추가 한다.
1. zone "network.local"
내가 직접 운영할 도메인 이름이 "network.local"이라는 뜻입니다.
즉, 누군가 ns1.network.local 이런 이름을 질의하면, 이 DNS 서버가 응답해줄 수 있게 준비하는 것.
2. type master;
이 DNS 서버가 network.local 도메인의 "주(master) 서버" 역할을 하겠다는 의미입니다.
즉, 이 도메인에 대한 모든 IP 매핑 정보(A 레코드, NS 레코드 등)를 직접 가지고 있음을 선언하는 것.
3. file "/etc/bind/db.network.local";
이 도메인의 레코드 정보들이 저장된 실제 파일 경로 입니다.
Step 5. Zone 파일 생성 및 설정
sudo cp /etc/bind/db.local /etc/bind/db.network.local # 기본 템플릿 복사해서 우리 도메인용으로 사용
sudo nano /etc/bind/db.network.local
- $TTL 604800: 모든 레코드에 대해 기본 TTL을 604800초(= 7일)로 지정.
- @: 현재 zone 이름(network.local)을 의미.
- SOA: 이 zone의 시작점 정의.
- ns1.network.local.: 이 도메인을 관리하는 권한 있는 DNS 서버 이름.
- admin.network.local.: DNS 관리자의 메일 주소 (admin@network.local 의미)
- Serial (파일 변경 시 마다 증가)
- Refresh: 슬레이브가 마스터에 재요청하는 주기 (7일)
- Retry: 재시도 주기 (1일)
- Expire: 슬레이브가 마스터 접근 실패 시 폐기 시점 (28일)
- Negative TTL: 도메인 없음 응답 캐시 시간
Step 6. 설정 구문 검사 및 재시작
sudo named-checkconf # 전체 설정 문법 확인 (출력 없음 = 성공)
sudo named-checkzone network.local /etc/bind/db.network.local # zone 파일 문법 검사
sudo systemctl restart bind9
Step 7. 서버 내부 및 윈도우 클라이언트 테스트
DNS 서버가 network.local 도메인 질의에 대해 응답 완료.