본 글은 FreeBSD에서 djbdns를 설치하는 방법이며 내부 dnscache 설정이 포함되어 있습니다.
(tested : FreeBSD 8.3, 9.1)

djbdns는 Qmail 제작자가 만들었으며 기존 BIND 보다 설정이 쉽고 가볍습니다.

1. djbdns 설치
djbdns를 설치하기 위해선 daemoontools와 ucspi-tcp가 필요합니다.
하지만, FreeBSD Ports 특성상 의존성은 자동설치가 되기 때문에 설치법은 생략 하겠습니다.

[root@yongbok ~]# cd /usr/ports/dns/djbdns ; make install clean


2. 서비스 사용자 및 그룹 추가
djbdns 그룹과 dnslog, dns 사용자를 추가합니다.

[root@yongbok ~]# pw groupadd -n djbdns
[root@yongbok ~]# pw useradd -n dnslog -g djbdns -d /noexistent -s /sbin/nologin -c “dnslog” -w random
[root@yongbok ~]# pw useradd -n dns -g djbdns -d /noexistent -s /sbin/nologin -c “dns” -w random

 

3. rc.conf 등록

[root@yongbok ~]# echo ‘svscan_enable=”YES”‘ >> /etc/rc.conf

 

4. 내부캐시 DNS 설정 (사용하지 않는 분은 5번부터 설정 하시면 됩니다.)

[root@yongbok ~]# pw useradd -n dnscache -g djbdns -d /noexistent -s /sbin/nologin -c “dnscache” -w random
[root@yongbok ~]# mkdir /var/log/dnscache
[root@yongbok ~]# dnscache-conf dnscache dnslog /var/dnscache 127.0.0.1
[root@yongbok ~]# chown -R dnscache:djbdns /var/dnscache
[root@yongbok ~]# chown -R dnslog:djbdns /var/log/dnscache
[root@yongbok ~]# ln -s /var/dnscache /var/service/dnscache
[root@yongbok ~]# ee /var/dnscache/log/run
#!/bin/sh
#exec setuidgid dnslog multilog t ./main
exec setuidgid dnslog multilog t /var/log/dnscache
[root@yongbok ~]# /usr/local/etc/rc.d/svscan start

 

5. djbdns 설정
Qmail을 사용중이라면 service 디렉토리는 생성 하지 않아도 됩니다.

[root@yongbok ~]# mkdir /var/service

 

뒤에 아이피 주소는 외부로 사용될 서버 아이피를 입력 하시면 됩니다.

[root@yongbok ~]# tinydns-conf dns dnslog /var/service/dns 192.168.0.1

 

– 네임서버 및 리버스 등록
리버스 도메인은 C-class를 제외한 나머지 주소를 뒤집어 입력 해주시면 됩니다.
ex) server ip : 192.168.0.1, reverse : 0.168.192.in-addr.arpa

[root@yongbok ~]# cd /var/service/dns/root
[root@yongbok /var/service/dns/root]#./add-ns yongbok.net 192.168.0.1
[root@yongbok /var/service/dns/root]#./add-ns 0.168.192.in-addr.arpa 192.168.0.1

 

– 호스트 및 메일서버 등록
host를 등록한 아이피는 중복 등록 될수 없으며 alias를 이용하여 등록 하시면 됩니다.
(BIND는 A호스트를 추가 등록 하였지만 djbdns는 alias로 추가합니다.)

[root@yongbok /var/service/dns/root]#./add-host www.yongbok.net 192.168.0.1
[root@yongbok /var/service/dns/root]#./add-alias mirror.yongbok.net 192.168.0.1
[root@yongbok /var/service/dns/root]#./add-alias mirror.yongbok.net 192.168.0.2
[root@yongbok /var/service/dns/root]#./add-alias ruo91.yongbok.net 192.168.0.1
[root@yongbok /var/service/dns/root]#./add-mx yongbok.net 192.168.0.1

 

– TTL(Time To Live), CNAME, SPF 설정하려는 경우
/var/service/dns/root에 위치해 있는 data 파일을 수정하면 됩니다.

– TTL
alias로 등록된 www.yongbok.net의 TTL을 변경 하고자 하는 경우 아이피 뒤에 있는 콜론(:) 뒤에 값을 추가하면 됩니다.
기본값은 86400으로 설정 되어 있습니다.

[root@yongbok /var/service/dns/root]# ee date
.yongbok.net:192.168.0.1::259200
.80.102.183.in-addr.arpa:192.168.0.1::86400
=yongbok.net:192.168.0.1:86400
+ns.yongbok.net:192.168.0.1:86400
+www.yongbok.net:192.168.0.1:86400
+mirror.yongbok.net:192.168.0.1:86400
+mirror.yongbok.net:192.168.0.2:86400
+ruo91.yongbok.net:192.168.0.1:86400

 

– CNAME
BIND와 djbdns 설정값을 비교 해보면 쉽게 이해 됩니다.

-BIND

server IN CNAME server.example.com.
server2 IN CNAME server2.example.com.

 

– djbdns

Cserver.yongbok.net:server.example.com.
Cserver.yongbok.net:server2.example.com.

 

따라서, CNAME 사용시에는 C[hostname]:[hostname2]. 처럼 사용하면 됩니다.

[root@yongbok /var/service/dns/root]# ee date
Cserver.yongbok.net:server.example.com.
Cserver.yongbok.net:server2.example.com.

 

– SPF
기존 메일서버와 Google 메일을 등록하는 예제입니다. 072는 ascii 코드에서 콜론(:)을 의미합니다.

[root@yongbok /var/service/dns/root]# ee date
@yongbok.net:192.168.0.1:a:v=spf1 ip4\072192.168.0.1 ip4\07274.86.48.99 ip4\07274.86.48.102 ip4\07274.86.48.98 a mx include\072_spf.google.com ~all:3600

 

6. 적용
djbdns는 /var/service/dns/root 에서 make 명령어 만으로 위에서 설정한 것을 적용할수 있습니다.

[root@yongbok /var/service/dns/root]# make
/usr/local/bin/tinydns-data

 

Thanks. 😀