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