DNS 설정 · 4 min read · Oct 03, 2025
[데비안 사르지] Bind9 마스터/슬레이브 DNS 시스템 설치
[데비안 사르지] Bind9 마스터/슬레이브 DNS 시스템 설치
버전: 1.0 - 2006년 8월 23일
환영합니다
이 방법서에서는 2개의 bind dns 서버를 설치합니다. 하나는 마스터 서버로, 다른 하나는 슬레이브 서버로 사용됩니다. 보안상의 이유로 bind9를 자체 감옥에 chroot합니다.
두 개의 서버를 사용하는 도메인은 일반적으로 사용되는 설정이며, 자신의 도메인을 호스팅하기 위해서는 최소한 2개의 도메인 서버가 필요합니다. 하나가 고장나면 다른 하나가 계속해서 도메인을 제공할 수 있습니다.
우리의 설정은 기본으로 데비안 사르지 3.1(안정 버전)을 사용할 것입니다. 필요한 패키지를 이 방법서로 설치할 것이므로 간단하고 깔끔하며 최신 상태의 설치면 충분합니다.
이 방법서에서는 가상의 도메인 “linux.lan”을 사용할 것입니다. 네임서버는 192.168.254.1과 192.168.254.2를 IP로 사용할 것입니다.
시작하기 전에 몇 마디: 저는 Joe의 방법서(이 사이트에도 있음)와 몇 가지 더 많은 튜토리얼을 읽었지만, 그 중 어느 것도 약간의 수정 없이 작동하지 않았습니다. 따라서, 저는 제 자신의 방법서를 만들었습니다. 그리고 이것은 즉시 작동해야 합니다 :)
소프트웨어 설치
먼저, 깨끗한 데비안 사르지 설치가 필요합니다. 최신 상태인지 확인하세요!
apt-get update; apt-get upgrade우리는 또한 소스 패키지를 다운로드해야 하므로 몇 가지 데비안 빌딩 도구가 필요합니다:
apt-get install devscripts다음으로 Bind에 필요한 소프트웨어를 설치합니다. 마스터와 슬레이브 간의 존 파일 전송을 암호화하기 위해 Sarge 저장소에서 찾을 수 있는 것보다 더 최신 버전의 Bind9(버전 >=9.3)가 필요합니다. 우리는 -testing 브랜치의 소스를 사용할 것입니다. 따라서, /etc/apt/sources.list에 다음과 같은 줄이 있는지 확인하세요:
deb-src http://---your.debian.mirror---/debian testing main contrib non-free테스트에서의 Bind9는 테스트에서의 lsb-base에 의존합니다. 이를 가져옵니다:
(구문 설명: -y는 apt가 모든 질문에 “예”라고 대답하도록 하고, build-dep는 Sarge 저장소의 -testing_packageX-에 필요한 모든 패키지를 설치하며, -b는 소스가 즉시 빌드되도록 합니다.)
cd ~/a/dir/for/lsb-base/
apt-get -y build-dep lsb-base
apt-get source lsb-base -b
dpkg -i lsb-base*.deb다음은 Bind9입니다:
cd ~/a/dir/for/bind9
apt-get -y build-dep bind9
apt-get source bind9 -b
dpkg -i *.deb이제 모든 소프트웨어가 설치되었고 구성할 준비가 되었습니다.
마스터 구성
먼저 bind9를 중지해야 합니다:
/etc/init.d/bind9 stopbind를 chroot하기 위해 /etc/default/bind9에 옵션을 설정해야 합니다:
From:
OPTIONS="-u bind"To:
OPTIONS="-u bind -t /var/lib/named"이제 ‘bind’ 사용자로 ‘/var/lib/named’에 chroot되어 실행됩니다.
다음으로 /etc/bind/named.conf.options에서 포워더 줄을 ISP의 DNS에 맞게 편집합니다:
forwarders { 194.109.6.66; };chroot 감옥을 위한 단계는 다음과 같습니다:
mkdir -p /var/lib/named/etc
mkdir /var/lib/named/dev
mkdir -p /var/lib/named/var/cache/bind
mkdir -p /var/lib/named/var/run/bind/run
mv /etc/bind /var/lib/named/etc
ln -s /var/lib/named/etc/bind /etc/bind
mknod /var/lib/named/dev/null c 1 3
mknod /var/lib/named/dev/random c 1 8
chmod 666 /var/lib/named/dev/*
chown -R bind:bind /var/lib/named/var/*
chown -R bind:bind /var/lib/named/etc/bindBind는 이제 .pid 파일과 구성 파일을 위한 공간이 있는 자체 디렉토리를 가집니다. 명확성을 유지하기 위해 /etc/로의 심볼릭 링크를 만들었습니다.
이제 /etc/init.d/sysklogd를 편집하여 bind 활동의 로깅을 허용합니다: From:
SYSLOGD=""To:
SYSLOGD="-a /var/lib/named/dev/log"마지막 단계는 이 새로 설치된 DNS 서버(로컬호스트)의 IP를 /etc/resolv.conf에 추가하여 사용하도록 하는 것입니다:
echo "search linux.lan" > /etc/resolv.conf
echo "nameserver 127.0.0.1" >> /etc/resolv.conf이제 sysklogd와 bind9를 재시작합니다:
/etc/init.d/sysklogd restart
/etc/init.d/bind9 start그리고 테스트합니다!
ping www.google.com응답이 오면 DNS 마스터 서버가 작동하고 사용할 준비가 된 것입니다. 이제 새로운 마스터 서버로 linux.lan 도메인을 채우고 사용할 것입니다.
linux.lan 도메인 설정
현재 마스터 DNS 서버는 요청을 ISP의 서버로 포워딩하고 있습니다. 따라서 이제 우리 자신의 도메인을 설치하고 구성하여 새로운 서버가 해당 도메인과 관련된 모든 요청을 처리하도록 하겠습니다.
존 파일을 저장할 디렉토리를 생성하는 것으로 시작하겠습니다. 이 파일에는 도메인에 대한 모든 정보가 포함되어 있습니다.
mkdir /etc/bind/zones/다음으로 존 파일을 생성합니다, /etc/bind/zones/master_linux.lan:
$TTL 3D
@ IN SOA ns1.linux.lan. hostmaster.linux.lan. (
199802151 ; serial, 오늘 날짜 + 오늘의 시리얼 #
8H ; refresh, 초
2H ; retry, 초
4W ; expire, 초
1D ) ; minimum, 초
;
TXT "Linux.LAN, YOUR 도메인을 제공 :)"
NS ns1 ; 네임 서버의 Inet 주소
NS ns2
MX 10 mail ; 기본 메일 교환기
localhost A 127.0.0.1
ns1 A 192.168.254.1
ns2 A 192.168.254.2
www CNAME ns1여기에서 우리는 두 개의 네임서버와 ns1에 대한 www 별칭이 포함된 간단한 존 파일을 생성했습니다. ns1에서 apache가 실행 중인 경우를 대비하여 ;)
이제 /etc/bind/named.conf.local을 편집하고 추가합니다:
zone "linux.lan" {
type master;
file "/etc/bind/zones/master_linux.lan";
};이제 우리는 bind를 재시작하고 작동하는지 확인할 수 있습니다:
/etc/init.d/bind9 restart
ping ns1.linux.lan이 단계에서 작동하고 사용할 수 있는 DNS 서버가 있어야 합니다 :)
도메인을 찾을 수 없다고 하면, dhclient가 네임서버 항목을 변경했을 수 있습니다… 그러니 종료하세요.
슬레이브 설치
기본적으로 슬레이브는 우리가 첫 번째 부분에서 구성한 기본 시스템과 동일합니다(존 파일을 추가하기 직전). 마스터와 슬레이브가 함께 작동하도록 몇 가지 작은 변경을 추가할 것입니다. 존 파일은 암호화를 사용하여 네트워크를 통해 전송됩니다.
다른 언급이 없는 한, 이러한 명령은 슬레이브 전용입니다.
존 디렉토리를 생성합니다:
mkdir /etc/bind/zones마스터와 슬레이브 모두 /etc/bind/named.conf.options를 편집하고 추가합니다:
dnssec-enable yes;이제 안전한 키가 필요합니다. 이것은 .private 및 .key 파일을 생성합니다. .private 파일의 ‘key=’ 줄은 해시 키를 나타냅니다.
dnssec-keygen -a hmac-md5 -b 128 -n host linux.lan마스터와 슬레이브 모두 /etc/bind/named.conf에 추가합니다:
key "TRANSFER" {
algorithm hmac-md5;
secret "---HASHKEY---";
};마스터에서는 슬레이브 IP를 /etc/bind/named.conf에 추가합니다:
server 192.168.254.2 {
keys {
TRANSFER;
};
};슬레이브에서는 마스터 IP를 /etc/bind/named.conf에 추가합니다:
server 192.168.254.1 {
keys {
TRANSFER;
};
};/etc/bind/named.conf.local에 추가합니다:
zone "linux.lan" {
type slave;
file "/etc/bind/zones/slave_linux.lan";
masters { 192.168.254.1; };
allow-notify { 192.168.254.1; };
};두 호스트 모두에서 필요한 마지막 사항은 /etc/bind/named.conf에 추가하는 것입니다:
include "/etc/bind/rndc.key";존 전송이 성공적으로 이루어지려면 두 시스템의 시계가 동기화되어야 하므로:
apt-get -y install ntpdate두 머신에서 bind를 재시작하고 슬레이브에서 새로운 존 파일을 확인하세요 :)
마스터에서 존 파일에 대한 업데이트가 실패하는 이유가 궁금하다면, 존 파일 내의 expire 등의 설정을 확인하세요.
새로운 DNS 마스터/슬레이브 구성에 행운을 빕니다!
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.