네이버 고슴도치(http://cafe.naver.com/praying4u/41)님의 블로그에서 퍼온글 입니다

BIND DNS 서버 구축하기
 

▒ 강좌에 앞서..


본 강좌는 커널 2.6 기반의 코어리눅스 배포판 천마 RPM 패키지를 기준으로 하였으며 아울러 본자료는 초급 리눅서들을 대상으로한 자료임으로 중급자 이상의 리눅서 혹은 구루(Guru)들의 태클은 사양하겠습니다. 다만 강좌에 보탬이 되는 리플이나 댓글등은 환영합니다.


수정요청 및 문의메일 : xfeel@xfeelis.pe.kr


2004. 10. 06. - Linuxer광민 -


 

▷ DNS 서버란?

 

Domain Name System 의 약자로서 인터넷 도메인 이름들의 위치를 알아내기 위해 IP 주소로 바꾸어주는 서버입니다. 도메인 이름은 인터넷 주소로서 사람들이 기억하기 쉽게 하기위한 표기 수단이지만, 인터넷에서 어떤 컴퓨터를 실제로 찾기 위해서는 숫자 체계로 된 IP 주소가 필요하게 됩니다. 이를 매칭해주는 것이라고 생각하시면 됩니다.


예) 어떤 사용자가 필자의 웹페이지를 보기위해 웹브라우저 주소창 상에 http://xfeelis.pe.kr 이란 도메인을 넣었습니다.


이때 웹브라우저는 xfeelis.pe.kr이란 도메인에 실제 인터넷상 위치를 파악하기 위해 사용자 PC에 설정되 있는 DNS서버 (보통 일반사용자의 경우 한국통신 DNS를 이용 168.126.63.1 등) 를 거처 실제 서버의 IP를 확인하게 되고 다시 해당IP에 구축되어 있는 DNS서버(우리가 구축하고자 하는 서버)에 접근하여 웹서버가 매칭되어있는 IP를 묻게 됩니다.


이때 BIND DNS 서버가 사용자에게 해당 IP정보를 제공하게 됨으로서 최종적으로 사용자는 필자의 웹서버에 접근하여 웹페이지를 볼수 있게 됩니다.


※ 참고 : DNS 서버(네임서버)와 Web서버는 한대의 동일한 시스템에 설치될수도 있고 각각 다른 시스템에 분산서버 형태로 설치될수도 있시때문에 네임서버에서 이를 매칭 해주게됨.



▷ BIND는?


BIND는 대부분의 BSD 유닉스 계열이나 Linux 시스템에서 사용할수 있도록 개발된 DNS로서 도메인을 IP로 매칭하는 네임서버와 resolver로 구성되어 있습니다. 여기서 resolver란 반대로 IP를 도메인으로 매칭하는 서비스 라이브러리 입니다.



▶ BIND의 설치


BIND의 설치는 RPM(Redhat Package Management) 패키지로 간단 설치하는 방식과 소스컴파일 버전을 직접 컴파일하여 설치하는 방법으로 나뉩니다.


BIND의 설치 과정은 그리 어렵지 않고 이미 수많은 커뮤니티와 인터넷상에 자료들이 넘처나고 있음으로 생략하도록 하겠습니다.



▶ BIND 설정에 필요한 파일들


/etc/named.conf (설치와 동시에 자동 생성 되어있음)

/var/named/211.188.120.rev (vi에디터 등으로 직접 생성필요)

/var/named/zone-ns.xfeelis.pe.kr (vi에디터 등으로 직접 생성필요)

/var/named/zone-xfeelis.pe.kr (vi에디터 등으로 직접 생성필요)

/var/named/zone-mail.xfeelis.pe.kr (vi에디터 등으로 직접 생성필요)

/var/named/zone-ftp.xfeelis.pe.kr (vi에디터 등으로 직접 생성필요)



▶▷ /etc/named.conf 의 설정


// generated by named-bootconf.pl


options {
        directory "/var/named";

        cleaning-interval 120; // 지정된 시간을 주기로 캐시를 청소합니다.
        statistics-interval 30; // 지정된 시간을 주기로 통계 로그를 작성합니다.

        statistics-file "/var/tmp/named.stats"; // 통계로그가 생성되는 경로 입니다.
        allow-transfer { 127.0.0.1; 211.188.120.199; }; // 네임서버 백업을 위한 접근을 제한하며 지정된 IP만 허용합니다. 이는 곧 2차 네임서버의 운영을 말하며 1차 네임서버가 어떠한 이유로 죽었을 경우 2차네임서버가 작동을 대신하게 됩니다.
        /*
        /*
         * 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;
};


logging {   // 불필요한 정보를 로그파일에 남기지 않도록 null값을 주게 됩니다.
            category lame-servers { null; };
            category cname { null; };
            category response-checks { null; };
            category notify { null; };
};



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


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


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 "120.188.211.in-addr.arpa" {  ---------------- ①
        type master;                        ---------------- ㉠
        file "211.188.120.rev";            ---------------- ⓐ
};


zone "ns.xfeelis.pe.kr" {              ---------------- ②
        type master;
        file "zone-ns.xfeelis.pe.kr";  ---------------- ⓑ
};


zone "xfeelis.pe.kr" {                   ---------------- ③
        type master;
        file "zone-xfeelis.pe.kr";      
---------------- ⓒ

};

zone "mail.xfeelis.pe.kr" {            ---------------- ④
        type master;
        file "zone-mail.xfeelis.pe.kr";---------------- ⓓ
};

zone "ftp.xfeelis.pe.kr" {              ---------------- ⑤
        type master;
        file "zone-ftp.xfeelis.pe.kr";  ---------------- ⓔ
};


include "/etc/rndc.key";


 

②~⑤ 모두 zone 파일 즉 도메인을 IP로 매칭연결 시켜주기 위해 사용되는 참조하는 파일이 실제로 안내하고 연결될 주도메인과 각각의 서브도메인 지정하는 설정 지시자입니다.


필자의 경우 주도메인이  xfeelis.pe.kr 이기에 네임서버용 ns.xfeelis.pe.kr과 xfeelis.pe.kr 그리고 FTP와 Mail 서버를 연결시켜줄 서브도메인들을 지정하였습니다.


①의 경우는 반대로 IP를 도메인으로 역변환 하는 것을 지정하는 것으로서 표기법은 자신의 아이피가 211.188.120.198 일경우 zone "120.188.211.in-addr.arpa" 와 같이 마지막 198을 제외하고 역으로 표기하면 됩니다.


ⓐ~ⓔ은 위에서 ②~⑤ 지정한 각각의 도메인들이 연결될 IP정보가 담긴 zone파일에 파일명을 지정해 주는 것입니다. 밑에서 다시 설명하겠지만  /var/named/ 하위로 방금 지정한 이름대로 zone파일을 생성해줘야 네임서버가 가동되게 됩니다



▶▷ /var/named/211.188.120.rev 파일의 생성과 설정(자신의 IP를 이용하여 생성하세요 --;)


1. /var/named 경로에서 vi 에디터등을 이용하여 파일을 생성합니다.

2. 다음과 같은 내용을 입력하며 도메인은 자신의 도메인으로 변경하면 되겠죠?.


@       IN      SOA     ns.xfeelis.pe.kr. webmaster.ns.xfeelis.pe.kr.  (

                                      2004100600 ; Serial    ----------- ①
                                      28800      ; Refresh    ----------- ②
                                      14400      ; Retry        ----------- ③
                                      3600000    ; Expire     ----------- ④
                                      86400 )    ; Minimum  ----------- ⑤


                IN  NS  ns.xfeelis.pe.kr.                   ----------- ⑥
                IN  NS  ns2.xfeelis.pe.kr.

198           IN      PTR     www.xfeelis.pe.kr.       ---------- ⑦
198           IN      PTR     ns.xfeelis.pe.kr.

199           IN      PTR     ns2.xfeelis.pe.kr. 


※ 주의사항 : 모든 도메인 뒤에는 마감 . 표시를 넣어주어야 함!


① 은 2차 네임서버가 1차 네임서버(현재서버) zone파일의 수정여부를 파악할수 있도록 최종 수정일을 기입하는 곳입니다. 이 날짜를 기준으로 2차 네임서버는 네임서버정보를 백업받을것d인지 판단합니다.  


② 는 1차 네임서버측의 zone 파일 DB의 수정여부를 2차 네임서버가 체크하는 주기입니다. 운영되는 네트워크 환경의 변화가 많아(예를 들면 유동 IP를 이용하여 서버를 구축한 사용자) 잦은 수정이 필요하다면 3H(시간기준) 혹은 10800(초단위기준) 정도로 하면 될듯 합니다 ^^;


③ 은 2차 네임서버가 백업이나 체크를 위해 1차 네임서버에 접속을 시도하다 연결이 실패하였을 경우 재시도를 하는 주기입니다.


④ 의 경우는 1차네임서버가 어떠한 연유로 죽었을경우 2차 네임서버는 1차네임서버를 대신하여 활동을 지속하면서 여기서 지정한 시간동안 1차 네임서버와의 교신에 성공하지 못했을경우 마지막으로 백업받은 도메인 매칭 정보가 더이상 쓸모없다고 판단을 내려 더이상 사용자들의 도메인 매칭 정보 요청에 대한 답변을 하지 않게됩니다.


⑤ 의 경우는 타 네임서버 즉 다른 기관이나 서버가 운용하는 네임서버가 우리가 구축한 네임서버의 정보를 가져갔다고 했을때  그 자료에 대한 유효시간을 설정하는 곳입니다.


⑥ 는 보시다 시피 NS 즉 Name Sever의 약칭으로 네임서버의 도메인을 지정하는 곳입니다.

필자의 경우는 2차네임서버의 설정또한 해놓았습니다.


⑦ 은 네임서버에서 각각의 IP들로 연결해줄 도메인들에 대한 매칭 정보를 입력하는 것입니다.

www.xfeelis.pe.kr 도메인은 211.188.120.198 IP로 연결될 것입니다. ^^


 


 

▶▷ /var/named/zone-ns.xfeelis.pe.kr 파일의 설정


자이제 부터 실제로 사용자의 요청에 의해 들어오는 도메인을 해당 IP로 연결 매칭시켜주는 역활을 하는 zone파일에 대해서  알아보는 단계입니다.


1. 먼저 /var/named/ 하위로 vi를 이용하여 zone파일을 생성합니다. 도메인은 물론 자신의 도메인을 활용하여야 겠지요? ^^ 예) zone-ns.사용자도메인.pe.kr


$TTL    86400
@         IN      SOA     ns.xfeelis.pe.kr. webmaster.ns.xfeelis.pe.kr.  (
                                      2004100600 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum

 

            IN      NS      ns.xfeelis.pe.kr.
            IN      NS      ns2.xfeelis.pe.kr.
            IN      MX 0   mail.xfeelis.pe.kr.     
---------- ①

            IN      MX 10  mail2.xfeelis.pe.kr.   ---------- ②


            IN      A       211.188.120.198
ns         IN      A       211.188.120.198
ns2       IN      A       211.188.120.199
www     IN      A       211.188.120.198
ftp         IN      A       211.188.120.198
mail       IN      A       211.188.120.198

mail2     IN      A       211.188.120.200

pop       IN      A       211.188.120.198
telnet     IN      A       211.188.120.198

①② 부위는 메일서버의 도메인 지정을 합니다. MX0 이 우선적으로 매칭되며 만약 답이없을 경우(메일서버가 죽었을경우) 다음 순위인 MX10에 매칭되어있는 메일서버를 찾게 됩니다.


나머지 하위에 표기되어있는 부분들은 설명하지 않아도 아시리라 생각합니다. 각각에 서비스가 되어지는 도메인들에 대한 IP 매칭을 해주는 것입니다.


이것으로 zone-ns.xfeelis.pe.kr 의 생성과 설정은 끝난것이며 그외의 zone 파일들은 동일한 내용으로 작성하되 파일의 이름만 다르게 해주면 됩니다. 즉 어짜피 도메인 매칭정보는 공유하는 것이기 때문에 특별히 다를 이유가 없는것이지요 ^^


cp 명령어를 이용하여 cp /var/named/zone-ns.xfeelis.pe.kr /var/named/zone-xfeelis.pe.kr 과 같이 나머지 존파일들을 생성해주시면 됩니다.


이것으로 네임서버에 대한 모든 설정은 끝난 것입니다. 자! 이제 네임서버를 가동해 볼까요?



/etc/rc.d/init.d/named start 혹은 service named start 를 실행해주세요 ^ㅡ^


 


 

▒ 마치며...


이외에 몇몇의 지시자 혹은 응용부분이 더 있습니다만 필자의 피곤함으로 생략하였으며 좀더 자세한 사항의 질문등은 메일을 통해 문의 바랍니다.


또한 위의 내용만 설정하셔도 BIND 네임서버는 무리없이 가동되는것을 실제 운영으로 확인 하였음을 알려드립니다.


진정한 리눅서는 스스로 탐구하고 질문을 던지며 답을 찾는 습관이 중요합니다. 여러분 또한 진정한 리눅서로 성장해 나갈것을 기대하며 이상으로 BIND DNS 서버에 대한 초급강좌를 마치겠습니다.


다음시간에는 Sendmail 서버 구축에 대하여 다뤄보겠습니다. 부족한 자료 참조해 주셔서 감사합니다.



출처 : http://paper.cyworld.nate.com/paper/paper_item.asp?paper_id=1000032567&post_seq=33304&cpage=1&search_type=&search_keyword=


문제가 된다면 삭제 하겠습니다!

by 티티알 2007. 4. 17. 09:37
| 1 2 |