서버 설정 · 4 min read · Oct 01, 2025

Debian Etch에서 Unbound 이름 서버 설치 및 사용

Debian Etch에서 Unbound 이름 서버 설치 및 사용

버전 1.0
저자: Falko Timme

Unbound는 유효성 검사, 재귀 및 캐싱 DNS 리졸버로, BSD 라이선스 하에 배포됩니다. 버전 1.0.0은 2008년 5월 20일에 출시되었습니다. 이 튜토리얼에서는 Debian Etch에서 Unbound를 설치하고 사용하는 방법을 설명하며, 자신의 도메인에 대한 영역을 생성하는 방법도 포함됩니다.

이 문서는 어떤 종류의 보증 없이 제공됩니다! 이는 이러한 시스템을 설정하는 유일한 방법이 아님을 말씀드리고 싶습니다. 이 목표를 달성하는 방법은 여러 가지가 있지만, 이것이 제가 선택한 방법입니다. 이것이 귀하에게 작동할 것이라는 보증을 제공하지 않습니다!

1 Unbound 설치

아직 Debian 패키지가 제공되지 않기 때문에, 소스에서 Unbound를 설치해야 합니다. 먼저 필수 패키지를 설치합니다:

apt-get install build-essential libssl-dev

그런 다음 다음과 같이 Unbound를 다운로드하고 설치합니다:

cd /tmp
wget http://www.unbound.net/downloads/unbound-latest.tar.gz
tar xvfz unbound-latest.tar.gz
cd unbound-1.0.0/
./configure
make
make install

다음으로 unbound라는 사용자와 그룹을 생성합니다:

groupadd unbound
useradd -d /var/unbound -m -g unbound -s /bin/false unbound

우리는 /var/unbound 디렉토리를 Unbound 이름 서버의 홈 디렉토리로 사용할 것입니다. 이 디렉토리에는 Unbound 구성 파일이 포함되며, Unbound는 보안상의 이유로 이 디렉토리에서 chroot되어 실행됩니다.

다음으로 루트 이름 서버 목록을 다운로드합니다:

cd /var/unbound
wget ftp://ftp.internic.net/domain/named.cache

그런 다음 Unbound PID 파일인 unbound.pid를 보관할 /var/unbound/var/run 디렉토리를 생성하고, /var/run/unbound.pid에 대한 심볼릭 링크를 생성합니다:

mkdir -p /var/unbound/var/run
chown -R unbound:unbound /var/unbound
ln -s /var/unbound/var/run/unbound.pid /var/run/unbound.pid

Unbound를 시작/중지/재시작하려면 다음과 같은 init 스크립트가 필요합니다:

vi /etc/init.d/unbound

| #!/bin/sh # # unbound 이 셸 스크립트는 unbound (DNS 서버)의 시작 및 중지를 처리합니다. exec="/usr/local/sbin/unbound" prog="unbound" config="/var/unbound/unbound.conf" pidfile="/var/run/unbound.pid" rootdir="/var/unbound" case "$1" in start) [ -x $exec ] || exit 5 [ -f $config ] || exit 6 echo -n "$prog 시작 중: " # 루트 감옥 설정 if [ -s /etc/localtime ]; then [ -d ${rootdir}/etc ] || mkdir -p ${rootdir}/etc ; if [ ! -e ${rootdir}/etc/localtime ] || /usr/bin/cmp -s /etc/localtime ${rootdir}/etc/localtime; then cp -fp /etc/localtime ${rootdir}/etc/localtime fi; fi; if [ -s /etc/resolv.conf ]; then [ -d ${rootdir}/etc ] || mkdir -p ${rootdir}/etc ; if [ ! -e ${rootdir}/etc/resolv.conf ] || /usr/bin/cmp -s /etc/resolv.conf ${rootdir}/etc/resolv.conf; then cp -fp /etc/resolv.conf ${rootdir}/etc/resolv.conf fi; fi; if ! egrep -q '^/[^[:space:]]+[[:space:]]+'${rootdir}'/dev/log' /proc/mounts; then [ -d ${rootdir}/dev ] || mkdir -p ${rootdir}/dev ; [ -e ${rootdir}/dev/log ] || touch ${rootdir}/dev/log mount --bind -n /dev/log ${rootdir}/dev/log >/dev/null 2>&1; fi; if ! egrep -q '^/[^[:space:]]+[[:space:]]+'${rootdir}'/dev/random' /proc/mounts; then [ -d ${rootdir}/dev ] || mkdir -p ${rootdir}/dev ; [ -e ${rootdir}/dev/random ] || touch ${rootdir}/dev/random mount --bind -n /dev/random ${rootdir}/dev/random >/dev/null 2>&1; fi; # 실행 중이지 않으면 여기서 시작 start-stop-daemon --start --quiet --pidfile $pidfile --exec $exec -- -c $config echo ;; stop) echo -n "$prog 중지 중: " start-stop-daemon --stop --quiet --oknodo --pidfile $pidfile echo if egrep -q '^/[^[:space:]]+[[:space:]]+'${rootdir}'/dev/log' /proc/mounts; then umount ${rootdir}/dev/log >/dev/null 2>&1 fi; if egrep -q '^/[^[:space:]]+[[:space:]]+'${rootdir}'/dev/random' /proc/mounts; then umount ${rootdir}/dev/random >/dev/null 2>&1 fi; ;; restart) start-stop-daemon --stop --quiet --oknodo --pidfile $pidfile start-stop-daemon --start --quiet --pidfile $pidfile --exec $exec -- -c $config ;; reload) start-stop-daemon --stop --signal 1 --quiet --oknodo --pidfile $pidfile --exec $exec ;; force_reload) start-stop-daemon --stop --signal 1 --quiet --oknodo --pidfile $pidfile --exec $exec ;; *) echo "$0 사용법: {start|stop|restart|reload|force-reload}" exit 2 ;; esac exit 0 |

스크립트를 실행 가능하게 만들고 시스템 시작 링크를 생성합니다:

chmod 755 /etc/init.d/unbound
update-rc.d unbound defaults

설치가 완료되었습니다.

2 Unbound 구성

이제 Unbound 구성 파일인 /var/unbound/unbound.conf를 생성합니다. /tmp/unbound-1.0.0/doc/example.conf에서 샘플 구성 파일을 찾을 수 있으며, 이 파일에는 많은 설명이 포함되어 있습니다. Unbound 구성에 대해 더 알고 싶다면 http://www.unbound.net/documentation/unbound.conf.html을 방문하십시오.

다음 구성에서는 Unbound 이름 서버에서 호스팅하려는 두 개의 도메인(example.com 및 example.net)에 대한 영역을 추가합니다. BIND 이름 서버에 익숙하다면 Unbound 구문을 매우 빠르게 배울 수 있습니다. 필요에 따라 영역을 조정하거나, 로컬 리졸버만 필요하다면 생략할 수 있습니다:

vi /var/unbound/unbound.conf

| server: verbosity: 1 interface: 0.0.0.0 port: 53 do-ip4: yes do-ip6: yes do-udp: yes do-tcp: yes do-daemonize: yes access-control: 0.0.0.0/0 allow #access-control: 0.0.0.0/0 refuse #access-control: 127.0.0.0/8 allow chroot: "/var/unbound" username: "unbound" directory: "/var/unbound" use-syslog: yes pidfile: "/var/run/unbound.pid" root-hints: "/var/unbound/named.cache" local-zone: "example.com." static local-data: "example.com. 86400 IN NS ns1.hostingcompany.com." local-data: "example.com. 86400 IN NS ns2.hostingcompany.com." local-data: "example.com. 86400 IN SOA ns1.hostingcompany.com. hostmaster.hostingcompany.com. 2008052201 28800 7200 604800 86400" local-data: "example.com. 86400 IN A 1.2.3.4" local-data: "www.example.com. 86400 IN CNAME example.com." local-data: "mail.example.com. 86400 IN A 1.2.3.4" local-data: "example.com. 86400 IN MX 10 mail.example.com." local-data: "example.com. 86400 IN TXT v=spf1 a mx ~all" local-zone: "example.net." static local-data: "example.net. 86400 IN NS ns1.hostingcompany.com." local-data: "example.net. 86400 IN NS ns2.hostingcompany.com." local-data: "example.net. 86400 IN SOA ns1.hostingcompany.com. hostmaster.hostingcompany.com. 2008052201 28800 7200 604800 86400" local-data: "example.net. 86400 IN A 1.2.3.4" local-data: "www.example.net. 86400 IN CNAME example.net." local-data: "mail.example.net. 86400 IN A 1.2.3.4" local-data: "example.net. 86400 IN MX 10 mail.example.net." local-data: "example.net. 86400 IN TXT v=spf1 a mx ~all" |

여기서 interface: 0.0.0.0을 사용했으며, 이는 Unbound가 모든 네트워크 인터페이스에서 수신 대기함을 의미합니다. access-control: 0.0.0.0/0 allow는 누구나 Unbound에 연결할 수 있음을 의미합니다. 예를 들어 로컬호스트만 연결할 수 있도록 하려면 다음과 같이 사용합니다:

| [...] access-control: 0.0.0.0/0 refuse access-control: 127.0.0.0/8 allow [...] |

구성의 구문이 올바른지 확인하려면 unbound-checkconf 명령을 사용할 수 있습니다:

unbound-checkconf /var/unbound/unbound.conf

server1:~# unbound-checkconf /var/unbound/unbound.conf
unbound-checkconf: /var/unbound/unbound.conf에 오류가 없습니다.
server1:~#

구문이 올바르면 마지막으로 Unbound를 시작할 수 있습니다:

/etc/init.d/unbound start

Unbound에 대해 더 알고 싶다면 Unbound 문서를 참조하십시오.

3 링크

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.