CAB TA 4기 21일차의 기록

Urban Jungle·2025년 4월 9일

CAB TA 4기

목록 보기
21/28

DNS Zone & Zone File 정리

DNS Zone 이란?

  • DNS 정보를 관리하기 위한 논리적인 단위
  • 계층적으로 구성 (root → TLD → subdomain)
  • Zone = 하나의 도메인에 대한 DNS 관리 범위
  • 각 Zone은 다른 관리자가 관리 가능
  • 하나의 도메인 안에서도 Zone을 나누어 관리 가능

Zone 파일이란?

  • 텍스트 형식의 설정 파일
  • 해당 Zone에 대한 DNS 레코드(RR)를 포함함
  • DNS 서버가 이를 데이터베이스처럼 참조

Zone 파일 구성 요소

시작: SOA (Start of Authority) 레코드

  • Zone의 시작을 알림
  • 마스터/슬레이브 서버 간 Zone Transfer 기준 정보 제공
@   IN  SOA ns1.example.com. admin.example.com. (
        2025042801 ; serial
        3600       ; refresh (1시간)
        1800       ; retry (30분)
        604800     ; expire (7일)
        86400 )    ; minimum TTL (1일)

serial: 변경 시마다 증가 (슬레이브는 이걸 기준으로 동기화 여부 판단)
refresh: 슬레이브가 마스터에게 변경 확인 주기
retry: 실패했을 경우 재시도 주기
expire: 마스터와의 연결이 끊긴 후 슬레이브가 데이터를 폐기할 시간
minimum TTL: 캐시 수명

그 외 레코드들

NS(Name Server): 권한 있는 네임서버

A: IPv4 주소

AAAA: IPv6 주소

MX: 메일 서버

CNAME: 별칭

PTR: 역방향 주소 매핑

TXT: 인증 및 설명 정보 (ex. SPF, DKIM)

Zone 파일 취득 방법

자체 운영 중인 DNS 서버

  • 경로: /var/named/도메인명.zone

호스팅 제공 업체 이용 시

  • 관리자 웹페이지에서 Zone File Export 기능 사용

SOA 레코드 & 실습 예시

SOA 레코드란?

  • Start of Authority
  • DNS Zone의 시작점을 알리는 레코드
  • Zone 파일 내 가장 먼저 위치
  • Primary(마스터) DNS 서버의 정보와 슬레이브 DNS의 동기화 기준을 포함

SOA 레코드 구조

$TTL 3H
@  3600 IN  SOA  ns.icann.org. noc.dns.icann.org. (
           2020080302  ; Serial
           7200        ; Refresh
           3600        ; Retry
           1209600     ; Expire
           3600 )      ; Minimum TTL

ns.icann.org.: Primary 네임서버
noc.dns.icann.org.: 관리자 이메일 → noc@dns.icann.org
2020080302: 시리얼 번호 (slave 서버가 최신 Zone 정보를 갖고 있는지 판단 기준)
7200 (2시간): Refresh – 슬레이브가 마스터에 변경사항 확인 주기
3600 (1시간): Retry – 마스터 응답 실패 시 재시도 시간
1209600 (14일): Expire – 슬레이브가 마스터로부터 응답 못 받을 경우 zone 폐기 시간
3600 (1시간): Minimum TTL – 레코드를 캐시하는 기본 시간

실습: dig 명령으로 SOA 조회

blog.naver.com 의 SOA 레코드

$ dig blog.naver.com SOA

결과

;; AUTHORITY SECTION:
nheos.com. 180 IN SOA gns1.nheos.com. hostmaster.nheos.com. 2021081901 10800 3600 604800 180

gns1.nheos.com.: Primary DNS
hostmaster.nheos.com.: 관리자 이메일 → hostmaster@nheos.com
10800: Refresh → 3시간
3600: Retry → 1시간
604800: Expire → 7일
180: TTL → 180초 (캐시 유지 시간)

naver.com 의 SOA 레코드

$ dig naver.com SOA

결과

;; ANSWER SECTION:
naver.com. 300 IN SOA ns1.naver.com. webmaster.naver.com. 2021082001 21600 1800 1209600 180

ns1.naver.com.: Primary DNS
webmaster.naver.com.: 관리자 이메일 → webmaster@naver.com
21600: Refresh → 6시간
1800: Retry → 30분
1209600: Expire → 14일
180: TTL → 180초


DNS 레코드 종류 및 설명

A :IPv4 주소를 도메인에 매핑 (예: example.com → 123.45.67.89)
AAAA: IPv6 주소를 도메인에 매핑 (예: example.com → 2001:0db8::1)
CNAME: 도메인의 별칭 설정 (예: www.example.com → example.com)
MX: 메일 서버 주소 지정 (@example.com 이메일을 어떤 서버로 전달할지 정의)
PTR: IP → 도메인 역방향 질의용 (메일 수신 측에서 발신 서버의 신뢰 검증용)
TXT: 도메인 관련 정보 텍스트로 저장 (예: SPF, DKIM, DMARC 정책 등)
NS: 도메인을 관리하는 네임서버 지정 (example.com → ns1.example.com)
URL: 도메인을 특정 URL로 리디렉션 (HTTP 리디렉션 방식)
Framed URL: URL 리디렉션 + 주소창에 원래 도메인 그대로 유지 (프레임 내 로딩)


DNS 서버 구성 순서

패키지 설치

yum -y install bind bind-utils

네트워크 설정

  • 고정 IP 주소 설정 (예: 192.168.56.100)
  • DNS 서버 주소는 /etc/resolv.conf 또는 nmcli로 설정
  • hostnamectl set-hostname dns-server.cccr.org

설정 파일 편집

  • 메인 설정: /etc/named.conf
  • Zone 파일 경로: /var/named/도메인.zone

서비스 시작 및 활성화

systemctl start named
systemctl enable named

방화벽 포트 오픈

firewall-cmd --add-service=dns --permanent
firewall-cmd --reload


DNS 도메인 확인 명령어

nslookup www.naver.com: 도메인 이름 → IP 주소 확인
nslookup> 10.0.2.100: IP 주소 → 도메인 확인
host www.naver.com: 도메인 정보 요약 출력
host -t A www.naver.com: A 레코드 정보 조회
host -t PTR 10.0.2.100: PTR 레코드 조회 (역방향 DNS)
dig www.naver.com: 상세 DNS 질의 결과 출력
dig -x 10.0.2.100: 역방향 질의


DNS 서버 구성 실습

초기 세팅

패키지 설치

dnf -y install bind bind-utils

방화벽 포트 오픈

firewall-cmd --add-service=dns --permanent
firewall-cmd --reload

네트워크 설정

ip addr add 10.0.2.10/24 dev ethX
hostnamectl set-hostname dns.test.example.com

named.conf 설정 (정방향)

vi /etc/named.conf

options {
    listen-on port 53 { any; };
    listen-on-v6 port 53 { none; };
    directory       "/var/named";
    allow-query     { any; };
};

zone "test.example.com" IN {
    type master;
    file "test.example.com.zone";
};

정방향 zone 파일 생성

cd /var/named
cp named.empty test.example.com.zone
vi test.example.com.zone

$TTL 3H
@   IN  SOA test.example.com. root.test.example.com. (
            0       ; serial
            1D      ; refresh
            1H      ; retry
            1W      ; expire
            3H )    ; minimum

    NS      dns.test.example.com.
    A       10.0.2.2
dns     A   10.0.2.10
www     A   10.0.2.20
ftp     A   10.0.2.30
mail    A   10.0.2.40
blog    A   10.0.2.50

chmod 660 test.example.com.zone
chown :named test.example.com.zone

역방향 zone 구성

vi /etc/named.conf

zone "2.0.10.in-addr.arpa" IN {
    type master;
    file "10.0.2.0.zone";
};

cp test.example.com.zone 10.0.2.0.zone
vi 10.0.2.0.zone

$TTL 3H
@   IN  SOA test.example.com. root.test.example.com. (
            0       ; serial
            1D      ; refresh
            1H      ; retry
            1W      ; expire
            3H )    ; minimum

    NS      dns.test.example.com.
    A       10.0.2.2

10  PTR dns.test.example.com.
20  PTR www.test.example.com.
30  PTR ftp.test.example.com.
40  PTR mail.test.example.com.
50  PTR blog.test.example.com.

chmod 660 10.0.2.0.zone
chown :named 10.0.2.0.zone

서비스 시작

systemctl enable named --now


Master / Slave 구성

마스터 DNS 설정 변경

vi /etc/named.conf

zone "test.example.com" IN {
    type master;
    file "test.example.com.zone";
    allow-transfer { 10.0.2.101; };
};

zone "2.0.10.in-addr.arpa" IN {
    type master;
    file "10.0.2.0.zone";
    allow-transfer { 10.0.2.101; };
};

zone 파일 변경

vi /var/named/test.example.com.zone

    NS  dns.test.example.com.
    NS  slave.test.example.com.
    ...
slave   A   10.0.2.101

vi /var/named/10.0.2.0.zone

    NS  dns.test.example.com.
    NS  slave.test.example.com.
    ...
101 PTR slave.test.example.com.

Slave DNS 서버 구성 실습

패키지 설치

dnf -y install bind bind-utils

네트워크 및 호스트 설정

nmcli con mod ethX ipv4.addresses 10.0.2.101/24
nmcli con mod ethX ipv4.method manual
nmcli con mod ethX ipv4.gateway ""
nmcli con mod ethX ipv4.dns 10.0.2.10
nmcli con up ethX

hostnamectl set-hostname slave.test.example.com

named.conf 설정 (Slave DNS)

vi /etc/named.conf

options {
    listen-on port 53 { any; };
    listen-on-v6 port 53 { none; };
    directory       "/var/named";
    dump-file       "/var/named/data/cache_dump.db";
    statistics-file "/var/named/data/named_stats.txt";
    memstatistics-file "/var/named/data/named_mem_stats.txt";
    recursing-file  "/var/named/data/named.recursing";
    secroots-file   "/var/named/data/named.secroots";
    allow-query     { any; };
};

zone "test.example.com" IN {
    type slave;
    masters { 10.0.2.10; };
    file "slaves/test.example.com.zone";
    notify no;
};

zone "2.0.10.in-addr.arpa" IN {
    type slave;
    masters { 10.0.2.10; };
    file "slaves/10.0.2.0.zone";
    notify no;
};

서비스 실행 및 방화벽

systemctl enable named --now

firewall-cmd --add-service=dns --permanent
firewall-cmd --reload

슬레이브 zone 파일 복사 확인

ls /var/named/slaves/

  • 마스터에서 allow-transfer 설정이 되어 있고 연결이 잘 되었으면 test.example.com.zone, 10.0.2.0.zone 파일이 자동으로 생성됨

클라이언트 테스트

nmcli con mod static +ipv4.dns 10.0.2.101

host dns.test.example.com 10.0.2.101


profile
똑똑해지고 싶은 공학도

0개의 댓글