Master & Slave
- Master&- Slave는 주,보조의 관계를 의미하며 동기화를 통해 DNS 서버를 이중화 할 수 있다- Slave 서버의 경우 여러 대 구성이 가능하다.
 
- 데이터가 동기화 되는 것은 Master 서버에서 관리하는 Zone Database에서만 가능하다.
DNS는 이중화 환경에서 일반적으로 사용되는 Active-Standby 또는 Active-Active 형태가 아닌 동기화 과정 을 통해
Master에 생성되어 있는 Zone 파일이 업데이트 되는대로 Slave로 전송된다.
- Master: DNS 설정 변경의 주체. 도메인 관련 정보에 대한 Zone 파일 관리
- Slave: Master 서버로부터 생성된 DNS 설정을 미러링하는 백업 서버 역할을 함. Master로부터 Zone 파일 복제.
이중화 실습
실습 환경
- OS: Ubuntu 22.04
1. Master 설정
1-1. BIND 패키지 설치
- bind: DNS 네임 서버 구축 및 레코드를 관리할 수 있도록 도와주는 패키지
sudo apt-get install -y bind91-2. hostname 변경
hostnamectl set-hostname dns.jaehyo.com1-3. /etc/bind/named.conf.options 파일 수정
- /etc/bind/named.conf.options: DNS 서버의 전반적인 동작 방식과 옵션을 정의함.
options {
        directory "/var/cache/bind";
        forwarders {
          8.8.8.8;
        };
        allow-query { any; }; # DNS 쿼리를 허용할 클라이언트 IP 대역
        allow-query-cache {   # 캐시된 응답에 대한 쿼리를 허용할 수 있는 클라이언트 IP 대역
          192.168.219.0/24;
        };
        //========================================================================
        // If BIND logs error messages about the root key being expired,
        // you will need to update your keys.  See https://www.isc.org/bind-keys
        //========================================================================
        dnssec-validation auto;
        listen-on-v6 { any; };
        listen-on port 53 { any; }; # DNS 53번 포트에 접근할 클라이언트 IP 대역
};named-checkconf 명령어를 사용하여 파일의 문법에 이상이 없는지 확인
named-checkconf /etc/bind/named.conf.options1-4. DNS zone 정보 추가
zone 파일 경로 추가 시 /etc/bind/named.conf에서 별도로 디렉토리 경로를 지정하지 않은 경우, /etc/bind/named.conf.default-zones 파일을 기준으로 zone 파일을 등록하게 된다.
vi를 이용하여 /etc/bind/named.conf.default-zone 파일 맨 아래에 아래 내용을 추가해주자.
# 정방향 zone
zone "jaehyo.com" IN {
    type master;
    file "/etc/bind/db.jaehyo.com.zone";
    allow-transfer { [Slave 서버 IP]; };
};
# 역방향 zone
zone "219.168.192.in-addr.arpa" IN {
    type master;
    file "/etc/bind/db.jaehyo.com.re";
    allow-transfer { [Slave 서버 IP]; };
};1-5. zone 파일 생성 및 권한 변경
# 해당 경로로 이동
$ cd /etc/bind
# 정방향 영역의 zone 파일 생성 및 권한 변경
$ cp db.local db.jaehyo.com.zone
$ chmod 644 db.jaehyo.com.zone
$ chown root.bind db.jaehyo.com.zone
# 역방향 영역의 zone 파일 생성 및 권한 변경
$ cp db.local db.jaehyo.com.re
$ chmod 644 db.jaehyo.com.re
$ chown root.bind db.jaehyo.com.re1-6. zone 파일 레코드 수정
정방향
# vi /etc/bind/db.jaehyo.com.zone
$TTL    1D
@       IN      SOA     jaehyo.com. root (
                              0         ; Serial
                              1D        ; Refresh
                              1H        ; Retry
                              1W        ; Expire
                              3H )      ; Negative Cache TTL
@       IN      NS      dns.jaehyo.com.
@       IN      NS      slave.jaehyo.com.
dns     IN      A       192.168.219.144 ; Master
slave   IN      A       192.168.219.174 ; Slave역방향
# vi /etc/bind/db.jaehyo.com.re
$TTL    1D
@       IN      SOA     jaehyo.com. root (
                              0         ; Serial
                              1D        ; Refresh
                              1H        ; Retry
                              1W        ; Expire
                              3H )      ; Negative Cache TTL
        IN      NS      dns.jaehyo.com.
        IN      NS      slave.jaehyo.com.
dns     IN      A       192.168.219.144 ; Master
slave   IN      A       192.168.219.174 ; Slave
144     IN      PTR     dns.jaehyo.com.
174     IN      PTR     slave.jaehyo.com.레코드 간단 설명
- IN:- IN(Internet)클래스 -> 기본값이기 때문에 생략 가능
- NS: 해당 도메인의 네임서버 지정하는 레코드
- A: 해당 도메인의 실제 주소 설정하는 레코드
- PTR: 해당 도메인에 대한 inverse 기능을 설정하기 위한 레코드. IP -> 도메인명 을 매핑하기 위해 사용.
1-7. DNS 설정 파일 오류 체크
named-checkconf /etc/bind/named.conf
named-checkconf /etc/bind/named.conf.default-zones
named-checkconf /etc/bind/db.jaehyo.com.zone
named-checkconf /etc/bind/db.jaehyo.com.re1-8. /etc/resolv.conf 등록
$ vi /etc/resolv.conf
nameserver 127.0.0.11-9. bind9 서비스 재기동
sudo systemctl restart bind9
sudo systemctl enable --now bind92. Slave 설정
- Master 설정의 1 ~ 3번 챕터까지는 동일하게 진행한다.
2-4. DNS zone 정보 추가
/etc/bind/zones.rfc1918 파일의 맨 아래에 해당 내용을 추가해주자.
# 정방향 zone
zone "jaehyo.com" IN {
    type slave;
    masters { [Master IP]; };
    file "/etc/bind/slaves/jaehyo.com.zone";
    masterfile-format text;  # Slave에서 zone 파일 동기화할 때 text 형태로 변환 하겠다는 의미
};
# 역방향 zone
zone "219.168.192.in-addr.arpa" IN {
    type slave;
    masters { [Master IP]; };
    file "/etc/bind/slaves/jaehyo.com.re";
    masterfile-format text; 
};2-5. /etc/resolv.conf 등록
$ vi /etc/resolv.conf
nameserver 127.0.0.12-6. bind9 서비스 재기동
sudo systemctl restart bind9
sudo systemctl enable --now bind93. DNS 테스트 (Client)
3-1. BIND 패키지 설치
sudo apt-get install -y dnsutils3-2. /etc/resolv.conf 수정
$ vi /etc/resolv.conf
nameserver 192.168.219.144      # master
nameserver 192.168.219.174      # slave3-3. nslookup 도메인 조회
nslookup [ hostname ] # IP 주소 반환하는지 테스트
nslookup [ IP 주소   ] # 도메인 주소 반환하는지 테스트