CentOS 7 DNS 서버 설치

2014.10.05 16:11

gooddew 조회:7146


웹서버에 DNS서버를 설치해서 웹서버 고유의 도메인을 만들어 보겠습니다.



우선은 도메인을 소유하고 계셔야 합니다.


여기서는 강좌간 이해를 돕기위해 도메인은 test.kr 로 웹서버의 IP는 192.168.1.100 인 예로 해서 강의 진행을 하겠습니다.




CentOS 서버로 와서 DNS 설치를 하겠습니다.



# yum -y install bind-*



서버에서 사용될 DNS 서버 IP 를 resolv.conf 에nameserver 192.168.1.100 항목을 추가 등록합니다.



# nano /etc/resolv.conf
=======================================================================================
search test.kr               <= 도메인 추가
nameserver 192.168.1.100         <= 네임 서버 ip 추가
nameserver 168.126.63.1
nameserver 168.126.63.2
=======================================================================================

 

domain test.kr    

도메인을 조회할때는 원래는 호스트(host.conf) 파일이 우선인데 domain 이 옵션을 쓰면 도메인이 우선시 됩니다.

위에 항목에는 업지만 resolv.conf 설정간 참고 하시면 됩니다.



search test.kr  

네임서버 도메인 지정 항목



nameserver 192.168.1.100

네입서버 ip 지정항목, 최대 6개 까지 가능






도메인에 대한 ip를 찾을 때 참조할 순서입니다.


# nano /etc/host.conf
=======================================================================================
order hosts,bind ==> 초기 설치시 이렇게 되어 있으며, 의미는 /etc/hosts파일부터 찾고, bind에서 찾는다는의미입니다

=======================================================================================

 



CACHE DNS서버 및 Zone 파일에 대한 설정



먼저 CACHE DNS서버 설정 파일은 /etc/named.conf 파일을 설정합니다. 파란색 글자 부분만 바꾸시면 됩니다.



# nano /etc/named.conf
=======================================================================================

listen-on port 53 { 127.0.0.1; };  => listen-on port 53 { any; }; 수정하세요 any 만 바꾸시면 됩니다


allow-query { localhost; }; => allow-query { any; }; 수정 any 만 바꾸시면 됩니다


=======================================================================================

 

항목을 설명 드리겠습니다.



listen-on 항목을 any 로 설정합니다.

이렇게 해야 외부에서 53번 포트를 타고 들어올 수 있습니다.



allow-query 항목을 any 로 설정합니다.

막상 53번 포트를 타고 들어와도, 도메인에 대한 설정 정보를 조회하려면 이 부분을 설정해줘야, 해당 주소로 접속이 가능합니다.


수정중인 named.conf 파일이 제일 하단으로 이동 하세요 


zone 파일을 정의하는 아래 설정 내용을 제일 하단에 추가합니다.


=======================================================================================
zone "test.kr" IN {  // 도메인 입력
type master;            // 서버타입을 지정합니다.(master/slave)
file "test.kr.zone"; // 정방향 zone 파일 생성
allow-update { none; }; //master 서버와 동기화를 허용 할 slave 서버의 IP를 입력합니다. 슬래브 서버 없으면 none 입력
};


zone "1.168.192.in-addr.arpa" { // 역방향 도메인 - IP 가 역으로 입력되어 있는 것에 주목하세요
type master;                    // 서버타입을 지정합니다.(master/slave)
file "test.kr.rev";             // 역방향 zone 파일 생성
allow-update { none; };
};
=======================================================================================

 


항목을 설명 드리겠습니다.



zone "test.kr"

콜론 사이에 도메인을 입력하시면 됩니다. 웹서버의 도메인이 됩니다.



type master;

DNS 서버를 이중화하여 구성된 네트워크에서 이 서버가 마스터 DNS 또는 슬레브DNS 인지 지정을 합니다.

큰 규모의 네트워크가 아니면 type master; 로 하시면 됩니다.



file "test.kr.zone";

DNS 가 정방향으로 찾아갈때 이 파일의 설정 파일을 보고 찾아가라고 정의한 것입니다.

정 방향이란 도메인을 물어보면 IP를 찾아주는 것입니다.



allow-update { none; };

동기화 하려는 slave서버의 IP 지정를 지정하는 옵션입니다. slave서버가 없다면 none; 으로 설정하시면 됩니다.



zone "1.168.192.in-addr.arpa"

역방향 도메인 설정 부분입니다. IP 가 역으로 입력되어 있고 3자리 까지만 입력되있습니다.

192.168.1.100 인데 역으로 3자리만 해서 1.168.192 이렇게 입력하고 뒤에 in-addr.arpa 붙이면 됩니다.



type master;  위에 설명한 부분과 동일 합니다.



file "test.kr.rev";   

DNS 가 역방향으로 찾아갈때 이 파일의 설정 파일을 보고 찾아가라고 정의한 것입니다.

역방향이란 IP를 요청하면 도메인을 찾아주는 것입니다.



allow-update { none; };  위에서 설명한 부분과 동일합니다.


위에서 추가한 도메인에 대한 zone 설정 파일을 만들어야 됩니다.



설치하면 기본으로 제공하는 named.localhost 파일이 있는데 형식이 동일하기 때문에 복사해서 사용하셔도 됩니다.

 

정방향 zone 설정 파일을 수정하겠습니다.



# nano /var/named/test.kr.zone
=======================================================================================
$TTL    86400
@       IN      SOA     ns.test.kr. root.ns.test.kr.  (
                0          ; Serial
                28800      ; Refresh
                14400      ; Retry
                3600000    ; Expire
                86400 )    ; Minimum
                 IN      NS      ns.test.kr.
                 IN      MX  0   mail.test.kr.  ; 메일 서버를 운영 안하면 이줄은 삭제하세요 
                 IN       A       192.168.1.100
ns             IN       A       192.168.1.100
www         IN       A       192.168.1.100
=======================================================================================



설정 파일내 항목들을 알아 보겠습니다.



Records Resource
 
의 미
 

IN
 
네트워킹 어드레스 클래스
 

SOA
 
Start Of Authority, 권한이 시작됨을 의미
 

NS
 
네임서버 리소스 레코드
 

A
 
도메인에 IP주소를 주는 레코드
 

MX
 
메일 익스체인저로 SMTP를 설정할 때 이용하는 레코드
 

CNAME
 
하나의 IP 주소에 별칭으로 지정할 수 있는 레코드
 

PTR
 
IP 주소에 대해 도메인으로 맵핑해 주는 레코드
 




설정 파일 내에서 도메인과 골뱅이와 빈칸은 동일하게 정의되 있습니다.



즉, @ = " " =  test.kr



zone 설정 파일 수정간에 중요한 것이 있는데요 모든 도메인 끝에는 "." 마침표를 반듯이 넣어야 된다는 것입니다.



정방향 설정 파일이건 역방향 설정 파일이건 도메인 마지막엔 마침표를 넣어야 됩니다.



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



ns.test.kr. 네임서버 부분입니다.


root.ns.test.kr. 관리자 메일 주소입니다.




0          ; Serial
28800      ; Refresh
14400      ; Retry
3600000    ; Expire
86400 )    ; Minimum


이것은 네입서버가 업데이트를 하는 주기 설정 부분입니다. 수정을 안하샤도 됩니다.




IN      NS      ns.test.kr.

네입서버 정의하는 부분입니다.



IN      MX  0   mail.test.kr.

메일 서버를 정의하는 부분입니다. 메일 서버를 운영하지 안으면 이 부분은 생략하시면 됩니다.



IN       A       192.168.1.100

도메인 앞에 아무것도 없을때 192.168.1.100 으로 이동 됩니다.  (ex > test.kr -> 192.168.1.100 )



ns             IN       A       192.168.1.100

도메인 앞에 ns 가 있을때 192.168.1.100 으로 이동 됩니다. (ex > ns.test.kr -> 192.168.1.100 )

 

www             IN       A       192.168.1.100

도메인 앞에 www 가 있을때 192.168.1.100 으로 이동 됩니다.  (ex > www.test.kr -> 192.168.1.100 )




역방향 zone 설정 파일을 수정하겠습니다.


# nano /var/named/test.kr.rev
=======================================================================================
$TTL    86400
@       IN      SOA     ns.google.com. root.ns.google.com.  (
                0          ; Serial
                28800      ; Refresh
                14400      ; Retry
                3600000    ; Expire
                86400 )    ; Minimum
                IN      NS      ns.test.kr.
100            IN      PTR     ns.test.kr.
100            IN      PTR     test.kr.
=======================================================================================



역방향 설정에 대해서 알아 보겠습니다.



$TTL    86400
@       IN      SOA     ns.test.kr. root.ns.test.kr.  (
                0          ; Serial
                28800      ; Refresh
                14400      ; Retry
                3600000    ; Expire
                86400 )    ; Minimum

                IN      NS      ns.test.kr.



여기 까지는 정방향 설정 파일 설명 드린것과 동일 합니다.




100            IN      PTR     ns.test.kr.

100            IN      PTR     test.kr.




위에서 100이란 숫자는 IP(192.168.1.100)의 제일 마지막에 해당하는 숫자입니다.



ns.test.kr = 192.168.1.100

test.krm = 192.168.1.100 이라는 의미입니다.

 

google.com.zone 와 google.com.rev 파일의 소유권과 권한을 수정합니다.



named 계정으로 소유권 변경


# chown named:named test.kr.zone

# chown named:named test.kr.rev



권한 변경


# chmod 770 test.kr.zone

# chown 770 test.kr.rev




이렇게 해서 DNS 서버 설정의 모든 설정은 끝났습니다.



설치와 설정이 끝났다면, DNS 서버를 시작하도록 한다.



# systemctl start named 서버 시작을 해주고


# systemctl enable named 이렇게 명령을 내리면 부팅후 자동실행이 됩니다.





네임서버의 포트는 53으로 방화벽에서 이 포트를 풀어야 한다.


# firewall-cmd --permanent --zone=public --add-port=53/tcp

# firewall-cmd --permanent --zone=public --add-port=53/udp

## firewall-cmd --reload




그리고 도메인을 구입한 호스팅 업체에서 네임서버 변경 작업을 해야 됩니다.


네임서버를 지정하기 위해서 도메인을 구입한 호스팅사에 로그인하여 도메인 관리하는 항목 메뉴로 들어가세요


호스팅사마다 상세 설정 방법은 다르겠지만 DNS 설정의 기본 설정 방식은 동일하기 때문에 아래 강좌만 이해 하시면 


타 호스팅사에서도 충분히 할수 있습니다.


수정 작업할 곳이 두곳이 있습니다. 네임서버 변경과 네임 호스트명 변경 부분 입니다




우선 도메인을 구입한 호스팅사 계정으로 로그인하고 네임서버 수정하는 메뉴로 이동하세요


01.jpg





네임서버 변경 항목으로 들어가서 1차 네임서버에 ns.test.kr, 네임서버 IP에 192.168.1.100 입력하고 설정을 저장합니다.


02.jpg



네임 호스트명 변경을 관리하는 항목을 찾으세요. 이 메뉴로 들어가서 ns.test.kr 이란 네임 호스트을 만들고


IP입력란에 192.168.1.100 라고 입력한후 설정을 저장하세요.


03.jpg






이렇게 해서 호스팅사에서 네임서버 설정은 끝났습니다.




리눅스 DNS 서버의 콘솔 창과 윈도우 클라인언트의 명령창에서 ‘nslookup’ 명령어를 사용하여


네임서버 주소가 제대로 작동 여부를 테스트 해보겠습니다.


dns 라는게 바로 적용되는것이면 웹에서 접속 해보겠지만 정상적인 설정이 됬다고 하더라고


1일 또는 그 이상도 걸릴수 있기 때문에 정상 여부를 바로 체크하는 방법을 알아 보겠습니다. 


서버에서와 클라이언트에서 모두 확인해야 정확합니다.


서버에서 확인


# nslookup test.kr 192.168.1.100  ( 방금 설정한 DNS 서버에서 tast.kr 도메인 정보를 얻는다는 명령어 입니다. )
Server:          192.168.1.100 
Address:       192.168.1.100#53

Non-authoritativ answer:
Name:          test.kr
Address:      192.168.1.100  ← 방금 설정한 DNS 서버의 주소가 표시됩니다.



만약 nslookup 테스트 결과 DNS Request Time out 으로 나오면 방화벽이나 53 포트 tcp , udp 부분이 오픈여부등 체크를 해야 됩니다.


만약 정상 조회됬다면 기다리시면 도메인 접속이 가능합니다.


위에서 정상 테스트가 되었더라도 클라이언트에서는 바로 접속이 안됩니다.



12시간 이상이 지나서 정상적으로 클라이언트에 도메인으로 접속될 경우 


클라이언트에서 도메인 연결 테스트 하는 방법입니다. 


윈도우 클라이언트 pc 에서 명령창을 열고 


c:\> nslookup tast.kr 192.168.1.100  //  ← 방금 설정한 DNS 서버의 ip 주소  //



이상 DNS 서버 구축 강좌를 마칩니다.