오늘은 named service를 이용하여 DNS Master/Slave 서버 구축 및 설정 방법에 대한
포스팅을 하려고 합니다.
먼저 Master/Slave 서버 구축하기에 앞서 2개의 VM 또는 서버에
DNS의 서버의 기본적인 구축이 되어 있어야 합니다.
기본적인 구축이 되어있지 않으신분들은 아래 링크를 먼저 진행하고
이어서 진행하시기 바랍니다.
[Develope/Linux] - [Linux] 리눅스 DNS 서버 구축하기 - bind, named
2개의 DNS 서버가 구축이 되었다면, master/slave로 동작하도록
설정해보겠습니다.
저는 Oracle VM VirtualBox를 이용하여 2개의 VM CentOS 7.9v 환경에서
진행하였습니다.
1. Master Server
named.rfc1912.zones 파일을 열어서
slave에 대한 IP를 지정하도록 합니다.
slave를 지정하는 방식과 특징은 다음과 같이 3가지가 있습니다.
allow-update - IP가 아닌 key로 통신 지정 가능, IP가 아닌 192.168.64.0/24 형태의 네트워크 대역으로 사용 가능하고, IP를 지정하여 사용 가능, serial number과 refresh 주기를 기준으로 slave zone파일이 추가 변경이 됩니다.
allow-transfer - 복수의 slave IP를 지정할 수 있으며, 인가되지 않은 사용자에게 유출을 막기 위해 사용 합니다.
also-notify - zone에 있는 serial number 변경값에 따라 slave 서버에 실시간으로 zone파일이 추가 변경 가능합니다.
저는 zone의 serial의 변경에 따라 slave에 추가 변경을 하기 위해 also-notify를 사용하였습니다.
// vi /etc/named.rfc1912.zones
...
//zone "[domain]" IN {
// type master;
// file "[/var/named/zone_file]";
// also-notify { [slave_server_IP]; };
//};
zone "bono915.com" IN {
type master;
file "/var/named/bono915.com.zone";
also-notify { 192.168.56.142; };
};
기본적으로 53 port를 사용하기 때문에 방화벽을 사용하지 않아도 된다면 방화벽을 끄고
방화벽을 사용해야 한다면 tcp/udp 53 포트를 등록하도록 합니다.
// 1) 방화벽을 사용하지 않을 경우
systemctl stop firewalld
systemctl diable firewalld
// 2) 방화벽을 사용할 경우
firewall-cmd --permanent --zone=public --add-port=53/tcp
firewall-cmd --permanent --zone=public --add-port=53/udp
firewall-cmd --reload
2. Slave Server
named.rfc1912.zones 파일을 열어서 master 서버에 대한 IP 등록 및
slaves 디렉토리에 저장될 파일을 지정하도록 합니다.
// vi /etc/named.rfc1912.zones
//zone "[domain]" IN {
// type slave;
// file "[slaves/zone_file]";
// masters { [master_IP]; };
//};
zone "bono915.com" IN {
type slave;
file "/var/named/slaves/bono915.com.zone";
masters { 192.168.56.141; };
};
master로부터 가져온 zone 파일은 data파일이기 때문에 편집기를 열었을때 내용을 확인하기 어렵습니다.
내용을 쉽게 볼 수 있도록 named.conf options에 masterfile-format text; 를 넣어주도록 하겠습니다.
// vi /etc/named.conf
options {
...
masterfile-format text;
...
}
master server에서 설정한 것과 같이 동일하게 방화벽 설정을 하도록 합니다.
// 1) 방화벽을 사용하지 않을 경우
systemctl stop firewalld
systemctl diable firewalld
// 2) 방화벽을 사용할 경우
firewall-cmd --permanent --zone=public --add-port=53/tcp
firewall-cmd --permanent --zone=public --add-port=53/udp
firewall-cmd --reload
master server 및 slave server의 작업이 끝났다면
양쪽 서버다 service named restart를 하고
slave 서버에서
/var/named/slaves/ 경로에 master에서 생성한 zone 파일이 동기화 되었는지 확인합니다.
파일이 존재한다면 정상적으로 변경된 것을 확인 할 수 있습니다.
//master server & slave server
service named restart
//slave server에서 확인
ls -al /var/named/slaves/
master server -> slave server로 추가 변경은 되지만 삭제는 되지 않습니다.
변경에 대한 부분은 master에서 생성한 zone 파일의 serial의 값을 +1씩 올려서 파일을 수정해주어야
slave server 에서 master server의 zone 변경에 대한 내용을 인지하고 업데이트를 진행합니다.
개인적인 생각으로는 추가 변경만 있고 삭제가 없기 때문에
NFS와 같은 파일 공유가 더 낫지 않나 하는 생각도 듭니다.
혹시라도 삭제에 대한 동기화 방법을 알고계시다면 댓글로 달아주시면 감사하겠습니다.
지금까지 Linux named DNS Master/Slave 서버 구축 및 동기화 설정 방법에 대한
포스팅이였습니다.
'Develope > Linux' 카테고리의 다른 글
[Linux] SELinux is preventing {directory} from read access on the file {filename}오류 해결 방법 (0) | 2022.03.31 |
---|---|
[Linux] No route to host 오류 해결 방법 (0) | 2022.03.21 |
[Linux] /bin/bash^M: bad interpreter 오류 해결방법 (0) | 2022.03.11 |
[Linux] server can't find [domain]: NXDOMAIN 이슈 해결 방법 (0) | 2022.03.10 |
[Linux] 리눅스 DNS 서버 구축하기 - bind, named (3) | 2022.03.08 |