본문 바로가기
리눅스

DNS 이중화

by Justin입니다. 2025. 4. 15.

 

Rocky Linux 8

버전

 

Master DNS

인바운드 

UDP 53 -> 질의

TCP 53  -> Zone Transfer ( zone 정보를 안전하게 전송해야 하기 때문에 신뢰성 기반의 TCP 사용) 

 

cat <<EOF>> /etc/named.rfc1912.zones 
zone "hyukjin.io" IN {
 type master;
  file "hyukjin.io.zone"; 
  allow-update { none; }; #dns 레코드는 수동으로만 수정 가능 / 클라이언트가 수정 불가
  allow-transfer { 10.10.46.31; }; # slave의 IP
};
EOF


cat <<EOF> /var/named/hyukjin.io.zone
$TTL 7200
hyukjin.io. IN SOA DNS01. admin.hyukjin.io. (
    2024061803 ; Serial
    7200 ; Refresh
    3600 ; Retry
    604800 ; Expire
    7200) ; NegativeCacheTTL

                   IN NS DNS01.
                   IN NS DNS02.

registry           IN A 10.10.46.7
registry-dashboard IN A 10.10.46.7
git                IN A 10.10.46.7
hyukjin.io.        IN A 10.10.46.7
www                IN CNAME hyukjin.io.
EOF

vi /etc/named.conf
> listen-on port 53 { any; };
> allow-query { any; };


chown named. /var/named/hyukjin.io.zone
systemctl enable --now named

 

 

$TTL 7200

TTL 값은 DNS 레코드가 다른 서버나 클라이언트에서 얼마나 오랫동안 캐시될지를 결정한다.

 

hyukjin.io IN SOA DNS01. admin.hyukjin.io (...)

SOA 레코드는 DNS존의 시작을 나타낸다.

DNS01 = 이 존을 담당하는 네임서버의 이름(호스트네임)

admin.hyukjin.io. = 이 존의 관리자 이메일 주소. 이메일의 @는 . 으로 바뀐다.

괄호 안에는 존의 설정 정보가 포함된다.

 

2024061803; Serial

Serial 번호는 DNS의 레코드 버전이다. 이 값은 존 파일에 변경 사항이 있을때마다 증가해야 하고, 다른 DNS서버들이 이를 확인할 수 있도록 한다. 일반적으로 날짜와 버전을 결합한 형태로 설정된다. ( YYYYMMDDnn)

 

7200; Refresh

다른 DNS 서버들이 이 서버를 얼마나 자주 업데이트 할지를 결정한다. 

 

3600; Retry

Refresh가 실패했을때, 다른 DNS서버가 다시 시도할 주기를 설정한다. 

 

604800; Expire

Expire는 해당 DNS 정보가 유효하지 않게 될 시간을 정의한다. 보통 1주일(604800초)로 설정한다.

Expire시간동안 DNS 정보가 갱신되지 않으면 이 정보는 더이상 유효하지 않다고 간주된다.

 

IN NS DNS01.

NS(Name Server) 레코드는 도메인을 관리하는 네임서버를 지정한다.

hyukjin.io 도메인을 관리하는 네임서버는 DNS01 이다.

 

IN NS DNS02.

또다른 NS 레코드로, hyukjin.io 도메인을 관리하는 두 번째 네임서버는 DNS02 이다.

 

registry IN A10.10.46.7

A 레코드는 도메인 이름을 특정 IP 주소로 매핑한다. 

 

www IN CNAME hyukjin.io

CNAME 레코드는 도메인 이름을 다른 도메인 이름으로 리다이렉트한다.

www.hyukjin.io hyukjin.io로 리다이렉트 되며, 이로인해 www.hyukjin.io를  입력하면 자동으로 hyukjin.io와 동일한 IP 주소로 연결된다.

 

  

 

슬레이브 노드

cat <<EOF>> /etc/named.rfc1912.zones 
zone "hyukjin.io" IN {
  type slave;
  file "/var/named/slaves/hyukjin.io.zone";
  masters { 10.10.46.30; }; # 마스터의 IP 주소
};
EOF

vi /etc/named.conf
> listen-on port 53 { any; };
> allow-query { any; };

systemctl enable --now named

정상적으로 SLAVE DNS 서버가 작동하면 /var/named/slaves/hyukjin.io.zone 에 아래와 같은 파일이 생성되고 SLAVE DNS의 역할을 시작한다.

 

 

 

 

 

 

/var/named/slaves/hyukjin.io.zone 의 file 형식이 data 로 조회된다면 아래의 게시글 참고

bind의 기본설정은 master file 을 바이너리 포맷으로 전송하기 때문에 슬레이브 서버에서 

masterfile-format text; 옵션을 /etc/named.conf 에 추가 해줘야 ASCII 형태로 전송이 된다.

 

 

 

 

 

 

'리눅스' 카테고리의 다른 글

K8S Flannel CNI 통신  (0) 2025.04.17
DNS Zone 파일  (0) 2025.04.15
ls 명령어를 하면 무슨일이 일어날까  (0) 2025.04.02
systemctl enable  (0) 2025.04.02
Redis Master/Slave + HAProxy  (0) 2025.03.18