Linux

[Linux] CentOS 6.8 DNS Server 구축하기(Primary & Secondary Server 구축, Zone Transfer)

프로필

2017. 5. 2. 19:59

이웃추가

오늘은 Linux에 DNS Server를 구축해보겠다.


구축 환경은 PC 2대를 사용하여


VMware 12Pro에


CentOS 6.8 64bit 운영체제에 각각


Primary & Secondary DNS 서버를 구축하고


Primary에서 Secondary로 Zone Transfer가 정상적으로 일어나는지 확인한다.


우선 Primary DNS Server를 구축해 보겠다.



VMware 네트워크는 Bridge로 설정하여 다른 VMware의 Linux와 다른 PC의 Linux가 통신이 가능하도록 설정해주도록 하겠다.


Primary DNS Server의 IP 주소는 192.168.46.10이다.




DNS 서버 구동을 위해


Bind 패키지를 yum을 통해 설치해준다.


 


#yum -y install bind*


이렇게 명령을 내려주면


bind에 관련된 모든 패키지가 설치된다.


패키지가 설치되면


기본 환경설정을 해준다.


첫번째, #vi /etc/resolv.conf 파일을 설정해준다.


이 파일은 DNS 서버를 지정하는 파일인데


만약 자신이 DNS 서버라면 자신의 IP를 넣어주면 된다.


 


 


위와 같이 설정해준다.


192.168.46.10은 현재 Linux의 IP


두번째, /etc/named.conf를 설정한다.


이 파일은 간단히 말하면 포트를 열어주는 파일이다.


어떤 IP에게 DNS 쿼리를 허용할 것인지 설정해주는 파일이다.


#vi /etc/named.conf


 


빨간색 네모박스 부분을 any로 바꿔준다.



세번째, zone file 설정


#vi /etc/named.rfc1912.zones


zone 파일의 이름과 master/slave 등을 설정하는 파일이다.


 


linux.com에 관한 내용은 정방향


즉, Domain Name을 IP로 바꿀 때 사용하는 설정 내용이고


46.168.192.in-addr.arpa는 역방향


즉, IP로 Domain Name을 찾아올 때 사용하는 내용이다.


type은 master/slave 중에 하나라는 것을 나타내고


file은 zone파일의 이름을 나타낸다

(/var/named/ 에서 위에 입력한 zone 파일을 찾는다.)


allow-update는 zone 파일의 내용이 바뀌었을 때, slave에서 업데이트를 허용할 것인지 설정하는 곳이다.


위와 같이 맨 아랫줄에 입력해주고 저장하고 나간다.




네번째, /var/named/에 zone 파일을 생성한다.


 


/var/named/ 로 이동


그리고


named.localhost 파일을 복사한다.


 


복사 완료


아까 named.rfc1912.zone에 설정한 정방향 file 뒤의 이름과 동일해야 한다.


 


위와 같이 설정하고 저장하고 빠져나온다.


정방향에 대한 zone파일 설정을 마쳤다.



이제 역방향 zone 파일 설정을 하자


방금 편집한 linux.com.zone 파일을 복사하자


 


192.168.46.rev 파일 생성


이것도 역시


named.rfc1912.zone에 설정한 역방향 file 뒤의 이름과 동일해야 한다.


 


위와 같이 입력하고 저장하고 빠져나간다.


이로써 존 파일 생성을 마쳤다.



다섯번째, zone 파일의 소유권과 권한을 바꿔준다.


DNS는 named라는 Group이름으로 설정파일을 읽는다.


그러므로 named라는 그룹이 해당 zone 파일들을 읽고 쓰는 권한이 있어야 한다.


 


그런데 지금은 zone 파일 유저와 소속 그룹이


root이다.


그룹을 named로 바꿔주고 권한을 읽기 쓰기 권한을 주자


 


우선 그룹권한에 읽기 쓰기를 주었다.


 


소속 그룹을 named로 바꿨다


이제 named라는 그룹에 속한 유저는 읽기/쓰기 권한을 가진다.



여섯번째, TCP/UDP 53 Port를 열어준다.


DNS는 TCP/UDP 53번 Port를 사용한다.


외부에서 DNS Server에 Query하기 위해서는 해당 포트를 열어주어야 한다.


#vi /etc/sysconfig/iptables



위와 같이 포트를 열어주고 방화벽을 재시작한다.


#service iptables restart


 


이제 DNS 서비스를 시작한다


#service named start

 

 


만약 에러가 뜬다면 설정파일에 오타를 확인해보자


 


#nslookup으로 정방향, 역방향 모두 조회가 정상적으로 된다.




이제 Secondary DNS 서버를 구축해보자.



Secondary DNS 서버의 IP 주소는


192.168.46.2이다.


Secondary DNS 서버 IP를 확인하고


Primary DNS 서버에서 Secondary에 대한 접속을 허용해 주어야 한다.



#vi /etc/named.conf


 


위와 같이 Secondary에 대한 IP를 허용해준다.



#vi /etc/named.rfc1912.zones


 


위와 같이 Secondary에 대한 IP를 허용해준다.



그리고 설정 적용을 위해


DNS 재시작


 




이제 Secondary DNS 서버를 설정한다.


첫번째, bind 패키지 설치


#yum -y install bind*


위의 명령어로 bind 패키지 전체 설치



두번째, /etc/resolv.conf 설정


#vi /etc/resolv.conf



nameserver 자기 자신으로 지정




세번째, /etc/named.conf 파일 설정


#vi /etc/named.conf



Secondary DNS Sever 역시 포트 설정을 해준다.



다섯번째, /etc/named.rfc1912.zones 파일 설정


#vi /etc/named.rfc1912.zones 파일 설정



Primary와 다르게 type은 slave;


그리고 masters { Primary DNS IP; };를 입력해주고 저장한다.


file은 Primary Server의 zone파일 이름이다.


여섯번째, 53번 Port 방화벽 허용


#vi /etc/sysconfig/iptables



위와 같이 포트를 열어주고 방화벽을 재시작한다.


#service iptables restart


 



일곱번째, SELINUX 정책 설정과 /etc/var/named/chroot/var/named에 쓰기권한 할당


방화벽을 해제해도 SELINUX 정책 중에



named_write_master_zones가 off 되어 있어서 zone transfer가 막힌다.


이를 on으로 바꿔주어야 한다.


만약 off인 상태로 Secondary DNS 서버를 시작해도


Primary DNS 서버로부터의 zone transfer가 일어나지 않는다.


그리고 /etc/var/named/chroot/var/named의 named 그룹에 쓰기권한을 주어야


Primary DNS에서 zone파일을 받아와 Secondary에 저장할 수 있다.


설정하지 않으면 쓰기 권한이 없어서 전송이 안된다.




Primary부터 zone파일을 못받아와 /var/named에 zone파일이 존재하지 않음



#cat /var/log/messages | grep named로 로그 메세지를 확인해보면



permission denied라고 뜬다.


#getsebool -a | grep zone을 통해 SELINUX 정책을 확인해보면



"named_write_master_zones이 off가 되어 있다.


on으로 바꿔주자


#setsebool -P named_write_master_zones=1



이렇게 명령어를 치면 on으로 바뀐다.


#ls -al /var/named/chroot/var를 통해 named 디렉터리의 권한을 확인하면

named 그룹에 대한 쓰기 권한이 없다. 추가해주자​




#chmod g+w /var/named/chroot/var/named



named 디렉터리에 named 그룹에 대한 쓰기권한 설정



named 서비스 재시작


#service named restart



#ls -al /var/named를 통해



확인하면 zone파일을 정상적으로 받아왔다.



linux.com.zone 파일


192.168.46.rev 파일


정상적으로 받아왔다



Secondary DNS Server에서도 정상적으로 Domain 조회가 된다.


DNS 구축 끝!




 

찬차니
찬차니 IT·컴퓨터

피아노, 수영, 네트워킹, 정보보안, 독서를 좋아하는 청년 아니 이제 아저씨인가 Kakao Talk : jga0674 Line : jang0674 Instagram : chanchani_hk