DNS設定 · 3 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 にあり、多くの説明が含まれています。また、http://www.unbound.net/documentation/unbound.conf.html を訪れて、Unbound の設定について詳しく学ぶこともできます。

以下の設定では、Unbound ネームサーバーでホストしたいドメイン (example.com と example.net) のために 2 つのゾーンを追加します。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 に接続できることを意味します。たとえば、localhost のみが接続できるようにしたい場合は、次のようにします:

| [...] 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

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。