본문 바로가기

공부/리눅스

DNS - Primary DNS 설정 및 테스트

반응형
*** master DNS 설정

[root@star named]# cat /etc/named.conf
//
// named.conf for Red Hat caching-nameserver
//

options {
        directory "/var/named";
        dump-file "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        /*
        * If there is a firewall between you and nameservers you want
        * to talk to, you might need to uncomment the query-source
        * directive below.  Previous versions of BIND always asked
        * questions using port 53, but BIND 8.1 uses an unprivileged
        * port by default.
        */
        // query-source address * port 53;
};

//
// a caching only nameserver config
//
controls {
        inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};

zone "." IN {
        type hint;
        file "named.ca";
};

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

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

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

zone "lee.pe.kr" IN {
        type master;
        file "lee.zone";
        allow-update { none; };
        allow-transfer { 192.168.20.200; };
};


zone "20.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.20.rzone";
#      allow-update { 192.168.20.200; };
                                                                                                 
        allow-transfer { 192.168.20.200; };
};

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; };
};

include "/etc/rndc.key";

[root@star named]# cat lee.zone
$TTL    86400
@      IN      SOA    lee.pe.kr. root.lee.pe.kr.  (
                                      20080728 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
              IN      NS      ns.lee.pe.kr.
              IN      NS      ns2.lee.pe.kr.

ns      IN    A      192.168.20.101
ns2      IN    A      192.168.20.200
www      IN    A      192.168.20.102
@        IN    A      192.168.20.102
[root@star named]#

[root@star named]# cat 192.168.20.rzone
$TTL    86400
@      IN      SOA    lee.pe.kr. root.lee.pe.kr.  (
                                      20080728 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
              IN      NS      ns.lee.pe.kr.
              IN      NS      ns2.lee.pe.kr.

101    IN      PTR    ns.lee.pe.kr.
102    IN      PTR    www.lee.pe.kr.
200    IN      PTR    ns2.lee.pe.kr.
[root@star named]#

[root@star named]# cat /etc/resolv.conf
;nameserver 168.126.63.1
nameserver 192.168.20.101

[root@star named]# /etc/init.d/named start
named (을)를 시작합니다:                                  [  확인  ]

[root@star named]# pgrep -fl named
24828 /usr/sbin/named -u named -t /var/named/chroot

*. 보안을 위해서 과거버전과 달리 /var/named 가 아닌 /var/named/chroot 에서 설정파일을 찾는다.
*. chroot 기능을 사용하지 않으려면 /usr/sbin/named -u named  로 실행하면 된다.

[root@star named]# cat /etc/resolv.conf  => 직접구성한 dns 서버를 현재 호스트에서 직접 테스트 하려면
;nameserver 168.126.63.1
nameserver 192.168.20.101                        => 이것을 직접구성한 dns ip 로 바꾸어야 한다.
[root@star named]#

그리고 아래결과처럼 dns 서버의 ip 는 설정되어 있어야 하고 활성화 되어 있어야 한다.
그래야 클라이언트의 요청에 dns 서버가 응답할 수 있다.

[root@star named]# ifconfig eth0:1
eth0:1    Link encap:Ethernet  HWaddr 00:0C:29:9E:9E:DF
          inet addr:192.168.20.101  Bcast:192.168.20.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:10 Base address:0x2000

[root@star named]#

그리고 ping 으로 응답하는지 확인해본다.

[root@star named]# ping 192.168.20.101
PING 192.168.20.101 (192.168.20.101) 56(84) bytes of data.
64 bytes from 192.168.20.101: icmp_seq=0 ttl=64 time=1.44 ms
64 bytes from 192.168.20.101: icmp_seq=1 ttl=64 time=0.008 ms

--- 192.168.20.101 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 0.008/0.727/1.446/0.719 ms, pipe 2
[root@star named]#

=> 정상적으로 응답하고 있음을 알수 있다.

[root@star named]# nslookup  <= dns 에 등록된 도메인을 확인하는 명령어이다.
> www.lee.pe.kr
Server:        192.168.20.101
Address:        192.168.20.101#53

Name:  www.lee.pe.kr
Address: 192.168.20.102
> 192.168.20.101
Server:        192.168.20.101
Address:        192.168.20.101#53

101.20.168.192.in-addr.arpa    name = ns.lee.pe.kr.
> www.yahoo.co.kr
Server:        192.168.20.101
Address:        192.168.20.101#53

Non-authoritative answer:
www.yahoo.co.kr canonical name = yahoo.co.kr.
Name:  yahoo.co.kr
Address: 119.161.11.206
Name:  yahoo.co.kr
Address: 203.212.171.217
> lee.pe.kr
Server:        192.168.20.101
Address:        192.168.20.101#53

Name:  lee.pe.kr
Address: 192.168.20.102
> exit

[root@star named]#

*. dns 서버가 제대로 동작 하지 않는다면 로그 파일을 보고 어디에 문제가 있는지를 찾아내서 고쳐야 한다.
*. dns 의 로그기록은 /var/log/messages 파일에 저장되어 있다.

[root@star named]# tail -10 /var/log/messages
Aug 16 02:23:04 star named[24828]: zone localhost/IN: loaded serial 42
Aug 16 02:23:04 star named[24828]: running
Aug 16 02:23:04 star named[24828]: zone lee.pe.kr/IN: sending notifies (serial 20080728)
Aug 16 02:23:04 star named[24828]: zone 20.168.192.in-addr.arpa/IN: sending notifies (serial 20080728)
Aug 16 02:23:04 star named[24828]: client 192.168.20.101#32769: received notify for zone 'lee.pe.kr'
Aug 16 02:23:05 star named[24828]: client 192.168.20.101#32769: received notify for zone '20.168.192.in-addr.arpa'
Aug 16 02:38:02 star crond(pam_unix)[24990]: session opened for user root by (uid=0)
Aug 16 02:38:02 star crond(pam_unix)[24990]: session closed for user root
Aug 16 02:39:02 star crond(pam_unix)[25002]: session opened for user root by (uid=0)
Aug 16 02:39:02 star crond(pam_unix)[25002]: session closed for user root
[root@star named]#


######################################################
설정 예. (centos 5.x)

named.caching-nameserver.conf 파일을 테스트를 위해 아래처럼 수정합니다.
이 파일이 없으면 yum install caching-nameserver  명령어로 설치부터해야합니다.

  1 //
  2 // named.caching-nameserver.conf
  3 //
  4 // Provided by Red Hat caching-nameserver package to configure the
  5 // ISC BIND named(8) DNS server as a caching only nameserver
  6 // (as a localhost DNS resolver only).
  7 //
  8 // See /usr/share/doc/bind*/sample/ for example named configuration files.
  9 //
 10 // DO NOT EDIT THIS FILE - use system-config-bind or an editor
 11 // to create named.conf - edits to this file will be lost on
 12 // caching-nameserver package upgrade.
 13 //
 14 options {
 15 //  listen-on port 53 { 127.0.0.1; };
 16    listen-on port 53 { any; };
 17 //  listen-on-v6 port 53 { ::1; };
 18    directory  "/var/named";
 19    dump-file  "/var/named/data/cache_dump.db";
 20        statistics-file "/var/named/data/named_stats.txt";
 21        memstatistics-file "/var/named/data/named_mem_stats.txt";
 22
 23    // Those options should be used carefully because they disable port
 24    // randomization
 25    query-source    port 53;
 26    // query-source-v6 port 53;
 27
 28 //  allow-query    { localhost; };
 29    allow-query    { any; };
 30    allow-notify { any; };
 31 };
 32 logging {
 33        channel default_debug {
 34                file "data/named.run";
 35                severity dynamic;
 36        };
 37 };
 38 view localhost_resolver {
 39 //  match-clients      { localhost; };
 40    match-clients      { any; };
 41 //  match-destinations { localhost; };
 42    match-destinations { any; };
 43    recursion yes;
 44    include "/etc/named.rfc1912.zones";
 45 };

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

/etc/named.rfc19212.zones 파일 맨 아래에 아래와
같이 도메인을 하나 추가합니다.

zone "lee.pe.kr" IN {
    type master;
    file "lee.hosts";
};

zone "100.168.192.in-addr.arpa" IN {
    type master;
    file "192.168.100.rev";
};

================================
/etc/var/named/chroot/var/named 디렉토리에
lee.hosts 파일을 아래와 같이 작성합니다.
*. 설정할때 주의할점 - 도메인명으로 끝날때는 끝에 root 도메인을 의미하는
마침표를 꼭 붙여줘야 합니다. 그렇지 않으면 제대로 동작하지 않습니다.

 1 $TTL    86400
  2 @      IN      SOA    ns.myunix.co.kr. root.myunix.co.kr. (
  3                                      2009072401 ; Serial
  4                                      60      ; Refresh
  5                                      14400      ; Retry
  6                                      600    ; Expire
  7                                      86400 )    ; Minimum
  8        IN      NS      ns.myunix.co.kr. 
  9 ns      IN      A    192.168.100.1
 10 www IN  A  192.168.100.2
 11 ftp IN  A  192.168.100.3

===================================
/etc/var/named/chroot/var/named 디렉토리에
192.168.100.rev 파일을 아래와 같이 작성합니다.

[root@centos1 named]# cat 192.168.100.rev

 1 $TTL    86400
  2 @      IN      SOA    ns.myunix.co.kr. root.myunix.co.kr. (
  3                                      201006133 ; Serial
  4                                      60      ; Refresh
  5                                      14400      ; Retry
  6                                      600    ; Expire
  7                                      86400 )    ; Minimum
  8        IN      NS      ns.myunix.co.kr.
  9 1  IN  PTR ns.myunix.co.kr.
 10 2  IN  PTR www.myunix.co.kr.
 11 3  IN  PTR ftp.myunix.co.kr.

================================================
그리고 작성한 파일퍼미션은 named 가 읽을수 있게 권한 설정을 고쳐주어야합니다.

chgrp named lee.hosts
chgrp named 192.168.100.rev

/etc/resolv.conf 파일은 자신이 테스트할 dns서버를 적어둡니다.
[root@centos1 named]# cat /etc/resolv.conf
nameserver 192.168.100.1   

그리고 dns ip 를 하나 할당합니다.
ifconfig eth0:1(또는 eth1:1) 192.168.100.1
그런다음 service named start

여기서 에러가 발생하였다면 /var/log/messages 파일을 보고 에러를 잡아야 합니다.
그리고  dns 설정파일을 수정한 경우에는 설정을 적용하기 위해서 dns 서비슬
재시작 해야 합니다.

nslookup 명령으로 테스트 했을때 문제가 없다면
도메인을 추가로 하나를 더 등록해서 테스트하면 dns 를 이해하는데 더 도움이 될것입니다.

반응형