キャッシュ DNS サーバを BIND9 から Unbound へ移行

自宅内の DNS キャッシュサーバについて、BIND9 から Unbound へ移行してみました。

BIND9 はネット上に資料が豊富にあって、割と設定面では困らないのですが、度重なるぜい弱性への対応に疲れがちなので・・・。

例によって、自分用メモです。また、Debian GNU/Linux 8 環境で設定しています。

・事前準備

/etc/bind とかを念のためバックアップしておきます。

うちの環境では resolvconf はインストールしていないので、/etc/resolv.conf より一時的に DNS サーバのアドレスを 127.0.0.1 から名前変更できるものに変更します。

・おもむろに bind9 を削除します

# apt-get autoremove --purge bind9

・Unbound をインストールします

# apt-get install unbound

・デフォルト設定のバックアップ

# cp -a unbound unbound.org

・Unbound 用のログファイルの準備

# mkdir /var/log/unbound
# touch /var/log/unbound/unbound.log
# chown -R unbound:unbound /var/log/unbound
# chmod 750 /var/log/unbound
# chmod 640 /var/log/unbound/unbound.log

なお、Debian GNU/Linux 8 の Unbound の場合、
/etc/unbound/unbound.conf.d/root-auto-trust-anchor-file.conf
にて、デフォルト設定で DNSSEC が有効になっていました。

・ルートヒントファイルの準備

# cd /etc/unbound/
# wget "https://www.internic.net/domain/named.cache"

・設定ファイルへの記述

今回は、サーバの IPv4 と IPv6 のアドレスで待ち受け、localhost と、192.168.1.0/24 および 2001:0DB8::/32 のネットワークからのみ応答する設定とします。

ファイル「/etc/unbound/unbound.conf.d/server.conf」を以下の内容で作成します。

server:
	# Listen
	interface: 0.0.0.0
	interface: ::

	# Access control
	access-control: 192.168.1.0/24 allow
	access-control: 2001:0DB8::/32 allow
	# localhost はデフォルトで許可される。
	# それ以外は拒否 (refuse) される。

	# Logging
	logfile: "/var/log/unbound/unbound.log"
	log-queries: yes
	log-time-ascii: yes
	verbosity: 1

	# root hint file
	root-hints: "/etc/unbound/named.cache"

	# hostname.bind / version.bind
	identity: "Hostname"
	version: "DNS Server"

	# Private Addresses
	private-address: 10.0.0.0/8
	private-address: 172.16.0.0/12
	private-address: 192.168.0.0/16
	private-address: 169.254.0.0/16
	private-address: fd00::/8
	private-address: e80::/10

remote-control:
	control-enable: no
	# unbound-control は使用しない。

・Unbound の設定ファイルの確認

# unbound-checkconf

※ bind9 で言うところの、named-checkconf みたいなものですね。

・Unbound を再起動

# systemctl restart unbound.service

・参照する DNS サーバを変更

/etc/resolv.conf の内容を以下のように自サーバを参照するように設定します。

nameserver 127.0.0.1

・ログローテートの設定

このままでは、/var/log/unbound/unbound.log がどんどん大きくなるので、適当にログローテートするようにします。

/etc/logrotate.d/unbound を以下の内容で作成します。

/var/log/unbound/*.log {
	daily
	missingok
	notifempty
	rotate 14
	size 1M
	compress
	delaycompress
	create 640 unbound unbound
	sharedscripts
	postrotate
	   if [ -f /var/run/unbound.pid ]; then \
	      /etc/init.d/unbound reload > /dev/null; \
	   fi;
	endscript
}

■参考にさせて頂いたサイト

■その他

BIND9 と比較して、明らかに設定する箇所が少ないです。別のソフトウェアですが、簡単さで言うと、ntpd の設定よりも簡単かもしれません。

あとは、Unbound がどこでルートヒントを持っているか不明だったので、あえて最新のファイルをダウンロードして設定しました。

ちなみに、Debian GNU/Linux 8 の bind9 パッケージでインストールした場合でも、ルートヒントファイルは古い情報なので、更新しておいた方が良いと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です