[Linux] DNS 설치 및 서비스 설정방법

 ----------------------------------------------------------------------------------
0. 환경
 > OS : CentOS 5.5
 - CentOS 5.5 설치시 패키지선택에서 DNS 이름서버를 선택하면 위의 내용이 모두 설치됨.

------------------------------------------------------------------------------------

< DNS 설치여부 확인 및 설치 방법 >

1. DNS 설치여부 확인

> BIND 9가 설치여부 확인

[root@ns ~]# rpm -qa | grep bind
=======================================================================================
ypbind-1.19-12.el5
bind-9.3.6-4.P1.el5
bind-libs-9.3.6-4.P1.el5
bind-utils-9.3.6-4.P1.el5
=======================================================================================

 

> 네임서버 설치여부 확인

[root@ns ~]# rpm -qa | grep name
=======================================================================================
caching-nameserver-9.3.6-4.P1.el5
=======================================================================================

 

2. 네임서버 설치

# yum install caching-nameserver
( 위에 명령으로 설치되지 않는다면, caching-nameserver-9.3.6-4.P1.el5 이름을 모두 입력. )

-------------------------------------------------------------------------------------

< DNS 설정 방법 >

ex)
 > DNS 호스트명 : ns
 > DNS 도메인 : mydomain.co.kr
 > DNS 서버IP : 192.168.0.101

1. 서버에서 도메인 검색의 시작점인 hosts 파일에 ns라는 호스트 추가

# vi /etc/hosts
=======================================================================================
127.0.0.1       localhost localhost.localdomain
192.168.0.101   ns.mydomain.co.kr ns
=======================================================================================

 

2. 사용할 DNS 서버 주소를 설정

# vi /etc/resolv.conf
=======================================================================================
domain mydomain.co.kr
search mydomain.co.kr
nameserver 192.168.0.101
nameserver 168.126.63.1
nameserver 168.126.63.2
=======================================================================================


3. DNS와 hosts 파일 중 호스명이 IP주소로 변환될때 참조 우선 순서 설정하는 파일 수정

# vi /etc/host.conf
=======================================================================================
order hosts,bind
multi on
=======================================================================================

 - 위의 order 설정의 의미는 도메인에 대해 질의할 때,
 hosts 파일을 먼저 참고하고 답을 찾지 못하면 bind 즉 DNS에 질의하라는 의미이다.
 - multi on 은 /etc/hosts 파일에 하나의 호스트에 대해 여러 개의 IP 주소를 설정가능 옵션.

-------------------------------------------------------------------------------------

 

4. Zone 파일 및 케시 DNS서버에 대한 설정

> conf 파일 수정

 

# vi /etc/named.caching-nameserver.conf
=======================================================================================
options {
        listen-on port 53 { any; };
//      listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";

        // Those options should be used carefully because they disable port
        // randomization
        query-source    port 53;
        // query-source-v6 port 53;

        allow-query     { any; }; // any로 수정
        allow-query-cache { any; };  // any로 수정
//      allow-query-cache { localhost; };
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
view localhost_resolver {
        match-clients      { any; };  // any로 수정
        match-destinations { any; };  // any로 수정
        recursion yes;
        include "/etc/named.rfc1912.zones";
};
=======================================================================================

> 소유권 변경 및 named.conf 파일 심볼릭 링크 만들기

 

# chown named.named /etc/named.caching-nameserver.conf
# ln -s /etc/named.caching-nameserver.conf /etc/named.conf
(*)만약 /etc/named.conf 파일이 존재하고 있으면 백업 및 삭제 후 심볼릭 링크를 만든다.

 

 

> named.rfc1912.zones 파일확인

 

# vi /etc/named.rfc1912.zones
=======================================================================================
zone "." IN {
        type hint;
        file "named.ca";
};

zone "localdomain" IN {
        type master;
        file "localdomain.zone";
        allow-update { none; };
};

// localhost 에 대한 설정
zone "localhost" IN {
        type master;
        file "localhost.zone";
        allow-update { none; }; //다이나믹 하게 업데이트를 허용할것인지 설정한다. 대부분 none
};

// 127.0.0.X 에 대한 역 도메인
zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "named.local";
        allow-update { none; };
};

zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
        type master;
        file "named.ip6.local";
        allow-update { none; };
};

zone "255.in-addr.arpa" IN {
        type master;
        file "named.broadcast";
        allow-update { none; };
};

zone "0.in-addr.arpa" IN {
        type master;
        file "named.zero";
        allow-update { none; };
};

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

  위 named.rfc1912.zones 파일에 아래의 2개 항목 추가

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

zone "mydomain.co.kr" IN {
type master;
file "mydomain.co.kr.zone";
allow-update { none; };
};

zone "0.168.192.in-addr.arpa" { //reverse domain - IP 기입이 역순 입력되는것에 주의!!
type master;
file "0.168.192.rev";
allow-update { none; };
};
=======================================================================================


5. zone 파일 만들기 및 심볼릭 링크 걸기

> zone 파일 만들기

vi /var/named/chroot/var/named/mydomain.co.kr.zone
=======================================================================================
$TTL    86400
@               IN SOA  ns.mydomain.co.kr. root.mydomain.co.kr. (
                                        42              ; serial (d. adams)
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum
;
                IN NS  ns.mydomain.co.kr.
                IN MX 10 mail.mydomain.co.kr.

                IN TXT  "v=spf1 mx ip4:112.168.234.134 ~all"
                IN A  192.168.0.101

$ORIGIN mydomain.co.kr.
localhost       IN A  127.0.0.1
ns              IN A  192.168.0.101
www             IN A  192.168.0.102
mail            IN A  112.168.234.134
mydomain.co.kr. IN TXT "v=spf1 ip4:112.168.234.134 -all"
=======================================================================================

 

> zone 파일 소유권 변경 및 심볼릭 링크 만들기

# chown named.named mydomain.co.kr.zone
# ln -s /var/named/chroot/var/named/mydomain.co.kr.zone /var/named/mydomain.co.kr.zone


> rev 파일 만들기

 

# vi /var/named/chroot/var/named/0.168.192.rev
=======================================================================================
$TTL    86400
@       IN      SOA     ns.mydomain.co.kr. root.mydomain.co.kr.  (
                                      2009022700 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum

 IN NS      ns.mydomain.co.kr.
101 IN PTR     ns.mydomain.co.kr.
102 IN PTR     www.mydomain.co.kr.
102 IN PTR     mydomain.co.kr.
=======================================================================================

> rev 파일 소유권 변경 및 심볼릭 링크 만들기

# chown named.named 0.168.192.rev
# ln -s /var/named/chroot/var/named/0.168.192.rev /var/named/0.168.192.rev

- 이것으로 설치와 설정이 끝났으며, DNS 서버를 시작하도록 한다

-------------------------------------------------------------------------------------

< DNS 시작 및 정지 방법 >

> 시작 및 정지

# /etc/rc.d/init.d/named [start | reload | stop]

> 오류 로그 검사

# grep named /var/log/messages
=======================================================================================
Apr  9 22:14:15 localhost named[1772]: zone 0.168.192.in-addr.arpa/IN/localhost_resolver: loaded serial

2009022700
Apr  9 22:14:15 localhost named[1772]: zone mydomain.co.kr/IN/localhost_resolver: loaded serial 42
Apr  9 22:14:15 localhost named[1772]: zone mydomain.co.kr/IN/localhost_resolver: sending notifies (serial

42)
=======================================================================================

< DNS 정상작동 여부 테스트 및 확인>

[root@ns named]# nslookup

=======================================================================================
> server 192.168.0.101
Default server: 192.168.0.101
Address: 192.168.0.101#53
> set type=any
> mydomain.co.kr
Server:         192.168.0.101
Address:        192.168.0.101#53

mydomain.co.kr        text = "v=spf1 ip4:112.168.234.134 -all"
mydomain.co.kr
        origin = ns.mydomain.co.kr
        mail addr = root.mydomain.co.kr
        serial = 42
        refresh = 10800
        retry = 900
        expire = 604800
        minimum = 86400
mydomain.co.kr        nameserver = ns.mydomain.co.kr.
mydomain.co.kr        mail exchanger = 10 mail.mydomain.co.kr.
Name:   mydomain.co.kr
Address: 192.168.0.101
=======================================================================================

< 방화벽에서 DNS 포트(53) 예외 적용>

# iptables -A INPUT -p tcp --dport 53 -j ACCEPT

# iptables -A INPUT -p udp --dport 53 -j ACCEPT

+ Recent posts