반응형

http://cafe.naver.com/dnspro/12296

안녕하십니까 ?

2개월동안 서버구축하느라 고생했습니다.


웹서버, DNS서버세팅


아래  DNS서버  실행은 잘되고 있습니다.

혹시 문제될 부분이 없는가 해서 설정화일 올려 봅니다.


수정해야 할부분이 있으면 가르켜 주셨으면 합니다.

참!!, 1가지 문제는 리눅스 리부팅할때 DNS서버 정지후에 리부팅을 해야지 그렇지 아니면

stoping named 에서 더이상 넘어가지 않아 강제로 리셋을 해야 합니다.

왜, 그런지요 ???


아래 도메인과 IP는 실제와 다르게 표시했습니다.


도메인등록업체 네임서버  1차 : ns1.aaaaa.com      IP : 114.222.13.26
                                    2차 : ns2.aaaaa.com      IP : 114.222.13.26


                                                                       1,2차 IP는 동일합니다.

                                                                       이유는 !P는 한개인데 한개만 등록할려니까

                                                                       두개를 입력해야 등록이 되네요.

                                                                        그래서.. 그 이유가 뭔지 모르겠습니다.

                                                             

CentOS 5.3

Version BIND-9.3.4-P1


인터넷 사용환경  : 인터넷유동아이피, 공유기, VPN고정아이피


#--------- 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";


 version "No!!";

 allow-query     { any; };
};


logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};


view localhost_resolver {
 match-clients     { any; };
 match-destinations { any; };
 recursion no;
 include "/etc/named.rfc1912.zones";
};



include "/etc/rndc.key";


controls {
 inet 127.0.0.1 port 953
 allow { 127.0.0.1; } keys { "rndckey"; };
};


#------------named.rfc1912.zones---------------

// named.rfc1912.zones:
//
// Provided by Red Hat caching-nameserver package
//
// ISC BIND named zone configuration for zones recommended by
// RFC 1912 section 4.1 : localhost TLDs and address zones
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
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 "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; };
};


#------ 여기까지는 기본설정 그대로사용합니다.

#------ 아래 ZONE부분은 사용자설정부분.


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


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


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





zone "13.222.114.in-addr.arpa" IN {
 type master;
 file "aaaaa.com.rev";
 allow-update { none; };
};


#---------------------------------------



#------------aaaaa.com.zone------------

$TTL 86400
@ IN SOA aaaaa.com. root.aaaaa.com (
  42  ; Serial
  3H  ; Refresh
  15M  ;Retry
  1W  ;Expiry
  1D)  ;Minimum
 
 IN  NS ns1.aaaaa.com.

 IN  A  114.222.13.26
www IN  A  114.222.13.26
web IN  A  114.222.13.26


 

#--------------aaaaa.com.rev-------------

$TTL 86400
@ IN SOA aaaaa.com. root.aaaaa.com (
  2009073012 ; Serial
  28800  ; Refresh
  14400  ;Retry
  3600000  ;Expiry
  86400)  ;Minimum
 
 IN  NS ns1.aaaaa.com.

26 IN  PTR  aaaaa.com.
26 IN  PTR  www.aaaaa.com.


#------------ccccc.co.kr.zone----------------

$TTL 86400
@ IN SOA ccccc.co.kr. root.ccccc.co.kr  (
  42  ; Serial
  3H  ; Refresh
  15M  ;Retry
  1W  ;Expiry
  1D)  ;Minimum
 
 IN  NS ns1.aaaaa.com.  <= ccccc.co.kr 에서 네임서버 이곳에 이렇게 표시 하는것이 정확한지요 ?

 IN  A  114.222.13.26
www IN  A  114.222.13.26


#-----------------------------------------------

named.ca, named.root.hines 화일은 생략

현재 다른 4군데의 도메인 접속 잘되고 문제 없습니다.


위의 화일에 문제가 없다면..

처음 DNS 설정하시는 여러분들도 그대로 IP와 도메인만 고쳐셔

사용하시면 확실히 잘됩니다.


설정하면서 고생삽질했던부분은  아래 2출 추가해야할 부분이었습니다.


#-------------------------------------------------

# /etc/sysconfig/iptables 화일의 추가부분 (아래두줄)

# DNS설정후 로컬에서는 잘 되는데 외부접속이 되지않았던 이유 입니다.

# 아래 두줄 추가로 해결 되었습니다.


# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

아래두줄 추가

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT  => 추가부분!!
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT => 추가부분!!


-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

반응형
반응형


http://hckim.tistory.com/196?srchid=BR1http%3A%2F%2Fhckim.tistory.com%2F196

아래의 내용은 실제 서버의 설정을 그대로 보여주고 있습니다.

bind 9.3 부터는 환경설정 파일로 name.caching-nameserver.conf 사용합니다.

미리설치된 bind가 없다면
yum install bind


설치가 완료되면 환경설정 을 아래와 같이 해 준다

1) Bind 환경설정
# vi /etc/named.caching-nameserver.conf

// named.caching-nameserver.conf
...
options {
//    listen-on port 53 { 127.0.0.1; };
// 기본적으로 port 53 으로 자신만이  접근 가능하게 되어있다.
// 외부접근 가능 하게 any로 바꾼다.
      listen-on port 53 { any; };
//        listen-on-v6 port 53 { ::1; };
// ip v6 에 대한 것으로 차후 서비스를 위해 ~..주석처리.
        directory       "/var/named";
// zone file에 대한 기본 디렉토리 설정
        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    port 53;  
// 쿼리를 받아 들일 소스포트
        // query-source-v6 port 53;
//     allow-query     { localhost; };
        allow-query     { any; };
// 쿼리 허용할 ip 대역
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
// 실행에 있어 디버깅시 참고 할 수 있는 로그파일 생성 위치
view localhost_resolver {
//        match-clients      { localhost; };
//        match-destinations { localhost; };
        match-clients      { any; };
        match-destinations { any; };
// 로컬 리졸버 허용 클라이언트 지정

        recursion yes;
        include "/etc/named.rfc1912.zones";
};


2) zone 파일 지정
vi /etc/named.rfc1912.zones

// named.rfc1912.zones:
//
// Provided by Red Hat caching-nameserver package
//
// ISC BIND named zone configuration for zones recommended by
// RFC 1912 section 4.1 : localhost TLDs and address zones
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
zone "." IN {
        type hint;
        file "named.ca";
};
...
zone "abydos.kr" IN {
        type master;
        file "abydos.kr.zone";
        allow-update { none; };
};
//추가

3)zone 파일 생성(미리생성된 localdomain.zone 파일을 복사해서 수정한다)

# cd /var/named
# ls
# cp localdoamin.zone abydos.kr.zone

4) 생성한 zone파일을 수정한다.
# vi abydos.kr.zone

$TTL    86400
@               IN SOA  abydos.kr. root.abydos.kr (
                                        2009080201      ; serial (d. adams)
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum
                IN NS           ns.abydos.kr.
                IN MX 10        abydos.kr.
                IN MX 10        mail.abydos.kr.
                IN MX 10        aspmx.l.google.com.
                IN MX 20        alt1.aspmx.l.google.com.
                IN MX 20        alt2.aspmx.l.google.com.
                IN MX 30        aspmx2.googlemail.com.
                IN MX 30        aspmx3.googlemail.com.
                IN MX 30        aspmx4.googlemail.com.
                IN MX 30        aspmx5.googlemail.com.
                IN A            114.207.245.36
ns              IN A            114.207.245.36
www             IN A            114.207.245.36
docs            IN CNAME        ghs.google.com.
sites           IN CNAME        ghs.google.com.
calendar        IN CNAME        ghs.google.com.
mail            IN CNAME        ghs.google.com.
googlea3e90e45321c80c2          IN CNAME        google.com.
ftp             IN CNAME        @
*               IN CNAME        @


제 경우에는 구글로 이메일서비스와 몇가지 서비스를 쓰고있어서 여러가지 설정이 추가되어 있습니다.

5)설정이 바르게 되었는지 확인

# named-checkconf /etc/named.rfc1912.zones
# named-checkconf /etc/named.caching-nameserver.conf
# named-checkzone abydos.kr /var/named/abydos.kr.com.zone


6)테스트

[root@ns named]# nslookup
> server 127.0.0.1
Default server: 127.0.0.1
Address: 127.0.0.1#53
> abydos.kr
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   abydos.kr
Address: 114.207.245.36
> ftp.abydos.kr
Server:         127.0.0.1
Address:        127.0.0.1#53

ftp.abydos.kr   canonical name = abydos.kr.
Name:   abydos.kr
Address: 114.207.245.36


여기까지 해서 CentOS .5.2 Final + BIND 9.3.4의 환경에서 도메인네임서비스 설정이 끝났습니다.


7)zone파일 설명

TTL    86400 - time to live의 약자 다른 네임서버에서 읽어간 정보가 살아있는 시간이다. 초단위
@ - ORIGIN 의 의미 public domain을 의미 즉  @ = linux.com.
IN - IN 다음 의 설정을 이용
SOA - SOA start of authority 해당 도메인의 정보를 가지고 있고 root@abydos.kr 는 관리자임을 나타낸다.
2009080201      ; serial (d. adams) - 해당 정보의 시리얼 보통 날짜정보 + 카운터로 표시된다.
3H              ; refresh - 리프레쉬 타임 주기
15M             ; retry - S로의 장애 발생시 재 접속  시간
1W              ; expiry - 존파일 유효기간,
1D             ; minimum - TTL과 같은 의미 다른 서버에서 zone 데이터를 가져갔을때 그 데이터에 대한 유효기간
IN NS           ns.abydos.kr. - 네임서버 이름 지칭
IN MX 10        mail.abydos.kr. - mailserver 이름 지칭
IN A            192.168.10.200 - ip 할당
mail            IN CNAME        www - mail server의 ip는 www의 설정을 가져온다.
ftp             IN CNAME        @ - ORIGIN 변수의 값을 그대로 사용
*               IN CNAME       


8)DNS서비스를 이용하여 부하를 분산하고 싶은 경우(www.abydos.kr 주소를 여러개 적어서 분산)

www             IN A            192.168.10.200
www             IN A            192.168.10.201
www             IN A            192.168.10.202

반응형
반응형

DNS 서버 구축 및 운용 PDF

반응형
반응형

Howto for CentOS 4 here : http://www.wains.be/index.php/2007/02/04/centos-chroot-dns-with-bind/

1. Install packages :

yum install bind bind-chroot bind-libs bind-utils caching-nameserver

2. Configure RNDC :

cd /var/named/chroot/etc
rndc-confgen > rndc.key
chown root:named rndc.key

Edit rndc.key so it looks like this :

key "rndckey" {
algorithm hmac-md5;
secret "SGsvd1dF+mv+yU4ywCCkkg==";
};

You DON’T NEED anything else in the file (you must remove some option lines !)

A symlink in /etc exists and points to the rndc.key file we’ve just created, named expects that file there in order to be able to authenticate against rndc.

3. Configure /var/named/chroot/etc/named.conf

// we include the rndckey (copy-paste from rndc.key created earlier)
key "rndckey" {
      algorithm hmac-md5;
      secret "SGsvd1dF+mv+yU4ywCCkkg==";
};

// we assume our server has the IP 192.168.254.207 serving the 192.168.254.0/24 subnet
controls {
        inet 127.0.0.1 allow { 127.0.0.1; } keys { "rndckey"; };
        inet 192.168.254.207 allow { 192.168.254.0/24; } keys { "rndckey"; };
};

options {
        directory "/var/named";
        pid-file "/var/run/named/named.pid";

        recursion yes;

        allow-recursion {
                127.0.0.1;
                192.168.254.0/24;
                };

        // these are the opendns servers (optional)
        forwarders {
                208.67.222.222;
                208.67.220.220;
        };

        listen-on {
                127.0.0.1;
                192.168.254.207;
                };

        /*
         * 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;

        // so people can't try to guess what version you're running
        version "REFUSED";

        allow-query {
                127.0.0.1;
                192.168.254.0/24;
                };
        };

server 192.168.254.207 {
        keys { rndckey; };
        };

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

// we assume we have a slave dns server with the IP 192.168.254.101
zone "test.be" IN {
        type master;
        file "data/test.be.zone";
        allow-update { none; };
        allow-transfer { 192.168.254.101; };
        };

4. Our first zone

Let’s say I own the domain test.be

We create our first zone under /var/named/chroot/var/named/data/test.be.zone

Here’s an example :

$ttl 38400
test.be.       IN      SOA     ns.test.be. admin.test.be. (
                       2007020400   ; Serial
                       10800           ; Refresh after 3 hours
                       3600            ; Retry after 1 hour
                       604800          ; Expire after 1 week
                       86400 )         ; Minimum TTL of 1 day
test.be.       IN      NS      ns.test.be.

test.be.               IN      MX      1       mx.test.be.
test.be.               IN      MX      5       mx2.test.be.

www.test.be.           IN      A       192.168.100.5
ns.test.be.           IN      A       192.168.100.10
mx.test.be.          IN      A       192.168.100.20
mx2.test.be.         IN      A       192.168.100.21
mail.test.be.          IN      CNAME   mx.test.be.

5. Start the service and make sure it’ll start at boot

service named start
chkconfig named on

Make sure it’s running :
# rndc status
number of zones: 1
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/1000
tcp clients: 0/100
server is up and running

6. Query

# nslookup mx.test.be. 127.0.0.1
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   mx.test.be
Address: 192.168.100.20

# nslookup www.google.com. 127.0.0.1
Server:         127.0.0.1
Address:        127.0.0.1#53

Non-authoritative answer:
www.google.com  canonical name = www.l.google.com.
Name:   www.l.google.com
Address: 216.239.59.99
Name:   www.l.google.com
Address: 216.239.59.103
Name:   www.l.google.com
Address: 216.239.59.104
Name:   www.l.google.com
Address: 216.239.59.147

7. /etc/resolv.conf

If the query made on the previous point is working, you can set up /etc/resolv.conf on the server.

It should look like this :
search test.be
nameserver 127.0.0.1

반응형
반응형


만일 설치부터 필자를 계속 따라오신 분이라면 현재의 서버엔 BIND 9가 설치되어 있을 것이다.

확인해 보도록 하자.

 

# rpm -qa | grep bind
bind-libs-9.2.4-2
bind-utils-9.2.4-2
ypbind-1.17.2-3
bind-9.2.4-2
bind-chroot-9.2.4-2

 

네임서버도 설치되어 있나 확인해 보자.

# rpm -qa | grep name
caching-nameserver-7.3-3


 

이젠 서버에선 DNS를 설정할 준비가 끝났다.

 

아래 점섬내의 글은 BIND가 설치되지 않으신 분들만 보도록 하자~~

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

1. 설치

설치는 간단하게 rpm 설치 하는 법만 설명하도록 하겠습니다.
RH9에서 DNS와 관련된 패키지는 다음과 같습니다. (bind9)


bind-9.2.1-16          : DNS (도메인 이름 시스템) 서버.
bind-devel-9.2.1-16 : bind DNS 개발을 위해 필요한 파일들과 라이브러리들이 포함되어 있습니다.
bind-utils-9.2.1-16   : DNS 네임 서버들을 질의(query)하는 유틸리티.
caching-nameserver-7.2-7  : 캐싱 네임 서버를 설정하는데 필요한 설정 파일들.
redhat-config-bind-1.9.0-13 : Red Hat DNS 설정 도구.

 

위 패키지들 중에 bind-devel-9.2.1-16 는 설치하지 않도록 하겠습니다. ^^;

개발에 필요한 것이기 때문이죠.
위 패키지들을 rpm -qa | grep bind 해서 확인하시고 있을경우 삭제합니다.

 

# rpm -e --nodeps bind-libs-9.2.4-2
# rpm -e --nodeps bind-utils-9.2.4-2
# rpm -e --nodeps ypbind-1.17.2-3

 

다음과 같이 설치하세요

 

# rpm -Uvh /home/free/e-cnn/dns/bind-utils-9.2.1-16.i386.rpm
# rpm -Uvh /home/free/e-cnn/dns/bind-9.2.1-16.i386.rpm
# rpm -Uvh /home/free/e-cnn/dns/redhat-config-bind-1.9.0-13.noarch.rpm
# rpm -Uvh /home/free/e-cnn/dns/caching-nameserver-7.2-7.noarch.rpm

 

이렇게 설치가 끝났다면, dns 실행 준비가 된 것 입니다.

- CentOS 4.1 설치시 패키지선택에서 DNS 이름서버를 선택하면 위의 내용이 모두 설치됨.
  (위와 같은 설치과정을 거칠 필요가 없음)

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

 

이해를 돕기위해 사용되는 예제에서 필자는 test.net 이란 가상의 도메인과 192.168.1.100 이란 공인IP를 사용하것으로 하겠다. (참고로 192.168.~ 로 시작되는 IP는 99% 공유기 IP이다.)

설마 아래의 내용을 보고 실제로 test.net으로 따라하시는 분은 없을거라 믿는다..

 

우선 도메인을 구입하기 위해서 whois.co.kr 에 접속했다.

test.net이란 도메인을 검색했더니 다행스럽게도 소유자가 없는 도메인으로 나와서

바로 회원으로 가입하고 1년 사용료 2만얼마를 내고 도메인을 구입했다.

 

네임서버를 지정하기 위해서 [내 도메인 관리]의 [호스트 관리] 메뉴로 들어가서...

ns.test.net 이란 호스트을 만들고 IP입력란에 192.168.1.100 라고 입력한후 호스트명 생성을 클릭.

 

[내 도메인 관리] - [네임서버 변경]으로 들어가서 1차 네임서버에 ns.test.net , 2차 네임서버는 whois에서 제공하는 네임서버명을 입력하고 저장했다.

(참고로 com 이나 .net은 외국도메인이라 적용되는데 평균 24시간정도가 소요된다.)

 

이제 다시 CentOS로 들어와서...

 

1.서버에서 도메인을 제일 먼저 찾는 곳

# vi /etc/hosts
=======================================================================================
127.0.0.1        test.net      localhost
192.168.1.100  ns.test.net  ns
=======================================================================================
위와 같이 바꾸도록 하자

 

2.서버에서 쓸 dns

# vi /etc/resolv.conf
=======================================================================================
domain test.net
search test.net
nameserver 192.168.1.100
nameserver 168.126.63.1
nameserver 168.126.63.2
=======================================================================================

 

3.도메인에 대하 ip를 찾을 때 참조할 순서
# vi /etc/host.conf
=======================================================================================
order hosts,bind

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

 

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

# vi /etc/named.conf
=======================================================================================
options {
        directory "/var/named";        // zone 파일을 저장할 디렉토리
        // query-source address * port 53;  // DNS 서버의 ip와 포트 설정 (기본)
controls { //==> 127.0.0.1 에서 rndc로 접속시 컨트롤 가능하다는 의미
        inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};
// 캐시 네임 서버 설정
zone "." IN {
        type hint;
        file "named.ca";
};
// 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; };
};
include "/etc/rndc.key";
=======================================================================================

 

위 파일 내용들은 caching-nameserver에서 기본적으로 생성되는 것들이다. 대부분의 서버에서 별다른 설정하지 않고 사용하면 되고, 중요한 것은 다음 줄부터이다. test.net 이라는 도메인을 셋팅하도록 하겠다.

 

named.conf파일의 맨 아랫 줄에 아래의 내용을 추가한다.

=======================================================================================
zone "test.net" IN {
type master;
file "test.net.zone";
allow-update { none; };
};

zone "1.168.192.in-addr.arpa" { //reverse domain - IP가 역으로 입력되어 있는 것에 주목~!!
type master;
file "test.net.rev";
allow-update { none; };
};
=======================================================================================

 

zone 파일명은 test.net.zone으로 하였다.

위에서 추가한 도메인에 대한 zone 파일을 만들도록 하자..

 

# vi /var/named/chroot/var/named/test.net.zone
=======================================================================================
$TTL    86400
@       IN      SOA     ns.test.net. root.ns.test.net.  (
                2005101311 ; Serial
                28800      ; Refresh
                14400      ; Retry
                3600000    ; Expire
                86400 )    ; Minimum
                IN      NS      ns.test.net.
                IN      MX  0   mail.test.net.
;
localhost       IN      A       127.0.0.1
@                 IN      A       192.168.1.100
www            IN      A       192.168.1.100

mail              IN      A       192.168.1.100
*                  IN      A       192.168.1.100
=======================================================================================
# ln -s /var/named/chroot/var/named/test.net.zone /var/named/test.net.zone

(반드시 심볼릭 링크를 걸어야 한다~~!!!)


# vi /var/named/chroot/var/named/test.net.rev
=======================================================================================
$TTL    86400
@       IN      SOA     ns.test.net. root.ns.test.net.  (
                2005101312 ; Serial
                28800      ; Refresh
                14400      ; Retry
                3600000    ; Expire
                86400 )    ; Minimum
                IN      NS      ns.test.net.
;
100             IN      PTR     ns.test.net.
100             IN      PTR     www.test.net.
100             IN      PTR     test.net.
=======================================================================================
위에서 100이란 숫자는 IP의 제일 마지막에 해당하는 숫자이다.

# ln -s /var/named/chroot/var/named/test.net.rev /var/named/test.net.rev

 

자.. 이제 모든 설정은 끝났다.. 사실 이제부턴 네임서버를 변경한 후 하루정도가 지나야 확실한 결과를 얻을 수 있다. 또한 방화벽을 설치했다면 외부에서 네임서버로 접근할 수 없으니 주의한다. 네임서버의 포트는 42로 방화벽에서 이 포트를 풀어야 한다.


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


(1) 시작
# /etc/rc.d/init.d/named start

 

(2) 재시작
# /etc/rc.d/init.d/named reload

 

(3) 정지
# /etc/rc.d/init.d/named stop

 

(4) 서버시작시 자동으로 실행

# ntsysv

named 라는 서버스에 체크하고 OK로 저장하고 나오도록 한다.

 

(5) 호스트 네임 검사
# grep named /var/log/messages

 

(6) 설정한 도메인 확인하기

# nslookup

> server 168.126.63.1

> set type=any

> test.net
[출처] [CentOS] DNS 네임서버 설정 (BIND 9)|작성자 진아남편

 

반응형
반응형

제목 : SULINUX를 네임서버로 사용하기 2편





ㅇ 제작 : 리눅스포털(www.superuser.co.kr) 수퍼유저코리아 서버관리팀


ㅇ SULINUX  홈페이지 : www.sulinux.net

ㅇ 리눅스포털 홈페이지 : www.superuser.co.kr

SULINUX를 Name Server로 사용하기




4-6. MX(Mail eXchanger) 레코드


MX 레코드는 해당 호스트의 메일 라우팅 경로를 조정한다. 다음과 같이 설정되어 있을 경우, account@nemo.co.kr 으로 보내어 지는 편지는 실제 mail.nemo.co.kr. 으로 전송된다. 만약 mail.nemo.co.kr. 에 연결할 수 없다면, 다음 우선순위인 power.nemo.co.kr 으로 편지를 배송하게 된다. MX Priority_Number 와 같이 사용하며, Priority_Number의 숫자는 적을수록 우선순위가 높다. MX 알고리즘에서 자세히 다룬다.



nemo.co.kr.        IN  MX  10  mail.nemo.co.kr.

                   IN  MX  20  power.nemo.co.kr.

mail.nemo.co.kr.    IN  A       192.168.1.2

power.nemo.co.kr.  IN  A       192.168.1.103


다음과 같이 MX 레코드에 CNAME으로 설정된 도메인을 넣으면 안된다. 이럴 경우 몇몇 MTA(Mail Transfer Agent: sendmail)는 메일 라우팅 경로를 찾지 못하여, 메일을 주고받을 수 없다. 이는 송신인이 사용하는 MTA의 종류와 버전에 의존적이므로, 경험 많은 도메인 메니저가 아니면 문제의 원인을 진단하기도 어렵다. 반드시 주의하자.



nemo.co.kr.        IN  MX  10  mail.nemo.co.kr.  ; (X) 잘못된 사용

mail.nemo.co.kr.    IN  CNAME   power.nemo.co.kr.

power.nemo.co.kr.  IN  A       192.168.1.103


4-7. PTR(Pointer) 레코드


PTR 레코드는 IP 주소에 대해 도메인명을 매핑하여 주며, Reverse Zone 파일에서 사용된다. 다음은 IP 192.168.1.2에 대한 설정 예이다.



    1.1.168.192.in-addr.arpa.  IN  PTR  ns.nemo.co.kr.


Forward Zone에서는 다수의 도메인이 A(혹은 CNAME) 레코드를 통해 같은 IP를 갖을 수 있지만, PTR 레코드는 중복이 허용되지 않기 때문에, 해당 IP에 대한 대표 도메인명 하나만을 설정하여야 한다.


4-8. 기타 레코드들


Zone 데이터베이스에 필요한 레코드들은 위에 나열한 것만으로도 충분하지만, 더 많은 레코드들이 존재한다. 다음에 반드시 필요하지는 않으나, 종종 사용되는 레코드를 소개한다. 더 자세한 정보가 필요하다면 RFC1035, RFC1183, RFC2163을 참고하자.



    power           IN  A      192.168.1.103

                    IN  HINFO  "Sun Sparc Ultra 5"  "Solaris 2.6"

                    IN  TXT    "Nobreak's Primary Server"

                    IN  TXT    "WWW, FTP is now available"

                    IN  RP     hostmaster.nemo.co.kr.  hostinfo.nemo.co.kr.

    hostinfo        IN  TXT    "Seung-young Kim, +84864-4440/1"


HINFO(Host INFOrmation) 레코드는 두 개의 문자열(CPU 정보, OS 정보)을 갖으며 시스템 정보를 나타낸다. 문자열에 공백이 포함되어 있을 경우에는 반드시 큰따옴표를 사용하여야 한다.


TXT(TeXT) 레코드는 텍스트 정보를 갖으며 중첩되어 사용될 수 있다. RP(Responsible Person)는 담당자의 정보를 표시하는데, Email 주소(@를 도트로 치환한)와, 담당자 정보(TXT 레코드를 갖는 도메인을 포인팅함)를 갖는다. HINFO를 포함한 몇몇 레코드는 보안을 이유로 사용치 말아야 한다는 의견도 있다.



4-9. Zone 데이터베이스 예제



Figure 1의 네트워크 구성에 대한 Forward Zone 파일 zone-nemo.co.kr은 다음과 같이 작성될 수 있다.


    * nemo.co.kr 도메인에 대한 Forward Zone 파일 /var/named/zone-nemo.co.kr

    @               IN      SOA     ns.nemo.co.kr. hostmaster.nemo.co.kr. (

                                    1998122801  ;Serial

                                    21600       ;Refresh ( 6 hours)

                                    1800        ;Retry   (30 minutes)

                                    1209600     ;Expire  (14 days)

                                    86400)      ;Minimum ( 1 day)

                    IN      NS      ns.nemo.co.kr.

                    IN      NS      ns2.nemo.co.kr.

                    IN      MX 10   mail           ; 메일 라우팅 호스트

   

    mail            IN      A       192.168.1.2

   

    ; Hosts Here - This is comments

    router          IN      A       192.168.1.1

    ns              IN      A       192.168.1.2

    ns2             IN      A       192.168.1.3

    power           IN      A       192.168.1.103

                    IN      HINFO   "Sun Sparc Ultra 5"         "Solaris 2.6"

                    IN      TXT     "Nobreak Technologies, Inc."

    www             IN      CNAME   power


인버스 도메인을 위한 Reverse Zone 파일 zone-79.105.210.in-addr.arpa은 다음과 같이 작성된다.


    * Reverse Zone 파일 /var/named/zone-79.105.210.in-addr.arpa

    @               IN      SOA     ns.nemo.co.kr. hostmaster.nemo.co.kr. (

                                    1998122801  ;Serial

                                    21600       ;Refresh ( 6 hours)

                                    1800        ;Retry   (30 minutes)

                                    1209600     ;Expire  (14 days)

                                    86400)      ;Minimum ( 1 day)

                    IN      NS      ns.nemo.co.kr.

                    IN      NS      ns2.nemo.co.kr.

    ; IP-Domain mapping here

    1               IN      PTR     router.nemo.co.kr.

    2               IN      PTR     ns.nemo.co.kr.

    3               IN      PTR     ns2.nemo.co.kr.

    103             IN      PTR     power.nemo.co.kr.


loopback 주소를 위한 Reverse Zone 파일 또한 다음과 같이 작성된다. IP 127.0.0.1을 localhost. 로 매핑하는 것이 전부이므로, 본 파일은 어느 네트워크에서나 비슷하게 작성될 것이다.


    * loopback을 위한 Reverse Zone 파일 /var/named/zone-0.0.127.in-addr.arpa

   

    @               IN      SOA     ns.nemo.co.kr. hostmaster.nemo.co.kr. (

                                    1998122801  ;Serial

                                    21600       ;Refresh ( 6 hours)

                                    1800        ;Retry   (30 minutes)

                                    1209600     ;Expire  (14 days)

                                    86400)      ;Minimum ( 1 day)

                    IN      NS      ns.nemo.co.kr.

                    IN      NS      ns2.nemo.co.kr.

    ; IP-Domain mapping here

    1               IN      PTR     localhost.


Zone 파일에서의 도메인 표기는 반드시 FQDN 표기법을 따라야 한다. BIND는 도트로 끝나지 않는 문자열은 호스트명으로 처리하므로, ns.nemo.co.kr 을 ns.nemo.co.kr.nemo.co.kr. 으로 해석한다. 따라서 ns.nemo.co.kr. 과 같이 도트를 붙인 FQDN으로 표기하거나, ns 와 같이 호스트명만 사용하여야 한다. 도트를 빼먹는 실수는 매우 빈번히 발생하므로, 주의하자.


4-10. 호스팅 업체를 위한 Zone 데이터베이스 예제


호스팅업체의 경우 다음과 같이 다수의 도메인을 하나의 Zone 데이터베이스로 관리할 수가 있다. 만약, 호스팅 도메인별로 별도의 Zone을 유지한다면, 호스팅 서버의 IP 변화와 같이 관련된 모든 Zone이 수정되어야 하는 상황이 오지 않기를 기도하거나, 반나절을 편집기와 씨름할수 있는 끈기를 배워야할 것이다. 여기서 소개하는 팁은 사용자가 많은 호스팅 업체일수록 유용하게 활용될 수 있으며, 도메인 추가/수정/삭제에 드는 시간과 노력을 절약할 수 있을 것이다.


    * named.boot (BIND)

    primary         netbsd.org                      zone-default

    primary         openbsd.org                     zone-default

    .

    primary         freebsd.org                     zone-freebsd.org ; 별도의 추가 도메인이 필요한 경우

    .


    * named.conf (BIND-8)

    zone "netbsd.org"       IN { type master; file "zone-default"; };

    zone "openbsd.org"      IN { type master; file "zone-default"; };

    .

    zone "freebsd.org"      IN { type master; file "zone-freebsd.org"; };

    .


    * zone-default

    @               IN      SOA     ns.nemo.co.kr. hostmaster.nemo.co.kr. (

                                    1999030601  ;serial

                                    21600       ;Refresh ( 6 hours)

                                    1800        ;Retry   (30 minutes)

                                    1209600     ;Expire  (14 days)

                                    86400)      ;Minimum ( 1 day)

                    IN      NS      ns.nemo.co.kr.

                    IN      NS      ns2.nemo.co.kr.

                    IN      A       192.168.1.39

                    IN      MX 10   @

                    IN      MX 20   mqueue.nemo.co.kr.

   

    www             IN      CNAME   @

    telnet          IN      CNAME   @

    ftp             IN      CNAME   @

    mail            IN      CNAME   @

    pop             IN      CNAME   @

    news            IN      CNAME   news.nemo.co.kr.


    * zone-freebsd.org

    $INCLUDE zone-default

   

    ftp.kr          IN      A       147.46.102.39

    www.kr          IN      CNAME   @



4-11. Name Server 구동


네임서버를 구동하기 위한 설정이 마무리되었다. 관련 파일들이 준비되었음을 확인한 후, 네임서버를 구동하자. 일련의 과정은 다음과 같다.


    * NS.nemo.co.kr

    # ls /etc/named.conf     # BIND 부트 파일

    /etc/named.conf

    # ls /var/named/         # Zone 데이터베이스 파일 확인

    named.root

    zone-0.0.127.in-addr.arpa

    zone-79.105.210.in-addr.arpa

    zone-nemo.co.kr

    # /usr/sbin/named        # 네임 데몬 구동 (Solaris: /usr/sbin/in.named)

    # ps ax | grep named     # 프로세스 동작 확인 (Solaris: ps -e | grep in.named)

      254  ?  S    0:00 named


    * NS2.nemo.co.kr (BIND)

    # ls /etc/named.boot      # BIND 부트 파일

    /etc/named.boot

    # ls /var/named/          # Zone 데이터베이스 파일 확인

    named.root

    zone-0.0.127.in-addr.arpa

    # ndc start               # ndc(Name Daemon Control)가 설치되어 있을 경우

    Name Server Started

    # ndc status

      254  ?  S    0:00 named

    # ls /var/named/          # Primary의 Zone 전송여부 확인

    named.root

    sec-79.105.210.in-addr.arpa

    sec-nemo.co.kr

    zone-0.0.127.in-addr.arpa



4-12. Name Server 동작 확인



여기에선 [그림 3]의 가상 네트워크 구성도에 따른 설정을 다루었지만, 기본적으로 필요한 부분은 모두 적용되어 있으므로 실제 네트워크에 적용할 때에도 같은 느낌으로 설정하면 된다. 다음과 같이 타 네임서버를 통해 질의를 던져봄으로써, Namespace 가지상에 잘 연결되어 있음을 확인하자.



    $ nslookup power.nemo.co.kr ns.nemo.co.kr   # Primary 동작 확인

    Server:  ns.nemo.co.kr

    Address:  0.0.0.0

   

    Name:    power.nemo.co.kr

    Address:  192.168.1.103

   

    $ nslookup power.nemo.co.kr ns2.nemo.co.kr  # Secondary 동작 확인

    Server:  ns2.nemo.co.kr

    Address:  192.168.1.3

   

    Name:    power.nemo.co.kr

    Address:  192.168.1.103

   

    $ nslookup power.nemo.co.kr ns.kornet.ne.kr  # Namespace 링크 확인

    Server:  ns.kornet.nm.kr

    Address:  168.126.63.1

   

    Name:    power.nemo.co.kr

    Address:  192.168.1.103


위의 3가지 질의가 성공적으로 수행되었다면, 일단 네임서버가 정상적으로 운용된다고 생각해도 좋다. 확실히 하기 위해선, 로그파일 분석을 통해 Zone 데이터베이스 구성상의 오류와 BIND의 동작 상태를 살펴보아야 한다.

반응형
반응형

제목 : SULINUX를 네임서버로 사용하기 1편





ㅇ 제작 : 리눅스포털(www.superuser.co.kr) 수퍼유저코리아 서버관리팀


ㅇ SULINUX  홈페이지 : www.sulinux.net

ㅇ 리눅스포털 홈페이지 : www.superuser.co.kr

SULINUX를 Name Server로 사용하기


네임서버는 우리가 웹주소(URL)을 웹브라우즈에 입력하고 그 사이트를 찾아갈수 있도록 도와주는 서버를 말한다. 다시 말해 서버의 IP주소와 도메인을 연결시켜주는 색인역할을 한다는 것이다.


네임서버 설정은 아주 복잡하고 이렇게 복잡한 설정을 SULinux의 SSU 유틸리티를 이용하면 간단히 설정할 수 있다. 자세한 사항은 SSU의 “6-3-5. DNS 환경설정”편을 살펴보기 바란다. 이것은 간단한 설정방법이지만 네임서버의 역할을 이해하기 위해 아래 글을 작성하였다. 네임서버의 구성 및 설정을 자세히 알아보도록 하자.


네임서버는 Primary, Secondary, Cache only server로 구분된다.


Primary server는 해당 도메인을 관리하는 주 네임서버이다.

Secondary server는 특정 도메인에 대한 back-up copy를 유지하는 서버이다. Secondary는 Primary가 비정상 운행될 때와 부하를 분산시키기 위해 운용하며, 여러개가 존재할 수 있다.


보통 도메인을 관리하기 위해서는 Primary, Secondary 서버가 필요하게 되며, Secondary는 원칙적으론 외부 네트웍에 위치시켜 정전 등의 사태로 Primary가 다운되었을 때를 대비한다. 따라서, 도메인을 운영하기 위해서는 최소 2대(Primary * 1, Secondary * n) 이상의 네임서버가 요구된다.

(기술적으로 Resolver의 입장에서는 Primary와 Secondary가 구분되지 않기에 Primary 만으로도 운영은 가능하나 권고되진 않는다)


Cache only server는 도메인에 대한 데이터를 관리하지는 않고, resolving만을 처리해 준다. 만약, 본사와 지사가 있고 이 회사의 Primary, Secondary Name server가 모두 본사에 위치한다고 할 때, 지사에 위치한 네트워크 유저들은 Local DNS server가 없게 된다. 이럴 경우 도메인 resolving이 요구될 때마다 다른 네트워크(본사)로 접속을 시도하게 되므로 약간의 딜레이가 생기게 되며, 본사 네트워크가 단절 되었을시 지사도 실질적으로 인터넷 사용이 불가능한 단점이 있다. 이럴 때 지사에 Cache only server를 운용하면 효과적으로 문제를 해결할 수 있다.

 1. BIND(Berkeley Internet Name Daemon) 설치


Name server를 운용하기 위해서는 서버측 데몬 프로그램이 필요하게 되는데, 이중 BIND는 db 파일의 구성이 손쉽고 표준을 충실히 따른 검증된 도구로서 인터넷에서 가장 널리 사용된다. 대부분의 Unix 시스템에서는 BIND가 이미 설치되어 있다. /usr/sbin 디렉토리에 in.named 혹은 named가 존재함을 확인하고, BIND가 이미 설치되어 있을 경우에는 다음과 같이 설치된 BIND의 버전을 확인한다. (BIND가 동작중이여야 함)


$ dig @ns.nemo.co.kr txt chaos version.bind. | grep version

; <<>> DiG 9.2.4 <<>> @ns.nemo.co.kr txt chaos version.bind.

;version.bind.                  CH      TXT

version.bind.           0       CH      TXT     "9.2.4"


배포처인 ISC(Internet Software Consortium) 에서 BIND의 최신버젼을 확인하고, 버전 차이가 많거나 현재 버전에 심각한 문내가 보고 되었다면, 업그레이드를 고려해보아야 한다. 하지만 SULinux의 패치팀에서 신속한 패치가 이루어 질것이다. 따라서 yum update 명령을 이용하여 업데이트를 수시로 점검 관리가 필요하다.


BIND의 설치는 매우 간단하다. ISC FTP사이트에서 최신 버전의 소스를 내려받거나 SULinux에서 다운받은 다음, 압축을 푼후 아래과 명령을 입력하는 것이 설치에 필요한 전부이다.


[ISC에서 소스다운 받았을 경우]

       # make clean depend all install

 

[SULinux을 통한 설치를 원할 경우]

       # yum install bind*

     또는

       # yum update


그리고 시스템 rc.local 스크립트를 적절히 수정하여 시스템 부팅시 BIND가 자동으로 구동될 수 있도록 한다. (/etc/rc.d/init.d/named)

 2. 퍼블릭 도메인(Public Domain) 신청


Primary, Secondary 네임서버가 준비되었고 신청할 도메인이 결정되었다면, 상위 도메인 관리 기관(kr 도메인의 경우 KRNIC, com/net/org 등의 도메인은 Network Solutions을 대표로 ICANN의 심사를 획득한 등록 대행 업체들)에 도메인을 신청하여 발급(네임스페이스상에 링크) 받게 된다. 도메인 신청양식은 기관마다 조금씩 상이하지만 일반적으로 사용기관, 책임자, 관리자, 결제자 , 네임서버 정보가 요구된다. 이중 신청 도메인을 네임스페이스에 링크하기 위한 네임서버 정보는 다음과 같이 작성한다.



    2.   Complete Domain Name...: nemo.co.kr

    7a.  Primary Server Hostname..: ns.nemo.co.kr

    7b.  Primary Server Netaddress..: 192.168.1.2

    8a.  Secondary Server Hostname..: ns2.nemo.co.kr

    8b.  Secondary Server Netaddress: 192.168.1.3


"nemo.co.kr"이 등록되었다는 메시지를 받았다면, 다음과 같이 해당 도메인의 등록 여부를 확인한다.



    $ nslookup -type=ns nemo.co.kr

    Server:  ns.nemo.co.kr

    Address:  0.0.0.0

   

    nemo.co.kr     nameserver = ns.nemo.co.kr

    nemo.co.kr     nameserver = ns2.nemo.co.kr

    ns.nemo.co.kr  internet address = 192.168.1.2

    ns2.nemo.co.kr internet address = 192.168.1.3


해당 도메인에 대한 네임서버가 신청한 것과 같이 표시된다면, 등록이 바르게 진행된 것이다. 아직 등록이 안되었다면, 다음과 같은 메시지를 볼 수 있다.



*** local.name.server can't find nemo.co.kr.: Non-existent host/domain


"도메인 nemo.co.kr을 신청하는데 어떻게 그 하부에 있는 ns.nemo.co.kr, ns2.nemo.co.kr을 사용할수 있습니까?" "ns.nemo.co.kr은 nemo.co.kr 도메인 신청이 완료된 후 네임서버에서 설정 해주어야 사용할 수 있지 않습니까?"라는 의문이 들 수 있는데, 어떤 도메인을 하위 도메인으로 위임하기 위한 네임서버 정보는 상위 도메인에서 관리되기 때문에 가능하다.


3. 인버스 도메인(Inverse Domain) 신청


인버스 도메인은 IP에 대해 해당 도메인을 역으로 찾을 수 있도록 하는 서비스이다. 보통 ISP(Internet Service Provider)에서 IP를 할당받을 때 같이 신청한다. 다음과 같이 인버스 도메인에 대한 네임서버가 in-addr.arpa 네임스페이스에 등록되어 있는지 확인한다.


$ nslookup -type=ns 1.168.192.in-addr.arpa (C Class 192.168.1.x를 할당 받았을 경우)

Server: ns.nemo.co.kr

Address: 0.0.0.0


79.105.210.in-addr.arpa nameserver = ns.nemo.co.kr

79.105.210.in-addr.arpa nameserver = ns2.nemo.co.kr

ns.nemo.co.kr internet address = 192.168.1.2

ns2.nemo.co.kr internet address = 192.168.1.3


만약 다음과 같은 메시지가 나온다면, 인버스 도메인 등록이 안되어 있는 것이므로, 해당 ISP에 신청하여야 한다.


*** ns.nemo.co.kr can't find 79.105.210.in-addr.arpa.: Non-existent host/domain



 4. Name Server 설정


네트워크엔 서버가 3대 연결되어 있다. DNS를 구축하기 전에, 그림과 같이 미리 각 서버에 호스트명과 IP를 부여하자. 보통 네임서버는 ns(primary), ns2(secondary)를 호스트명으로 사용하고, IP 1(할프로 받았을 경우엔 129)을 라우터 혹은 스위치, 2를 ns, 3을 ns2에 할당한다. 도메인 nemo.co.kr은 앞서 등록기관에 신청하였으니, ns.nemo.co.kr, ns2.nemo.co.kr에 네임서버 설정을 하면 된다.


4-1. BIND부트 파일 named.conf


BIND 부트 파일은 추가사항을 손쉽게 적용할 수 있도록 파일 포맷이 변경되었다. 그리고 구버젼 부트 파일과의 혼동을 막기위해 named.conf로 리네임 되었다. 어떻게 보면 C 언어의 문법과 매우 흡사한 것을 알 수 있다. 설정을 좀더 세밀하게 할 수 있도록 작성법이 바뀌었을 뿐, BIND의 부트 파일과 크게 다를 것은 없다. 다음은 앞서 작성한 BIND 기반 부트 파일을 BIND-8에 맞게 변환한 예이다. 일반적으로 BIND-8 기반의 부트 파일은 다음에 나열된 레코드정도만이 활용되지만, 재미난 부분이 많으므로 좀더 깊숙히 알고 싶다면 http://www.isc.org/products/BIND/docs/ 를 참고하기 바란다.

다음은 Primary 네임서버를 위한 부트 파일이다.


ns.nemo.co.kr(Primary NS)의 /etc/named.conf 파일


options {

directory "/var/named";

  설명 : ';'은 주석이 아니라 줄의 끝을 의미한다. Zone 파일의 베이스 디렉토리

dump-file "/var/tmp/named_dump.db";

          설명 : Dump 파일이 생성되는 경로

statistics-file "/var/tmp/named.stats";

          설명 : 통계 파일이 생성되는 경로

pid-file  "/var/run/named.pid";

          설명 : 프로세스 ID가 담긴 파일 생성 경로

};

logging {

설명 : 불필요한 정보를 로그파일에 남기지 않는다.

 category lame-servers { null; };

 category cname { null; };

 category response-checks { null; };

 category notify { null; };

    };

 zone "." IN {

설명 : 캐쉬 파일

        type hint;

        file "named.root";

    };

zone "0.0.127.in-addr.arpa" IN {

설명 : localhost를 위한 Primary 도메인 설정

        type master;

        file "zone-0.0.127.in-addr.arpa";

    };

zone "79.105.210.in-addr.arpa" IN {

설명 : 할당 IP 블락에 대한 Reverse Zone

        type master;

        file "zone-79.105.210.in-addr.arpa";

    };

zone "nemo.co.kr" IN {

설명 : 도메인 nemo.co.kr 에 대한 Forward Zone

        type master;

        file "zone-nemo.co.kr";

    };


Secondary 네임서버를 위한 부트 파일은 다음과 같이 작성된다.


ns2.nemo.co.kr(Secondary NS)의 /etc/named.conf 파일


options {

        directory "/var/named";

    };

logging {

        category lame-servers { null; };

        category cname { null; };

    };

zone "." IN {

        type hint;

        file "named.root";

    };

zone "0.0.127.in-addr.arpa" IN {

설명 : localhost를 위한 Primary 도메인 설정

        type master;

        file "zone-0.0.127.in-addr.arpa";

    };

zone "79.105.210.in-addr.arpa" IN {

설명 : Reverse Zone에대한 Secondary 설정

        type slave;

        file "sec-79.105.210.in-addr.arpa";

        masters { 192.168.1.2; };

설명 : Primary NS의 IP 주소

    };

    zone "nemo.co.kr" IN {

설명 : nemo.co.kr 의 Secondary 설정

        type slave;

        file "sec-nemo.co.kr";

        masters { 192.168.1.2; };

    };

 4-2. 리소스 레코드(Resource Record)


Zone 파일은 Forward, Reverse 두 가지로 구분된다. Forward Zone은 도메인에 대한 IP 정보를 갖고 있는 데이터베이스이고, Reverse Zone은 IP에 대한 도메인정보를 갖는 데이터베이스이다. 앞서 named.boot 파일에 네임서버가 loopback, 79.105.210.in-addr.arpa, nemo.co.kr 도메인에 대해 Primary로 동작하도록 설정하였다. 이중 zone-0.0.127.in-addr.arpa와 zone-79.105.210.in-addr.arpa가 Reverse Zone 파일이고, zone-nemo.co.kr이 Forward Zone 파일이다.


4-3. SOA 레코드 (Start Of Authority)


Zone 파일은 항상 SOA 레코드로 시작한다. SOA 레코드는 해당 도메인, nemo.co.kr에 대해 네임서버가 인증(authoritative)된 자료를 갖고 있음을 의미하며, 자료가 최적의 상태로 유지, 관리될 수 있도록 한다.



    nemo.co.kr. IN  SOA  ns.nemo.co.kr. root.nemo.co.kr. (

                          1998122800  ;Serial

                          21600       ;Refresh ( 6 hours)

                          1800        ;Retry   (30 minutes)

                          1209600     ;Expire  (14 days)

                          86400)      ;Minimum ( 1 day)


1열에는 해당 Zone 파일에 대한 도메인명이 들어간다. 도메인명 끝의 도트를 잊지 말자. 다음과 같이 도메인명 대신 '@' 표시를 사용하여도 된다.



    @            IN  SOA  ns.nemo.co.kr. hostmaster.nemo.co.kr. (


IN(Internet)은 클래스명이다. HS, HESIOD, CHAOS와 같은 클래스도 존재하지만, 일반적으로 사용되지 않으므로 항상 IN이 사용된다고 생각하자.


SOA 다음엔 Primary 네임서버와 관리자 Email 주소가 들어간다. hostmaster.nemo.co.kr. 이 Email 주소인데, 일반적 Email 표기법에서 '@'를 도트로 바꾸어 쓰면 된다. 본 Email은 해당 도메인의 콘택 포인트(Responsible Person)로서 도메인에 문내가 발생할 경우 이를 리포팅하는 용도로 사용된다. Namespace를 쫓으며 도메인 오류를 점검하는 lamers 와 같은 도구들은 문내가 검출되었을 때 본 Email로 통지하여 준다.


다음 괄호로 둘러싸인 부분엔 Serial, Refresh, Retry, Expire, Minimum 5개의 시간(초) 필드가 놓인다. Minimum을 제외한 4개 필드는 Secondary 네임서버를 제어하기 위한 값이다. 기본 단위는 '초'이고, 단위기호 M(Minute), H(Hour), D(Day), W(Week)를 붙여 30M, 8H, 2D, 1W와 같이 사용할 수도 있다.


필드

설    명

Serial

Serial은 Secondary가 Zone 파일의 수정여부를 알 수 있도록 하기 위함이다. Secondary는 백업본의 Serial이 Primary의 Serial보다 작을 경우 Zone 파일을 재전송 받는다. 따라서 Zone 파일이 수정된 후 Serial이 변경되지 않는다면, Secondary는 백업카피를 업데이트하지 않음을 유의하자. Secondary가 없다면 Serial은 의미가 없지만 그렇다 할지라도 Zone 파일이 수정되었을 때 Serial을 증가하는 것은 좋은 습관이다.

Seria의l 표기는 증가하는 임의 숫자보단 일반적으로 최종 수정일을 YYYYMMDDNN의 형식으로 표기한다. YYYYMMDDNN 연도 표기법은 4294년까지 표기 가능하다.

Refresh

Primary측의 Zone 데이터베이스 수정여부를 Secondary가 검사하는 주기이다. 네트워크의 변경이 잦아 Zone파일이 자주 수정된다면, 3H(10800) 정도로 설정한다. Zone이 안정되는 시점에서는 일반적으로 6H(21600) - 12H로 설정한다.

Retry

Secondary측에서, Primary와 연결이 안될 경우, 재 시도 시간 주기이다. Refresh 기간 보다 적을때 의미가 있으며, 대부분의 경우 30M(1800) - 1H로 설정한다.

Expire

Secondary가 Expire로 지정된 시간동안 Primary에 연결하지 못할 경우, 오래된 백업카피의 자료가 더 이상 유효하지 않다고 보고, 해당 도메인에 대한 답변을 하지 않는다. 이 값을 너무 낮게 책정하는 것은 좋지 않다. 보통 1W - 2W(1209600)로 설정한다.

Minimum

타 네임서버가 본 Zone에 기술된 자료를 갖고 갔을 경우, 그 자료에 대한 유효기간(캐쉬에 살아있는 시간)을 설정한다. TTL(Time To Live)값이 명시되지 않은 레코드는 본 값을 기본으로 갖게 된다. 특정 레코드가 변경되었을 때, 이것이 인터넷에 전파되어 업데이트되는 주기는 전적으로 이 Minimum 값에 의존한다. 일반적으로 SOA에서는 1D(86400)를 설정하여 전체 레코드에 적용하고, 잦은 변경이 예상되는 레코드만 명시적으로 1H - 3H 정도로 낮추는 방법을 사용한다. 0은 캐싱을 하지 말라는 의미이다.


4-4. NS(Name Server) 레코드


NS 레코드로 해당 도메인에 대한 네임서버를 다음과 같이 나타낸다.



    nemo.co.kr.   IN  NS      ns.nemo.co.kr.

                   IN  NS      ns2.nemo.co.kr.


또 다른 NS의 활용으로는, 거대 도메인에서 서브 도메인을 다른 네임서버로 위임할 때이다. Namespace상의 가지연결은 이 NS 레코드로 이루어 지는데, 거대 도메인일 경우 해당하는 부분이므로, 여기서는 해당 도메인에 대한 위임 정보만을 나타낸다고 알아두자. 도메인 위임에서 자세히 다룬다.


4-5. A(Address) & CNAME(Canonical Name) 레코드

A 레코드는 도메인에 IP를 부여한다. 다음 설정을 보자. mail과 power에 A 레코드로 IP를 매핑 하였다. (mail과 mail.nemo.co.kr. 은 동일하게 해석된다.)



    ; Host addresses

    mail.nemo.co.kr.   IN  A      192.168.1.2

    power               IN  A      192.168.1.103

    ; Aliases

    www                 IN  CNAME  power.nemo.co.kr.

    ftp                 IN  CNAME  www


CNAME 레코드는 도메인에 대한 또 다른 이름이 가능하도록 한다. 예에서는 power.nemo.co.kr, www.nemo.co.kr, ftp.nemo.co.kr은 모두 같은 IP 192.168.1.103을 갖게 된다. ftp와 같이 CNAME이 CNAME을 포인팅 하는 경우는, 여러 DNS 관련 자료에서 다르게 얘기되고 있지만, 이것은 가능하다. CNAME은 포인팅하는 오리지널 도메인의 레코드를 모두 상속받기 때문에, CNAME으로 설정된 도메인은 추가 레코드를 갖을 수 없음을 유의한다. 또한, MX, NS 등의 레코드에도 CNAME으로 설정된 도메인을 넣어서는 안된다. 반드시 주의하여야 한다. CNAME의 잘못된 사용은 BIND 로그를 유심히 관찰하지 않으면 찾기 어려우므로, 확실히 할 수 없다면 CNAME으로 설정된 레코드를 아예 다른 레코드의 인자로 놓지 않는 것이 좋다. 숙련된 도메인 메니저 중에서도 트래픽과, 퍼포먼스라는 측면에서 CNAME을 전혀 사용하지 않는 경우도 있다. (참고: CNAME의 사용에 관해)



ftp                 IN  CNAME  www  ; (X) CNAME엔 추가레코드를 갖을 수

                    IN  MX     mail ;     없다.

power              IN  MX 10  mail ; (X) MX에 CNAME으로 설정된

mail                IN  CNAME  ns   ;     레코드가 올 수 없다.

반응형
반응형
dns_server_manual
반응형
반응형

yum 으로 bind 설치

# yum install bind*

네임 서버의 데이터베이스에 대한 기본적인 정보를 포함. 설정 파일 지정
/etc/named.conf

/var/named
네임서버의 zone 파일이 위치한다. 이디렉토리 변경은 named.conf 에서 변경 가능하다.

/var/named/name.local
루프백 IP 에 관한 IP 주소 -> 도메인으로 변경에 대한 정보 포함

/var/named/named.rev
도메인에 대한 역변환 데이터베이스



# vi /etc/named.conf

// test.co.kr
zone "test.co.kr {
  type master;
  file "test.co.kr.zone";
};


반응형

+ Recent posts