OS/Linux

2011.12.02 리눅스 DNS서버 구축하기

에몽이ㅋ 2012. 1. 9. 21:57

큰 맥락에서 보면 간단하다

1. bind다운로드 

2. bind 설치

3. named.conf파일설정

4. zone-file설정

5. named.conf, zone-file 체크

6. DNS변경

7. bind 실행(./named)

8. nslookup으로 확인


이중에서 가장 중요한것이 named.conf, zone-file설정이다.


이제 차근차근 큰 맥락을 따라가보자. 여기서는 source compile 로 설치했을때를 기준으로 설명합니다.(RHEL 4)


1. bind 다운로드 : http://www.isc.org/software/bind 에서 다운로드(다운받고 README파일을 통해 자신의 환경에 적합하게 실행되는지 확인하자)


2. bind 설치 : rpm설치는 그냥 rpm -Uvh filename,    

                   source compile설치는 README파일 참고

  일반적으로 Ⅰ./configure 자신이 원하는 옵션(여기서는 --prefix=/usr/local/dns/  : /usr/local/dns/안에 설치한다.)   

                  Ⅱ. make(옵션에 맞게 파일들 재컴파일)

        Ⅲ. make install(파일복사)


3. named.conf 파일설정 : /설치된경로/etc/ 아래에 named.conf파일을 생성한다.

                                   ([root@localhost etc]# vi    /usr/local/dns/etc/named.conf)


options {

        directory "/etc/namedb";                           // zone-file들이 저장될 경로

        dump-file "/etc/tmp/named_dmp.db";

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

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

};

zone "." IN {                   

        type hint;

        file "named.root";

};


zone "localhost" IN {

        type master;

        file "zone-localhost";

};


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

        type master;

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

};


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

//  (IP 역순)  192.168.0.15  ---->   0.168.192.in-addr.arpa(192.168.0.xxx로 엑서스하면 이 파일이 처리한다.)
        type master;
        file "zone-0.16.172.in-addr.arpa";
};

-------------------   여기까지는 일반적으로 거의 고정적으로 추가한다.

zone "naver.com" IN {

        type master;

        file "zone-naver.com";     // 경로를 따로 지정하지 않으면 위쪽에서 지정한 디렉토리를 디폴트로 인식한다.

};       // naver.com 이라는  URL에 접속을 하면 zone-naver.com파일을 참고해서 해당 IP에 접속한다.

------------------   자신이 원하는 URL을 위 형식과 같이 추가하면 된다.



4. zonefile 생성

위 /usr/local/dns/etc/named.conf 파일에서 디렉토리를 /etc/namedb로 지정해줬으므로 zonefile은 /etc/namedb아래에 생성한다.


named.conf파일 안에

"named.root", "zone-localhost", "zone-0.0.127.in-addr.arpa", "zone-naver.com"가 있다고 설정했으므로 각각에 해당하는 파일을 모두 생성한다.


[root@localhost namedb]# pwd

/etc/namedb


 named.root

root zone파일을 다운받는다.(InterNIC에서 제공하는 파일)  : named.conf에서는 "."에 해당하는 파일이다.

[root@localhost namedb]# wget    ftp://ftp.internic.org/domain/named.root


ⓑ vi zone-localhost

$ORIGIN localhost.

@  1D  IN  SOA   @  root 1999010100 3h 15m 1w 1d

@  1D  IN  NS    @

@  1D  IN  A     127.0.0.1

@  1D  IN  AAAA  ::1


 vi zone-0.0.127.in-addr.arpa

$TTL 3W

@  3W  IN  SOA     localhost. root.localhost.  1999010100 3h 15m 1w 1d

@  3W  IN  NS      localhost.

1  3W  IN  PTR     localhost.


ⓓ vi zone-naver.com

en.wikipedia.org/wiki/Zone_file 을 참조하여 상황에 맞게 작성


zone 파일에 대한 설명

(reference : http://jigi.net/entry/DNS-%EC%84%9C%EB%B2%84-%EA%B5%AC%EC%B6%95RHEL-4

                 en.wikipedia.org/wiki/Zone_file)

$TTL      Time To Live의 약자며 BIND9 버전부터는 첫 줄에 무조건 기록, 초단위

              캐시를 얼마나 오래 보관할지 결정, 86400(1일) 등을 설정

@          현재 도메인을 나타냄,

              nameserver는 DNS서버의 호스트명과 도메인 명을기록

              루트 도메인일 경우 반드시 마지막에 “.”을 찍어 줌

IN          클래스 이름으로 internet을 의미함

SOA       Start Of Authority 약자,  권한의 시작을 뜻함.

              serial : 버전정보(일반적으로 생성 날짜를 지정)

              refresh :  상위 네임서버에게 업데이트 요청하는 간격

              retry : 상위 네임서버에 문제 발생 시 재접속 시도 간격

              expire : 상위 네임 서버에 접속 못할 경우 이전의 정보 파기하는 간격

              minimum :  이 시간 이후에 정보가 삭제됨

NS          Name Server 약자,  설정된 도메인의 DNS서버 역할을 하는 컴퓨터를 지정

MX         Mail Exchanger 약자,  메일 서버 컴퓨터를 설정

A             호스트 이름에 상응하는 IP주소를 지정함

CNAME   호스트 이름에 대한 별칭을 부여할 때 사용함


5. named.conf, zonefile 체크
/설치경로/sbin/ 아래에 
named.conf파일 체크 : named-checkconf       (사용법 : named-checkconf    /설치경로/etc/named.conf)
[root@localhost sbin]# pwd
/usr/local/dns/sbin
[root@localhost sbin]# ./named-checkconf ../etc/named.conf
[root@localhost sbin]#        : 아무런 메시지가 나오지 않으면 named.conf파일이 이상없이 잘 설정되었다는 말

zone파일체크 :   named-checkzone    (사용법 : named-checkzone   URL    /zone파일이있는경로/zonefile)
[root@localhost sbin]# pwd
/usr/local/dns/sbin
[root@localhost sbin]# ./named-checkzone naver.com  /etc/namedb/zone-naver.com
zone naver.com/IN: loaded serial 2011120300
OK


6. DNS변경

/etc/resolv.conf 안에 DNS를 자기 IP로 바꾼다)

※service network restart할 경우 resolv.conf파일이 dhclient-script에 의해서 자동으로 바뀌는 경우가 있으니 restart하지말고 그냥 하자.


7. bind 실행(./named)

[root@localhost sbin]# pwd

/usr/local/dns/sbin

[root@localhost sbin]# ./named

[root@localhost sbin]# ps -ef |grep named

root     22056     1  0 14:37 ?        00:00:00 ./named          :    named가 실행되고 있음을 확인(named.conf가 잘못설정되있다면 

                                                                    실행되지 않는다)



8. nslookup으로 확인

[root@localhost sbin]# nslookup
> naver.com
Server:         192.168.20.128
Address:        192.168.20.128#53

Name:   naver.com
Address: 72.14.203.103
> server
Default server: 192.168.20.128
Address: 192.168.20.128#53
> exit