2007. 1. 3. 17:22
[포트설치]DNS 세팅 (djbdns)
2007. 1. 3. 17:22 in FreeBSD/DNS(djbdns)
[포트설치]DNS 세팅 (djbdns)
1.설치하기 (포트로 설치하기)
## daemontools 설치
cd /usr/ports/sysutils/daemontools
make install clean
## ucspi-tcp 설치
cd /usr/ports/sysutils/ucspi-tcp
make install clean
## djbdns 설치
cd /usr/ports/net/djbdns
make install clean
2. 설정하기
## daemontools 설정하기
다 설치 하셨으면..
daemontools가 자동 실행이 되도록 설정을 해줍니다.
cp /usr/ports/sysutils/daemontools/files/svscan.sh.sample /usr/local/etc/rc.d/svscan.sh
chmod a+x /usr/local/etc/rc.d/svscan.sh
## dns 설정하기
dns를 실행할 유저를 만들어줍니다.
pw groupadd -n djbdns
pw useradd -n dnslog -g djbdns -d /noexistent -s /sbin/nologin -c "dnslog" -w random
pw useradd -n dns -g djbdns -d /noexistent -s /sbin/nologin -c "dns" -w random
리눅스에서는 /servie 아래에 dns를 만들어주지만.. 프비는 메인테너의 권유대로..
/var/service 에 만들겠습니다.
mkdir /var/service
tinydns-conf dns dnslog /var/service/dns 1.2.3.4
1.2.3.4는 자기 해당 아이피입니다.
이제 var/service/dns 에 가보시면
root라는 디렉토리가 보일겁니다.
안에 들어가시면
add-childns
add-mx
add-alias
add-host
add-ns
등이 보일겁니다.
도메인설정을 하겠습니다.
예로 저의 아이피는 1.2.3.4이고
도메인은 domain.com 입니다.
./add-ns domain.com 1.2.3.4
./add-ns 3.2.1.in-addr.arpa 1.2.3.4
메일,웹,ftp 설정을 하겠습니다.
./add-host www.domain.com 1.2.3.4
./add-alias ns.domain.com 1.2.3.4
./add-alias domain.com 1.2.3.4
./add-alias ftp.domain.com 1.2.3.4
./add-mx domain.com 1.2.3.4
기타 alias 시킬것이 있으면... 해주시구요..
끝나셨으면
make
해주시구요..
만약 mx 레코드가 여러개라면..
@domain.com:1.2.3.4:a::86400
@mail.domain.com:1.2.3.5:b::86400
@mail2.domain.com:1.2.3.6:c::86400
@mail3.domain.com:1.2.3.7:d::86400
이런형태로 data파일을 수정해주시면 됩니다.
제대로 설정을 했는지 확인하실려면..
tinydns-get a domain.com
하시면 다음과 같이 나오게 됩니다.
1 domain.com:
77 bytes, 1+1+1+1 records, response, authoritative, noerror
query: 1 domain.com
answer: domain.com 86400 A 1.2.3.4
authority: domain.com 259200 NS a.ns.domain.com
additional: a.ns.domain.com 259200 A 1.2.3.4
다 끝났습니다. 리부팅 한번해주시면..
절대로 죽지 않는 dns가 작동되게 될겁니다.
기본세팅 이외에 추가 도메인이 있을땐..
./add-ns test.com 111.222.333.444
./add-alias test.com 111.222.333.444
./add-mx test.com 111.222.333.444 (mx(mail server)사용할 경우에만)
등만 추가로 설정해주시고
make 하시면 적용이 된답니다.
현재 나의 data 내용이다...
도메인을 여러개 사용중이고 각각 가상메일을 사용중이다.
즉, domain.com을 도메인 등록업체에 등록하였고, 이 도메인을 가지고
네임서버 호스트 등록을 ns.domain.com 으로 한상태이다.
domain1.com, domain2.com .... 여러개 추가되엇을 때의 상황이다.
xxx.xx.xxx.xxx 는 서버 아이피 이다.
vi /var/service/dns/root/data
------------------------------------------------------------
.domain.com:xxx.xx.xxx.xxx:a:259200
.144.77.220.in-addr.arpa:xxx.xx.xxx.xxx:a:259200
=www.domain.com:xxx.xx.xxx.xxx:86400
+ns.domain.com:xxx.xx.xxx.xxx:86400
+domain.com:xxx.xx.xxx.xxx:86400
+ftp.domain.com:xxx.xx.xxx.xxx:86400
+qmail.domain.com:xxx.xx.xxx.xxx:86400
+mrtg.domain.com:xxx.xx.xxx.xxx:86400
+jungkiri.domain.com:xxx.xx.xxx.xxx:86400
@domain.com:xxx.xx.xxx.xxx:a::86400
.domain1.com:xxx.xx.xxx.xxx:a:259200
+www.domain1.com:xxx.xx.xxx.xxx:86400
+domain1.comr:xxx.xx.xxx.xxx:86400
+mail.domain1.com:xxx.xx.xxx.xxx:86400
@domain1.com:xxx.xx.xxx.xxx:a:86400
.domain2.com:xxx.xx.xxx.xxx:a:259200
+domain2.com:xxx.xx.xxx.xxx:86400
+www.domain2.com:xxx.xx.xxx.xxx:86400
@domain2.com:xxx.xx.xxx.xxx:a::86400
-----------------------------------------------------------------
위의 진하게 보이는 부분이 추가되는 도메인에 대한 한 묶음이다.. 유심히, 살펴보면 유형을 알 수 있을것이다.
DNS 동작 확인
1. /var/service/dns/root/data에 이상이 없는지 확인
2. tinydns-get을 이용하여 data.cdb의 이상이 없는지 확인
tinydns-get a 도메인이름
3. 현재 컴퓨터의 IP 확인
cat /var/service/dns/env/IP
netstat -n -i
4. tinydns가 동작중인지 확인
svstat /var/service/dns
5. tinydns에 DNS 쿼리를
dnsq a 도메인이름 IP주소
6. DNS cache에 쿼리
dnsq a 도메인이름
※컴퓨터의 설정이 올바르다면 5번까지는 바로 동작할 것이다. 6번은 상위 name server에까지 설정이 완전히 미쳐야 올바로 동작한다.
3.참고한 글
- D.J 번스타인의 djbdns 웹사이트 ( http://cr.yp/to/djbdns.html)
- 임은재님의 은재의 리눅스 페이지 ( http://kldp.org/~eunjea/)
- ienfant님의 djbdns를 이용한 dnscache 설정 ( http://club.shinbiro.com/clb/bbs/sbrClbBbs_View.jsp?bbsid=66828&method=TITLE&keyword=djbdns&pg=1&artno=534)
- 디망쉬님의 qmail, djbdns 의 매력 ( http://club.shinbiro.com/clb/bbs/sbrClbBbs_View.jsp?bbsid=66828&method=TITLE&keyword=djbdns&pg=1&artno=532)
## daemontools 설치
cd /usr/ports/sysutils/daemontools
make install clean
## ucspi-tcp 설치
cd /usr/ports/sysutils/ucspi-tcp
make install clean
## djbdns 설치
cd /usr/ports/net/djbdns
make install clean
2. 설정하기
## daemontools 설정하기
다 설치 하셨으면..
daemontools가 자동 실행이 되도록 설정을 해줍니다.
cp /usr/ports/sysutils/daemontools/files/svscan.sh.sample /usr/local/etc/rc.d/svscan.sh
chmod a+x /usr/local/etc/rc.d/svscan.sh
## dns 설정하기
dns를 실행할 유저를 만들어줍니다.
pw groupadd -n djbdns
pw useradd -n dnslog -g djbdns -d /noexistent -s /sbin/nologin -c "dnslog" -w random
pw useradd -n dns -g djbdns -d /noexistent -s /sbin/nologin -c "dns" -w random
리눅스에서는 /servie 아래에 dns를 만들어주지만.. 프비는 메인테너의 권유대로..
/var/service 에 만들겠습니다.
mkdir /var/service
tinydns-conf dns dnslog /var/service/dns 1.2.3.4
1.2.3.4는 자기 해당 아이피입니다.
이제 var/service/dns 에 가보시면
root라는 디렉토리가 보일겁니다.
안에 들어가시면
add-childns
add-mx
add-alias
add-host
add-ns
등이 보일겁니다.
도메인설정을 하겠습니다.
예로 저의 아이피는 1.2.3.4이고
도메인은 domain.com 입니다.
./add-ns domain.com 1.2.3.4
./add-ns 3.2.1.in-addr.arpa 1.2.3.4
메일,웹,ftp 설정을 하겠습니다.
./add-host www.domain.com 1.2.3.4
./add-alias ns.domain.com 1.2.3.4
./add-alias domain.com 1.2.3.4
./add-alias ftp.domain.com 1.2.3.4
./add-mx domain.com 1.2.3.4
기타 alias 시킬것이 있으면... 해주시구요..
끝나셨으면
make
해주시구요..
만약 mx 레코드가 여러개라면..
@domain.com:1.2.3.4:a::86400
@mail.domain.com:1.2.3.5:b::86400
@mail2.domain.com:1.2.3.6:c::86400
@mail3.domain.com:1.2.3.7:d::86400
이런형태로 data파일을 수정해주시면 됩니다.
제대로 설정을 했는지 확인하실려면..
tinydns-get a domain.com
하시면 다음과 같이 나오게 됩니다.
1 domain.com:
77 bytes, 1+1+1+1 records, response, authoritative, noerror
query: 1 domain.com
answer: domain.com 86400 A 1.2.3.4
authority: domain.com 259200 NS a.ns.domain.com
additional: a.ns.domain.com 259200 A 1.2.3.4
다 끝났습니다. 리부팅 한번해주시면..
절대로 죽지 않는 dns가 작동되게 될겁니다.
기본세팅 이외에 추가 도메인이 있을땐..
./add-ns test.com 111.222.333.444
./add-alias test.com 111.222.333.444
./add-mx test.com 111.222.333.444 (mx(mail server)사용할 경우에만)
등만 추가로 설정해주시고
make 하시면 적용이 된답니다.
현재 나의 data 내용이다...
도메인을 여러개 사용중이고 각각 가상메일을 사용중이다.
즉, domain.com을 도메인 등록업체에 등록하였고, 이 도메인을 가지고
네임서버 호스트 등록을 ns.domain.com 으로 한상태이다.
domain1.com, domain2.com .... 여러개 추가되엇을 때의 상황이다.
xxx.xx.xxx.xxx 는 서버 아이피 이다.
vi /var/service/dns/root/data
------------------------------------------------------------
.domain.com:xxx.xx.xxx.xxx:a:259200
.144.77.220.in-addr.arpa:xxx.xx.xxx.xxx:a:259200
=www.domain.com:xxx.xx.xxx.xxx:86400
+ns.domain.com:xxx.xx.xxx.xxx:86400
+domain.com:xxx.xx.xxx.xxx:86400
+ftp.domain.com:xxx.xx.xxx.xxx:86400
+qmail.domain.com:xxx.xx.xxx.xxx:86400
+mrtg.domain.com:xxx.xx.xxx.xxx:86400
+jungkiri.domain.com:xxx.xx.xxx.xxx:86400
@domain.com:xxx.xx.xxx.xxx:a::86400
.domain1.com:xxx.xx.xxx.xxx:a:259200
+www.domain1.com:xxx.xx.xxx.xxx:86400
+domain1.comr:xxx.xx.xxx.xxx:86400
+mail.domain1.com:xxx.xx.xxx.xxx:86400
@domain1.com:xxx.xx.xxx.xxx:a:86400
.domain2.com:xxx.xx.xxx.xxx:a:259200
+domain2.com:xxx.xx.xxx.xxx:86400
+www.domain2.com:xxx.xx.xxx.xxx:86400
@domain2.com:xxx.xx.xxx.xxx:a::86400
-----------------------------------------------------------------
위의 진하게 보이는 부분이 추가되는 도메인에 대한 한 묶음이다.. 유심히, 살펴보면 유형을 알 수 있을것이다.
1. /var/service/dns/root/data에 이상이 없는지 확인
2. tinydns-get을 이용하여 data.cdb의 이상이 없는지 확인
tinydns-get a 도메인이름
3. 현재 컴퓨터의 IP 확인
cat /var/service/dns/env/IP
netstat -n -i
4. tinydns가 동작중인지 확인
svstat /var/service/dns
5. tinydns에 DNS 쿼리를
dnsq a 도메인이름 IP주소
6. DNS cache에 쿼리
dnsq a 도메인이름
※컴퓨터의 설정이 올바르다면 5번까지는 바로 동작할 것이다. 6번은 상위 name server에까지 설정이 완전히 미쳐야 올바로 동작한다.
3.참고한 글
- D.J 번스타인의 djbdns 웹사이트 ( http://cr.yp/to/djbdns.html)
- 임은재님의 은재의 리눅스 페이지 ( http://kldp.org/~eunjea/)
- ienfant님의 djbdns를 이용한 dnscache 설정 ( http://club.shinbiro.com/clb/bbs/sbrClbBbs_View.jsp?bbsid=66828&method=TITLE&keyword=djbdns&pg=1&artno=534)
- 디망쉬님의 qmail, djbdns 의 매력 ( http://club.shinbiro.com/clb/bbs/sbrClbBbs_View.jsp?bbsid=66828&method=TITLE&keyword=djbdns&pg=1&artno=532)