카테고리 없음

CentOS를 이용한 DNSserver 구축

HackBeom 2019. 2. 23. 15:58

DNS server 구축

사용할 OS)  

CentOS 6.9 --> 1차 DNS server ( Master Server )


CentOS 7   --> 2차 DNS server ( Slave Server )


목표)

2차 DNS Server 에서 zone 파일 요청 ---> 1차 DNS 에서 존 트랜스퍼 확인 


1차 ip 192.168.0.8        2차: ip 192.168.0.9 (모두 정적으로 네트워크 설정 )


1차 DNS Server 구축 

Master Server )

yum -y install bind * 을 이용하여 bind를 설치합니다.( bind 데몬 )


설치 후 vi /etc/named.conf 에 들어가면 


Listen-on port 53 { any; } ## 53번 포트를 개방합니다.


Allow-query { any; } ## 외부에서 접근 허용


Allow-recursion { 127.0.0.1; 192.168.0.8 }; ## loopbak 과 자신의 ip를 적어줍니다.


Allow-transfer

##트랜스퍼는 1차에서 2차로 전송 되기 때문에 2차 DNS server ip로 적어줍니다.


Version "UnKnown"; 

##버전 노출시 취약점이 나오기 때문에 보안상 보여주지 않게 설정합니다.


그 후 vi /etc/rfc1912.zone 파일을 열어 수정해야합니다 (아래와 같이 수정 )


zone "0.168.192.in-addr.arap" { ## "192.168.0 ip 대역을 허용해주겠다"

type master;

file "named.rev";

allow-update { none; };

};

zone "test.co.kr" {

type master;

file "test.co.kr.zone";

};


zone "test.com" {

type master;

file "test.com.zone";

};


저는 test.co.kr 과 test.com 으로 설정하였습니다 ( 똑같이 안해도 됩니다 )


named.conf 와 named.rfc1912. 파일의 수정이 모두 끝났다면 


named-checkconf /etc/named.conf  ## 문법검사 


문법 검사 후 /var/named/chroot/var/named 로 이동합니다.


vi를 사용하여  test.co.kr.zone 파일을 생성합니다.


$TTL    3600

@    IN    SOA    ns.test.com. root.test.com. (

2018120500    ; serial

201600          ; refresh

900               ; retry

604800          ; expire

3600             ; minimum

@    IN    NS            ns.test.com.kr.

@    IN    MX   10     mail.test.com.kr.

@    IN    MX    20    mail2.test.com.kr.


@    IN    A              192.168.0.8

www IN    A              192.168.0.8

ns    IN    A              192.168.0.8

mail IN    A               192.168.0.10

mail2 IN  A                192.168.0.11


위와 같이 zone파일을 작성합니다


다음으로 해야 할 것은 권한 설정입니다 root root 권한을 named named 권한으로 바꿔줍니다 (chroot 사용)


 그 후 시스템 설정에 들어가서  방화벽 하고 NetworkManager off 설정 합니다.

( iptables off ) 


여기까지 하셨다면 vi /etc/selinux/config 에 들어갑니다


SELINUX=enforcing -> disabled 로 수정합니다 ( 접근 통제 허용 )


그런 다음 service named restart (named 재시작 후 ) ps aux |grep named를 

사용 하여 프로세스가 실행 중인 것을 확인합니다.


2차 DNS Server 구축 

Slave Server )

1차 DNS server 와 똑같이 bind를 설치합니다.


그 후 vi /etc/named.conf를 수정합니다 (1차 DNS server와 동일함 )

단 

Allow-transfer 의 값을 none로 설정합니다. 

왜냐하면 2차 server가 외부 요청에 응답할 필요는 없기 때문입니다.


Masterfile-file-format text 는 나중에 설명하도록 하겠습니다. 


다음으로 vi /etc/named.rfc1912.zone 파일을 수정합니다


zone "test.co.kr" IN {

type slave;

masters { 192.168.0.8; };

file "test.co.kr.zone";

};


zone "test.com" IN {

type slave;

masters { 192.168.0.8 };

file "test.com.zone";

};


1차와는 다르게 type은 slave로 마스터 DNS server 

즉 1차 DNS server의 ip를 적어줍니다 


문법 검사는 1차 DNS에서 설명 하였기 때문에 생략하였습니다. 


그 후  위에서 했던 접근 통제 허용 을 해준다음 (enforcing --> disabled )


Firewalld 라는 CentOS7의 방화벽을 off 해줍니다


named-chroot로 start 해야 정상적으로 작동됩니다.


2차 DNS 서버에서는 zone 파일을 받아 오기 때문에 파일을 생성할 필요가 없습니다.


파일 권한 named로 바꿔줍니다 


dig 명령어를 사용하여 zone파일을 받아오면 파일이 바이너리 파일 형식이라 

파일을 확인할 수가 없습니다 때문에 확인을 하려면 


vi /etc/named.conf 에 Masterfile-format text 라는 옵션을 추가합니다. 

## 위 옵션은 zone파일이 마스터 서버에서 슬레이브 서버로 넘어올때 바이너리 파일로 변환되지 않고 텍스트 형태로 전송되어 파일 확인이 가능합니다.


dig @192.168.0.8 test.co.kr axfr 사용 하여 확인 하면 끝