웹마짱구's 블로그

bind를 대체할만한 네임서버 djbdns(tinydns)

Linux/Linux : 2006/12/26 15:26


국내에서 소개되지 않은 네임서버 프로그램을 하나 소개할까 합니다.

그동안 BIND의 문제점은 너무나도 많은 보안홀과 사용자가 의도하지
않는 버그(?)가 존재하는것이 사실입니다.
이미 inetd와 더불어서 너무나도 낡은 기술(?)이기도 합니다.

Unix서버에서 많이 쓰인다는 이유로, 국내에서 대부분 채용을 하기
는 하지만, wu-ftp의 문제점때문에 proftp가 생겼듯이 sendmail을
대체하기 위해서 qmail이 탄생했듯이 bind의 문제점으로 인해서 djb
dns가 탄생했습니다.

djbdns는 qmail의 저자가 만든 작품으로써, qmail에 보안홀이 발견되
면 얼마간의 상금(1000달러던가요?)을 걸었듯이 바로 djbdns에서도
상금을 걸었지만 아직까지 djbdns에 상금을 타간 사람이 없더군요.

djbdns의 장점은 간결하고 빠르고 강력하고 무엇보다도 쉽다는것입
니다. 네임서버 셋팅이 어려운것이 아니라 bind라는 네임서버 프로
그램이 어렵다는것을 일깨워 줄만한 프로그램이 바로 djbdns입니다.

인터넷상에서 도메인호스팅서비스로 가장 큰 몇몇 업체들이 이미 채
용하여 입증한바 있기도 하며 이 업체들의 도메인들은 50만개의 도메
인을 관리하고 있습니다.

위에도 밝혔지만 국내에서는 사용되는 얘를 보기 힘들뿐만 아니라 소
개하는 사람들조차 없어서 아쉬움을 금할길이 없어서 여기에 소개를
합니다.(국내 최초 ^_^V)

본인이 usenet을 검색하다가 알게되었고, 관련자료를 찾아보았지만
국내에서는 실패를 하고, 저자의 홈페이지와 일본의 한 사이트에서
발견을 하게 되었습니다.

관심있으신분들은 한번 도전해보시기를 바랍니다.
본인도 이에 관련된 자료를 수집중에 있으며, qmail에 매료된 이후
에 도입을 신중하게 검토를 할까 합니다. 현재 테스트중이고, 적용
은 하지 못하고 있습니다만, 하고 싶은 일중의 하나가 될듯 합니다.
오늘은 이정도로 마치고, 관련 사이트를 알려드립니다.
좋은 정보가 있다면 공유를 했으면 합니다. http://www.bizlove.net
에서 말이죠.

http://cr.yp.to/djbdns.html <-- 홈페이지
http://japan.hanmir.com/jtk.cgi?url=http://djbdns.jp.qmail.org/djbdns/ <-- 일본어로 번역한 사이트
(일본 Qmail사이트에서 발견하였습니다. 번역이 매끄럽지 못하지만 많
은 도움이 되고 있습니다.)
http://www.lifewithdjbdns.org/ <--bjddns와 삶
설치 방법에 대해서 잘 나와 있습니다.
http://djbdns.org <-- djbdns 유저들의 모임 사이트
유일하게 게시판이 있는 사이트입니다. 그래서 많은 해답도 얻을수
가 있습니다.

bind에 불만이 많으신분들에게 좋은 정보가 되었으면 좋겠습니다.
이 글은 몇몇 사이트에 다시 올립니다.



제    목 : djbdns를 이용한 DNS 서버 구축
글 쓴 이 : 서준원 (linuxqna@chollian.net)
Version : 1.0 (2001.3.5)
License : 이 문서의 저작권은 저자에게 있으며, 배포 및 수정이 가능하지만, 저자에게 E-mail로 통보해야함.
-------------------------------------------------------------------------------

I. Introdution

필자는 새로운것, 남들이 안하는것을 좋아하는 경향이 있다.
다른 사람들이 sendmail을 쓸때 qmail을 썻고, oracle 을 쓸떄 informix를 썻고,
perl을 할때 python을 했었다.  그리고 역시 bind를 쓸때 djbdns를 썼다.
필자는 항상 메일서버를 세팅하면서 가장 힘들었던것이 dns의 mx 레코드를 세팅해 주는것이었다.
항상 email 혹은 전화를 걸어, mx 레코드를 어떻게 세팅하라고 알려주지만,
대부분이 BIND에 설정 대한 두려움을 가지고 있어서  쉽지는 않았다.
예전부터 qmail을 사용했었기 때문에 djbdns를 알고는 있었지만, 시도하지는 않았었다.
어느날 djbdns를 사용해 보고 싶은 충동이 들었다.  큰맘을 먹고 시도를 해봤지만, 쉽지는 않았다.
이유인즉, 자료가 없다는 것이었다.  하지만 몇시간의 노력끝에 겨우 기본적이니 세팅을 하고
mx 레코드를 세팅해서 메일을 송수신 할수가 있었다.
시간이 지난 지금 필자는 남들과 마찬가지로 bind를 쓰고 있다. djbdns가 좋지 않아서가 아니라,
어쩔수 없이, 다른 시스템 관리자들과 보조를 맞추어 주기 위해서 였다.
하지만 djbdns 세팅의 간결함은 오랜시간이 지난 지금에도 기억에 남아있다.
필자는 djbdns에 숙련자는 아니지만, 필자의 잠깐이나마 세팅했던 경험이 도움이 될까 싶어서
다음과 같이 정리한다.
참고로 djbdns는 qmail의 저자인 D. J. Bernstein 박사가 만들었다.


II. Install djbdns

1. Download source code

1.1. Pre-Requirement
  djbdns를 구동시키기 위해서는 다음과 같은 추가적인 package가 필요하다
 
  1. daemontools (http://cr.yp.to/daemontools.html) : djbdns를 start, monitor, contol 하는 tool
  2. ucspi-tcp (http://cr.yp.to/ucspi-tcp.html) : axfrdns, axfr-get 을 구동시키는 tool

1.2. Sourcecode download
  Download the djbdns from (http://cr.yp.to/djbdns/djbdns-1.05.tar.gz)


2. Compile and install
  참고로 ucsip-tcp, daemontools, djbdns 는 기본적으로  /usr/local/bin 아래 설치가 된다.
  설치 위치를 바꾸고자 한다면, 소스코드중에 /conf/home 화일을 편집한다

2.1. Unpack distribution
  # tar -xvzf djbdns-1.05.tar.gz
  # tar -xvzf ucspi-tcp-0.88.tar.gz
  # tar -xvzf daemontools-0.70.tar.gz

2.2. Install ucspi-tcp
  # cd ucspi-tcp-0.88
  # make
  # make setup check

2.3. Install daemontools
  # cd ../daemontools-0.70
  # make
  # make setup check

2.4. Install djbdns
  # tar -xvzf djbdns-1.05.tar.gz
  # cd djbdns-1.05
  # make
  # make setup check

  어떤가? 설치는 무진장 쉽지 않은가?
  하지만 문제는 세팅이다.  하지만 기본만 이해하면 쉬우니까, 걱정하지는 말자


III. Using daemontools and ucspi-tcp

1. Introducion

  필자의 경우는 항상 djbdns를 qmail과 항상 함께 사용하였다.
  qmail 역시 위에서 설치한 daemontools에 의해 구동이 된다.
  간단하게 daemontools에 대해 설명하자면 다음과 같다.

  daemontools의 기초적인 패키지는 supervise 프로그램이다. 이 프로그램은 프로세스를 구동시키고
  모니터링 해주는 역활을 한다.  daemontools에 의해 구동된 프로세스는, daemontools가 감시를 하고
  있다가, 프로세스가 다운이 되면 daemontools가 다시 구동을 시켜준다.  고로 절대 죽지 않는다.

2. Using daemontools

2.1. supervise program
  앞에서 소개했듯이 supervise프로그램은 background process로 구동되는 프로그램들을
  monitoring 하고, 만약 process가 죽으면, 그것을 다시 구동시켜준다.
  사용법은 다음과 같다.

  Usage: supervise service

  여기서 argument인 service는 구동할 프로그램의 startup script가 있는 디렉토리의 pathname 이다.
  supervise 가 구동이 되면, supervise는 지정한 service 디렉토리에 supervise라는 디렉토리를 생성한다.
  예를 들어 여러분이 /var/qmail/supervise/djbdns 라는 디렉토리에 djbdns의 구동 스크립트를 생성하고
  다음과 같이

  # supervice /var/qmail/supervise/djbdns

  했다면 디렉토리 구조는 다음과 같다.

  /var
   -/qmail
     -/supervice
       -/djbdns
         -run
     -/supervise
       -control
       -lock
       -ok
       -status

  보다시피, supervise 디렉토리가 생성이 되고, 그 이하에 3개의 화일이 생성되었다.
  여기서 run은 우리가 생성한 구동하길 원하는 프로그램의 startup script 화일이다.

2.2. svscan program
  svscan 은 여러개의 서비스를 supervise로 실행하고자 할때 쓰이는 편리한 프로그램이다.  우리들은 대부분
  qmail, djbdns 와 같이 2개 이상의 프로그램을 supervise로 띄울것이므로, svscan을 사용하면 편리하다
  사용법은 supervise와 비슷하다
      
  Usage: svscan service

  다음과 같은 예를 들어보자, 만약에 supervise로 qmail과 djbdns를 구동하기 원하는 경우에는

  /var
   -/qmail
     -/supervice
       -/qmail-smtpd
     -run
       -/qmail-send
     -run
       -/djbdns
     -run

  위와 같은 디렉토리 구조가 나올것이다. 보다시피 구동해야 하는 서비스는 qmail-smtpd, qmail-send, djbdns
  이렇게 3개이다. 이것을 일일히 supervise로 구동을 하자면 다음과 같다.

  # supervise /var/qmail/supervise/qmail-smtpd &
  # supervise /var/qmail/supervise/qmail-send &
  # supervise /var/qmail/supervise/djbdns &

  3줄을 적어줘야 한다. 하지만 svscan 을 사용하면 다음과 같이 한줄로 적을수 있다.

  # svscan /var/qmail/supervise &


IV. Using djbdns

필자는 이미 /var/qmail 이하에 qmail을 사용하고 있다는 가정하에서 설명을 한다.

1.1. Local DNS Cache
  Local DNS Cache 를 운영하기 위해서는 dnscache, dnslog 계정이 필요하다
  # useradd -M -g qmail -d /var/qmail dnscache
  # useradd -M -g qmail -d /var/qmail dnslog

  이제 data 화일을 생성해 보자
  # dnscache-conf  dnscache dnslog /etc/dnscache
  # ln -s /etc/dnscache /var/qmail/supervise

  # vi /etc/resolv.conf에 다음줄을 추가
   nameserver 127.0.0.1

  이제 테스트를 해보자 pine과 같은 MUA로 메일을 보내고 log를 체크해 보자, 아마도 nslookup, dig와 같은 query가 보일것이다
  # vi /var/qmail/supervise/dnscache/log/main/current

1.2. External DNS Cache
  Local DNS Cache 를 운영하기 위해서는 dnscache, dnslog 계정이 필요하다
  # useradd -M -g qmail -d /var/qmail dnscache
  # useradd -M -g qmail -d /var/qmail dnslog

  이제 data화일을 생성해 보자

  # dnscache-conf  dnscache dnslog /etc/dnscachex 1.2.3.4(your IP)
  # ln -s /etc/dnscachex /var/qmail/supervise

  기본적으로 dnscache는 remote host로부터의 query를 받아들이지 않는다
  외부 호스트로 부터 query를 허용하려면

  # touch /var/qmail/supervise/dnscachex/root/ip/1.2.3

  이렇게 하면 1.2.3.* 호스트로부터의 query를 받아들인다

1.3. DNS Server
  DNS Server 를 운영하기 위해서는 tinydns, dnslog 계정이 필요하다
  # useradd -M -g qmail -d /var/qmail tinydns
  # useradd -M -g qmail -d /var/qmail dnslog

  tinydns-conf 툴로 service 디렉토리를 생성하자

  # tinydns-conf tinydns dnslog /etc/tinydns 1.2.3.4(your IP)
  # ln -s /etc/tinydns /var/qmail/supervise

1.3.1. add zone
  # cd /var/qmail/supervise/tinydns/root
  # ./add-ns linuxproject.co.kr 1.2.3.5
  # ./add-ns 3.2.1.in-addr.arpa 1.2.3.5
  # make

1.3.2. add host
  # cd /var/qmail/supervise/tinydns/root
  # ./add-host ns.linuxproject.co.kr 211.219.8.66
  # ./add-host mail.linuxproject.co.kr 211.219.8.66

  이렇게 자동으로 생성된 데이터는 /var/qmail/supervise/tinydns/root/data에 다음과 같이 기록이 된다
  수동으로도 편집이 가능하다. 편집후에 make 명령으로 refresh 하는것을 잊지 않도록 하자

  =ns.linuxproject.co.kr:211.219.8.66:86400

1.3.3. add alias host
  아마도 대부분이 하나의 IP에 여러개의 host name을 사용하고 있을것이다
  이러할 경우에는 alias를 사용한다.

  # ./add-alias www.linuxproject.co.kr 211.219.8.66
  # ./add-alias mail.linuxproject.co.kr 211.219.8.66
  # make

1.3.4. add mx record

  # ./add-mx linuxproject.co.kr 211.219.8.66
  # make

  아래와 같이 수동으로 편집 가능하다

  @linuxproject.co.kr:211.219.8.66:mail.linuxproject.co.kr.:10
  은 BIND의 다음과 같다
  linuxproject.co.kr 86400 MX 10 mail.linuxproject.co.kr

1.3.5. check configuration
  먼저 data 화일의 tinydns-data format을 체크한다

  두번쨰로 data.cdb 화일을 아래와 같이 체크한다
  # cd /var/qmail/supervise/tinydns/root
  # tinydns-get a ns.linuxproject.co.kr

  세번째로 tinydns 서비스가 제대로 올라와 있는지 체크한다
  # svstat /var/qmail/supervise/tinydns
  /var/qmail/supervise/tinydns/: up (pid 1694) 815 seconds

  네번쨰로 packet  으로 체크를 한다
  # cat /var/qmail/supervise/tinydns/env/IP
  211.219.8.66

  # dnsq a ns.linuxproject.co.kr 211.219.8.66

  여섯번쨰로, DNS cache 체크
  # dnsqr a ns.linuxproject.co.kr

1.3.6 Example

.linuxproject.co.kr:211.219.8.66::259200
.8.219.211.in-addr.arpa:211.219.8.66::259200
=linuxproject.co.kr:211.219.8.66:86400
+www.linuxproject.co.kr:211.219.8.66:86400
@linuxproject.co.kr:211.219.8.66:mail.linuxproject.co.kr.::86400


V. at the End..

필자가 게으른 관계로, 요목조목 자세하게 정리하지 못한점을 사과하고 싶다.
하지만 필자가 정리한 qmail 설치법과 함께 본다면, 큰 도음이 될것이라고 생각을 한다.

top

TAG
Linux/Linux : 2006/12/26 15:26 Trackback. : Comment. : view 2109

Trackback Address :: http://jjangu.pe.kr/blog/trackback/21

Write a comment.




: 1 : ... 527 : 528 : 529 : 530 : 531 : 532 : 533 : 534 : 535 : ... 548 :