前回はUnboundの特徴を紹介しました。今回はUnboundの新規導入方法について紹介します。
インストール
UnboundではldnsというDNSライブラリを利用しています。Unboundの配布パッケージにも含まれています。しかし,ldnsを共有ライブラリとしてリンクし,さらにldnsを利用するdrillというツールの導入も行うために,別途インストールすることにします。
なお,本記事ではLinuxディストリビューションの1つであるCentOS 5.2での導入手順を紹介します。パッケージシステム用のRPMのSPECファイルも用意されていますが,今回は手動でビルドしてインストールを行ってみます。そのため,/usr/localディレクトリ以下にインストールすることにします。
ldnsのインストール
ldnsはNLnet Labsが開発しているDNSライブラリです。次のような機能もサポートしています。
- IPv4/IPv6
- TSIG
- DNSSECの署名と検証
ldnsはNLnet Labsのサイトからダウンロードできます。
執筆時点での最新バージョンは1.3.0であり,ファイル名はldns-1.3.0.tar.gzです。Unboundでは1.3.0以降が必要です。ldnsをビルドするためにはOpenSSLとlibpcapのヘッダやライブラリが必要なので,あらかじめインストールしておいてください。
ldnsのtarballをダウンロードしたら,次のようにしてインストールします。
$ tar xvzf ldns-1.3.0.tar.gz $ cd ldns-1.3.0/ $ ./configure --prefix=/usr/local $ make $ su # make install
共有ライブラリlibldns.soが/usr/local/libにインストールされたので,/etc/ld.so.confにディレクトリ/usr/local/libが登録されていなければ,追加してください。
ldconfigコマンドを実行してライブラリキャッシュを更新します。
# /sbin/ldconfig
drillのインストール
ldnsのパッケージにはdrillというツールが含まれています。このdrillもインストールします。drillは,BINDにおけるdigと同じような機能を提供します。“If you need to dig deeper”「もっと深く掘りたければ(ドリルを使え)」という謳い文句が示すとおり,DNSSECをサポートし,digより多くの情報を得ることができます。digはBINDのライブラリに依存しているため,BINDのライブラリを使用していないdrillを使うことで,BINDから解放されます。
ldnsのtarballを展開したディレクトリにおいて次のようにしてインストールを行います。
$ cd drill/ $ autoreconf $ ./configure --prefix=/usr/local --with-ldns=/usr/local $ make $ su # make install
なお,ldnsのパッケージを展開したディレクトリにはexamplesというディレクトリがあります。ldnsを利用したサンプルプログラムが含まれています。drillと同じような手順でインストールできるため,興味があったらインストールしてみてください。
Unboundのインストール
Unboundは,Unboundの公式サイトからダウンロードできます。
執筆時点での最新バージョンは1.0.2であり,ファイル名はunbound-1.0.2.tar.gzです。
Unboundのtarballをダウンロードしたら,次のようにしてインストールを行います。デフォルトでは設定ファイルunbound.confがあるディレクトリにchrootするため,ここではディレクトリ/var/unboundに設定ファイルを置くことにします。
$ tar xvzf unbound-1.0.2.tar.gz
$ cd unbound-1.0.2/
$ ./configure \
--prefix=/usr/local \
--with-conf-file=/var/unbound/unbound.conf \
--with-ldns=/usr/local
$ make
$ su
# make install
共有ライブラリlibunbound.soが追加されたため,共有ライブラリのキャッシュの更新を行ってください。
# /sbin/ldconfig
起動スクリプトのサンプルファイルがcontribディレクトリにあるので,それを/etc/init.dにコピーして登録します。unboundの絶対パスの調整も行ってください。
# cp contrib/unbound.init /etc/init.d/unbound # sed -i 's_/usr/sbin/unbound_/usr/local/sbin/unbound_' /etc/init.d/unbound # chmod 755 /etc/init.d/unbound # /sbin/chkconfig --add unbound # /sbin/chkconfig unbound on
設定ファイルを/var/unbound/unbound.confに配置したので,使いやすくするために/etc/にシンボリックリンクを作成すると良いでしょう。
# ln -s /var/unbound/unbound.conf /etc/
unboundを実行するユーザunboundとグループunboundを作成し,chrootするディレクトリを所有させます。
# /usr/sbin/groupadd -r unbound # /usr/sbin/useradd -r -g unbound -d /var/unbound -s /sbin/nologin unbound # chown unbound:unbound /var/unbound
chrootするディレクトリ/var/unboundに/etc/localtime,/etc/resolv.confをコピーし,さらにログソケット/dev/logと乱数デバイス/dev/randomを作成する必要があります。先ほどの起動スクリプトを使用する場合には,この処理が含まれています。
必要なファイルを作成したらchrootのディレクトリは次のようになるでしょう。
# find /var/unbound -print /var/unbound /var/unbound/unbound.conf /var/unbound/etc /var/unbound/etc/resolv.conf /var/unbound/etc/localtime /var/unbound/dev /var/unbound/dev/random /var/unbound/dev/log
以上でインストールは完了しました。

