Unbound 資料一覧

Unboundインストール手順

2009/2/23更新

対応バージョン: 1.2.1

公式サイト

ldns ... DNSライブラリ、DNS問合せツールdrill

Unbound本体

準備

導入に必要なもの

ldns-1.5.1.tar.gz
unbound-1.2.1.tar.gz

導入OS

Fedora 10

管理用アカウント作成

% sudo groupadd -r unbound
% sudo useradd -r -g unbound -d /var/unbound -s /sbin/nologin unbound

インストール

まずldnsをインストールする。

配布ファイル展開

% tar zxvf ldns-1.5.1.tar.gz
% cd ldns-1.5.1

make,インストール

ldns
% ./configure
% make
% sudo make install
drill
% cd drill
% ./configure
% make
% sudo make install

インストール物 (man,infoは除く)

ldns
/usr/local/lib/libldns.*

/usr/local/include/ldns/*
drill
/usr/local/bin/drill

共有ライブラリキャッシュ更新

% sudo ldconfig
% ldconfig -p | grep ldns
    libldns.so.1 (libc6) => /usr/local/lib/libldns.so.1
    libldns.so (libc6) => /usr/local/lib/libldns.so

共有ライブラリの検索パスは/etc/ld.so.conf.d配下の*.confで定義するので/usr/local/libが定義されていない場合はあらかじめ定義しておく。

例)

% sudo vi /etc/ld.so.conf.d/local.conf
/usr/local/lib

ldnsのインストールが終わったら、次にUnboundをインストールする。

配布ファイル展開

% tar zxvf unbound-1.2.1.tar.gz
% cd unbound-1.2.1

make,インストール

% ./configure --with-conf-file=/var/unbound/unbound.conf
% make
% sudo make install
% sudo chown unbound:unbound /var/unbound

インストール物 (man,infoは除く)

/usr/local/sbin/unbound
/usr/local/sbin/unbound-checkconf
/usr/local/sbin/unbound-control
/usr/local/sbin/unbound-control-setup
/usr/local/sbin/unbound-host

/usr/local/lib/libunbound.*

/usr/local/include/unbound.h

/var/unbound/unbound.conf

共有ライブラリキャッシュ更新

% sudo ldconfig
% ldconfig -p | grep unbound
    libunbound.so.0 (libc6) => /usr/local/lib/libunbound.so.0
    libunbound.so (libc6) => /usr/local/lib/libunbound.so

initスクリプト配置

デフォルトのinitスクリプトはunboundのパスが/usr/sbinなので/usr/local/sbinに変更する。

% sudo cp contrib/unbound.init /etc/init.d/unbound
% sudo sed -i 's_^exec="/usr/sbin_exec="/usr/local/sbin_' /etc/init.d/unbound
% sudo chmod 755 /etc/init.d/unbound
% sudo chkconfig --add unbound
% sudo chkconfig unbound on
% sudo chkconfig --list unbound
unbound    0:off  1:off  2:on  3:on  4:on  5:on  6:off

各種設定

/var/unbound/unbound.confにて設定を行う。

インストール直後は以下のような設定になっており、ログ出力レベルが1に指定されている。レベルは0(エラーのみ)〜4が指定できる。

server:
	verbosity: 1

remote-control:

まずIPv6を使用しない場合は以下のように設定する(デフォルトはyes)。

server:
	do-ip6: no

次にUDPとTCPのどちらを使用するか設定する(デフォルトは両方yes)。

server:
	do-udp: yes
	do-tcp: yes

この状態で最低限必要な動作が可能である。

動作確認

デーモンを起動する。

% sudo service unbound start

Unboundは/var/unboundにchrootして動作するが、最初の起動時に以下のファイルが/var/unbound配下にコピーされるのでリゾルバの設定などは既存の設定がそのまま引き継がれる。

/dev/log (ソケット)
/dev/random
/etc/localtime
/etc/resolv.conf

待ち受けポートを確認する。

% netstat -na|egrep '(Proto|:53)'
Proto Recv-Q Send-Q Local Address  Foreign Address  State
tcp        0      0 127.0.0.1:53   0.0.0.0:*        LISTEN
udp        0      0 127.0.0.1:53   0.0.0.0:*

まずlocalhostの名前解決を行ってみる。

% drill localhost @127.0.0.1
;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 31729
;; flags: qr aa rd ra ; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 
;; QUESTION SECTION:
;; localhost.	IN	A

;; ANSWER SECTION:
localhost.	10800	IN	A	127.0.0.1

;; AUTHORITY SECTION:

;; ADDITIONAL SECTION:

;; Query time: 0 msec
;; SERVER: 127.0.0.1
;; WHEN: Mon Feb 23 17:07:36 2009
;; MSG SIZE  rcvd: 43

Unboundはデフォルトでlocalhostの正引き/逆引きのゾーンを持っているのでBINDのように明示的にゾーン定義をする必要はない。

次にインターネット上のホストの名前解決を行ってみる。

% drill www.livedoor.com @127.0.0.1
;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 36160
;; flags: qr rd ra ; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 0 
;; QUESTION SECTION:
;; www.livedoor.com.	IN	A

;; ANSWER SECTION:
www.livedoor.com.	3563	IN	A	125.6.172.15

;; AUTHORITY SECTION:
livedoor.com.	3495	IN	NS	ldns01.data-hotel.net.
livedoor.com.	3495	IN	NS	ldns02.data-hotel.net.
livedoor.com.	3495	IN	NS	ldns03.data-hotel.net.
livedoor.com.	3495	IN	NS	ldns04.data-hotel.net.

;; ADDITIONAL SECTION:

;; Query time: 0 msec
;; SERVER: 127.0.0.1
;; WHEN: Mon Feb 23 17:07:36 2009
;; MSG SIZE  rcvd: 148

名前解決ができたら/etc/resolv.confを以下の設定にしてローカルからの問い合わせをUnbound経由にしてよい。

nameserver 127.0.0.1

ログの出力先変更

ログはデフォルトでsyslog経由で出力される(ファシリティはdaemon)。

もしsyslog経由でなく独自のログファイルに出力したい場合は以下のように設定する。

server:
	logfile: "/var/log/unbound.log"
	use-syslog: no

なお、ここで指定したファイルは/var/unboundにchrootした後のパスなので実際には/var/unbound/var/log/unbound.logが作成される。

格納ディレクトリはあらかじめ作っておく。

% sudo mkdir -p /var/unbound/var/log
% sudo chown unbound:unbound /var/unbound/var/log

他ホストからのリゾルバとしての設定

Unboundはデフォルトでローカルからの問い合わせしか受け付けないが、以下の設定を追加することにより他ホストからの問い合わせを受け付けることができる。

サービスのバインドインタフェース
server:
	interface: 0.0.0.0
アクセスを許可するホスト
server:
	access-control: 192.168.0.0/24 allow

尚、ファイアウォールで53番ポートをブロックしている場合はアクセスを許可しておく。

DNSコンテンツサーバの設定

UnboundはDNSキャッシュサーバとして動作するが、同時に簡易DNSコンテンツサーバとしての役割も持たせることができる。

例えばLAN内のマシンの名前解決を行いたい場合は以下のように設定すればよい。

server:
	local-data: "leopard.local.             A   192.168.0.10"
	local-data: "10.0.168.192.in-addr.arpa. PTR leopard.local."

(正引き)

% drill leopard.local. @127.0.0.1
;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 35361
;; flags: qr aa rd ra ; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 
;; QUESTION SECTION:
;; leopard.local.	IN	A

;; ANSWER SECTION:
leopard.local.	3600	IN	A	192.168.0.10

;; AUTHORITY SECTION:

;; ADDITIONAL SECTION:

;; Query time: 0 msec
;; SERVER: 127.0.0.1
;; WHEN: Mon Feb 23 17:07:36 2009
;; MSG SIZE  rcvd: 47

(逆引き)

% drill -x 192.168.0.10 @127.0.0.1 
;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 26809
;; flags: qr aa rd ra ; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 
;; QUESTION SECTION:
;; 10.0.168.192.in-addr.arpa.	IN	PTR

;; ANSWER SECTION:
10.0.168.192.in-addr.arpa.	3600	IN	PTR	leopard.local.

;; AUTHORITY SECTION:

;; ADDITIONAL SECTION:

;; Query time: 0 msec
;; SERVER: 127.0.0.1
;; WHEN: Mon Feb 23 17:07:36 2009
;; MSG SIZE  rcvd: 70