서버 설정 · 5 min read · Nov 27, 2025
완벽한 DjbDNS 설정 Ubuntu Server 8.04 (amd64) Hardy
완벽한 DjbDNS 설정 Ubuntu Server 8.04 (amd64) Hardy
DjbDNS는 도메인 이름 시스템 도구 모음입니다. 기본 DNS 작업을 위한 소프트웨어를 포함합니다:
DNS 캐시: 인터넷 호스트의 주소 찾기. 브라우저가 www.hotwired.com에 연락하고자 할 때, 먼저 djbdns의 dnscache와 같은 DNS 캐시에 IP 주소를 찾기 위해 요청합니다. 인터넷 서비스 제공업체는 고객이 요청한 IP 주소를 찾기 위해 dnscache를 운영합니다. 가정용 컴퓨터나 워크스테이션을 운영하는 경우, 웹 브라우징 속도를 높이기 위해 자신의 dnscache를 운영할 수 있습니다.
DNS 서버: 인터넷 호스트의 주소 게시. www.hotwired.com의 IP 주소는 HotWired의 DNS 서버에 의해 게시됩니다. djbdns는 범용 DNS 서버인 tinydns를 포함하고 있으며, 네트워크 관리자는 tinydns를 사용하여 자신의 컴퓨터의 IP 주소를 게시합니다. djbdns는 DNS 방화벽 및 RBL을 게시하기 위한 특수 목적 서버도 포함합니다.
DNS 클라이언트: DNS 캐시와 통신. djbdns는 DNS 클라이언트 C 라이브러리와 여러 명령줄 DNS 클라이언트 유틸리티를 포함합니다. 프로그래머는 이러한 도구를 사용하여 DNS 캐시에 요청을 보냅니다.
DjbDNS는 또한 관리자가 잘못 구성된 원격 서버를 진단하는 데 사용하는 dnstrace와 같은 여러 DNS 디버깅 도구를 포함합니다.
보안 기능:
- dnscache는 chroot 감옥 내에서 전용 비루트 uid로 실행되므로 나머지 머신에 접근할 수 없습니다.
- tinydns는 자신의 chroot 감옥 내에서 또 다른 전용 비루트 uid로 실행됩니다.
- walldns는 자신의 chroot 감옥 내에서 또 다른 전용 비루트 uid로 실행됩니다.
- dnscache는 지정된 IP 주소 목록 외부에서 오는 DNS 쿼리를 무시합니다.
- dnscache와 DNS 라이브러리는 각 쿼리 패킷에 대해 새로운 쿼리 ID와 새로운 UDP 포트를 사용합니다. 그들은 해당 쿼리가 방금 전송된 IP 주소 외부에서 오는 DNS 응답을 무시합니다.
- dnscache는 예측할 수 없는 포트 번호와 ID를 선택하기 위해 암호화 생성기를 사용합니다.
- dnscache는 캐시 오염에 면역입니다.
tinydns는 정보를 캐시하지 않습니다. 재귀를 지원하지 않습니다.
사전 설치
apt-get install build-essential
mkdir /tmp/downloads
cd $_
wget -c HYPERLINK "http://www.thedjbway.org/patches/djb_errno_patches.tgz" http://www.thedjbway.org/patches/djb_errno_patches.tgz
tar -zxvf djb_errno_patches.tgz
wget -c HYPERLINK "http://cr.yp.to/daemontools/daemontools-0.76.tar.gz" http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
wget -c HYPERLINK "http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz" http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
wget -c HYPERLINK "http://cr.yp.to/djbdns/djbdns-1.05.tar.gz" http://cr.yp.to/djbdns/djbdns-1.05.tar.gz모든 패키지 설치
a. ucspi-tcp-src 설치:
cd /tmp/downloads
tar -zxvf ucspi-tcp-0.88.tar.gz
cd ucspi-tcp-0.88
patch -p1 < /tmp/downloads/ucspi-tcp-0.88.errno.patch
make
make setup checkb. daemontools
cd /tmp/downloads
tar -zxvf daemontools-0.76.tar.gz
cd admin/daemontools-0.76/
touch /etc/inittab
patch -p1 < /tmp/downloads/daemontools-0.76.errno.patch
package/installvi /etc/event.d/svscan# svscan - daemontools
start on runlevel 2
start on runlevel 3
start on runlevel 4
start on runlevel 5
stop on runlevel 0
stop on runlevel 1
stop on runlevel 6
respawn
exec /command/svscanboot이 설치 프로그램은 /command의 모든 svscan 명령에 대한 링크만 생성하므로, 다음과 같이 복사하는 것이 좋습니다:
cd /command
rm -rf *
cp /tmp/downloads/admin/daemontools/command/* /command/그게 전부입니다… (재부팅이 필요할 수 있습니다)…
initctl start svscanc. djbdns
cd /tmp/downloads
tar -zxvf djbdns-1.05.tar.gz
cd djbdns-1.05
echo gcc -O2 -include /usr/include/errno.h > conf-cc
make
make setup check패키지 구성
사용자 생성 (자동으로 생성되지 않은 경우):
adduser --no-create-home --disabled-login --shell /bin/false dnscache
adduser --no-create-home --disabled-login --shell /bin/false dnslog
adduser --no-create-home --disabled-login --shell /bin/false tinydnsdnscache 구성:
우리의 시나리오에서는 각 마스터 및 슬레이브 서버가 “권위 있는“ 및 “캐싱”으로 모두 필요합니다. 따라서 djbdns로 이를 달성하는 방법을 이해하는 것이 매우 중요합니다. bind와 달리, djbdns는 각 종류의 DNS 서비스에 대해 개별 IP를 사용합니다. 기본적으로 각 시스템은 2개의 IP로 준비되어 있습니다 => 하나는 호스트-IP이고 다른 하나는 루프백-IP입니다. 따라서 LAN의 모든 시스템은 캐싱 DNS에 접근해야 하며, 따라서 캐싱 DNS를 위한 호스트-IP입니다. 우리는 루프백-IP에서 권위 있는 서비스를 실행하고, 나중에 이를 캐싱 DNS에 바인딩할 것입니다. 따라서 LAN 호스트는 권위 있는 호스트 레코드도 쿼리할 수 있습니다.
mkdir /var/lib/svscan
dnscache-conf dnscache dnslog /var/lib/svscan/dnscache
ln -sf /var/lib/svscan/dnscache /service “supervise” 디렉토리가 /service/dnscache에 생성되었는지 확인하십시오. 실행 중인지 확인하려면, /etc/resolv.conf에 ‘nameserver
이제 LAN 호스트가 쿼리할 수 있도록 허용해야 합니다. 따라서 네트워크 또는 서브넷의 이름으로 빈 파일을 생성하십시오:
touch /etc/dnscache/root/ip/그게 전부입니다. 이제 해당
bind와 달리, /etc/dnscache/env/CACHESIZE 파일을 편집하여 nameserver의 캐시 크기를 조정할 수 있습니다. 또한 다음 명령을 실행하여 캐시를 수동으로 새로 고치거나 플러시할 수 있습니다:
svc -t /service/dnscache일시적으로 dnscache를 중지하고 시작할 수 있는 명령은 다음과 같습니다:
svc -d /service/dnscache => dnscache 서비스를 중지합니다
svc -u /service/dnscache => dnscache 서비스를 시작합니다tinydns 구성:
tinydns-conf tinydns dnslog /var/lib/svscan/tinydns
ln -sf /var/lib/svscan/tinydns /service “supervise” 디렉토리가 /service/tinydns에 생성되었는지 확인하십시오.
아직 어떤 도메인에 대한 존 항목이 포함되어 있지 않지만, 곧 이를 다룰 것입니다. bind와 달리 존 정보는 단일 파일에 작성되며 (역방향 존을 포함한 여러 존에 대해서도) /var/lib/svscan/tinydns/root/data입니다. 이는 사람이 쓸 수 있는 파일로, 나중에 tinydns 명령을 사용하여 이진 형식으로 변환되며, 이 이진 파일은 /var/lib/svscan/tinydns/root/data.cdb입니다. 여기서 tinydns는 모든 쿼리에 응답합니다. 존 레코드의 구문은 bind에 비해 매우 짧고 간결합니다. 다음은 몇 가지 예입니다:
a. 네임 서버 항목:
.in.domain.com:10.20.0.10:ns1.in.domain.com
.in.domain.com:10.20.0.12:ns2.in.domain.comb. 위 네임 서버에 대한 역방향 DNS:
.10.in-addr.arpa::ns1.in.domain.com
.10.in-addr.arpa::ns2.in.domain.comc. MX 레코드:
@in.domain.com:165.212.65.113:mx.usa.net:10
@in.domain.com:10.20.0.12:mail.in.domain.com:20d. A 레코드:
=host0001.in.domain.com:10.10.0.101e. 호스트에 대한 별칭 레코드:
+host01.in.domain.com:10.10.0.101
+mysql01.in.domain.com:10.10.0.101마지막으로 /var/lib/svscan/tinydns/root/data를 cdb 형식으로 변환합니다:
tinydns-data또는
cd /var/lib/svscan/tinydns/root
make마지막으로 이러한 존 정보를 캐싱 DNS 서버에 바인딩하려면, /var/lib/svscan/dnscache/root/servers/ 디렉토리에 10.in-addr.arpa, in.domain.com 및 domain.com과 같은 이름의 파일을 생성하고, 그 내용은 127.0.0.1 (루프백-IP)이어야 합니다. 그게 전부입니다. 모든 것이 설정되었습니다.
참고: 데이터에 대한 변경을 수행하고 변경된 data.cdb 파일을 생성할 때마다 캐시를 새로 고치거나 플러시하는 것을 잊지 마십시오.
svc -t /services/*Djbdbs를 사용한 슬레이브 서버 설정
http://www.seebq.com/dns-replication-using-rsync를 따르고 마스터와 슬레이브의 일부 파일에서 몇 가지 조정을 수행하십시오.
a. 마스터의 /var/lib/svscan/tinydns/root/Makefile에서 변경: 파일을 다음과 같이 편집합니다.
remote: data.cdb
rsync -az -e ssh data.cdb :/service/tinydns/root/data.cdb
ssh 'svc -t /service/dnscache'
data.cdb: data
/usr/local/bin/tinydns-data
svc -t /service/dnscache b. 슬레이브의 /var/libsvscan/tinydns/root/data 파일에서 변경:
# 이 컴퓨터에서 데이터를 편집하지 마십시오! data.cdb는 마스터에서 복사됩니다.
# 다음 줄은 make를 중지하여 data.cdb를 보호합니다.
9따라서 실수로 /etc/tinydns/root/ 디렉토리에서 make 명령이나 tinydns-data 명령을 입력하더라도, 슬레이브에서는 데이터 파일이 없기 때문에 캐시만 플러시됩니다.
그리고 마스터에서 슬레이브 간의 자동 SSH 로그인 설정이 필요합니다. 위의 변경 사항은 프로세스를 자동화합니다. 위의 변경 사항은 슬레이브에 data.cdb 파일만 전송합니다. 따라서 이름 서버 간에 서로 다른 데이터가 있을 가능성이 없으며, 모든 서버 간의 일관성을 유지합니다.
백업 및 복원
최소한 /var/lib/svscan/tinydns/root/data 파일의 복사본이 필요하거나, 최대한 /var/lib/svscan/dnscache 및 /var/lib/svscan/tinydns 전체를 복사해야 합니다. 그게 전부입니다.
복원하려면, dnscache 또는 tinydns를 설정하면 거의 시간이 걸리지 않으며, 백업 데이터를 복사합니다. 마지막으로 /service에 소프트 링크를 생성합니다. 그게 전부입니다.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.