리눅스/프로젝트 실습

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 도메인 질의에 대해 응답 완료.