概要
オランダのNLnet Labsが開発しているDNSキャッシュサーバ(DNSリゾルバ)
他のDNSサーバに問い合わせを行ない、ホスト名とIPアドレスの変換結果をキャッシュするDNSサーバ
英訳すると「足かせをはずされた、縄目を解かれた」とbindからの脱却を意味している
ラウンドロビンは、Unbound 1.4.17より利用可能(rrset-roundrobinにて設定する)
unbound-control 操作方法
root@akat:/etc/unbound# vi unbound.conf ========================================== remote-control: control-enable: yes control-interface: 192.168.0.100 # リモートでコントロールする場合に必要 ========================================== root@akat:/etc/unbound# unbound-checkconf # 設定ファイルを確認する unbound-checkconf: no errors in /etc/unbound/unbound.conf root@akat:/etc/unbound# unbound-control status # 稼動情報を表示 version: 1.4.16 verbosity: 1 threads: 1 modules: 2 [ validator iterator ] uptime: 2 seconds unbound (pid 3356) is running... root@akat:/etc/unbound# unbound-control stats # 統計情報を表示(内部カウンタを0にする) # stats_noreset だと内部カウンタを0にしない thread0.num.queries=182 # スレッド0が受け取ったクエリ数 thread0.num.cachehits=150 # キャッシュが利用できた数 thread0.num.cachemiss=32 # 再帰検索が必要だった数 thread0.num.prefetch=0 # prefetchしたキャッシュが利用された数。cachehitsに含まれる thread0.num.recursivereplies=32 # 再帰処理を必要としたクエリ数。thread0.num.cachemissよりも少ない場合は、タイムアウトが発生している可能性がある thread0.requestlist.avg=0 # The average number of requests in the internal recursive processing request list on insert of a new incoming recursive processing query. thread0.requestlist.max=0 # 内部再帰リストの中で到達した最大サイズ数 thread0.requestlist.overwritten=0 # リクエストリストのうち、新しいエントリによって上書きされたリクエストの数。クエリが多くきており、サーバに負荷がかかっている可能性が高い thread0.requestlist.exceeded=0 # リクエストリストがいっぱいになり、拒否したクエリ数。サーバが処理できなくなったときに発生する thread0.requestlist.current.all=0 # 現在のリクエストリストのサイズ(includes internally generated queries (such as priming queries and glue lookups).) thread0.requestlist.current.user=0 # 現在のリクエストリストのサイズ(クライアントからのクエリのみ) thread0.recursion.time.avg=0.059183 # 再帰処理を必要としたクエリの平均応答時間。キャッシュからの平均ではないことに気をつけてください thread0.recursion.time.median=0.0218453 # 再帰処理を必要としたクエリの応答時間の中央値。50%のリクエストがこの値未満に答えられたことを意味する total.num.queries=182 total.num.cachehits=150 total.num.cachemiss=32 total.num.prefetch=0 total.num.recursivereplies=32 total.requestlist.avg=0 total.requestlist.max=0 total.requestlist.overwritten=0 total.requestlist.exceeded=0 total.requestlist.current.all=0 total.requestlist.current.user=0 total.recursion.time.avg=0.059183 total.recursion.time.median=0.0218453 time.now=1394364749.806415 # UNIx時間 time.up=6088.252362 # 起動してからの秒数 time.elapsed=6083.139816 # 最後の統計が表示されてから経った秒数 root@akat:/etc/unbound# unbound-control dump_cache # キャッシュ情報を表示 START_RRSET_CACHE ;rrset 839 1 1 11 4 TBDFMMUIE3QONI45IJ5K011SHPOHI17E.jp. 839 IN NSEC3 1 1 5 bf21f53b57 ti2jktb2hcm6ab2lo6gl7s20mh3bn20p NS DS RRSIG ...省略 root@akat:/home/akat/unbound# unbound-control dump_requestlist # サーバーが処理している最中のすべてのクエリーを出力する thread #0 # type cl name seconds module status root@akat:/home/akat/unbound# unbound-control dump_infra # インフラ キャッシュの内容を表示する 210.224.163.3 . ttl 554 ping 5 var 7 rtt 50 rto 50 ednsknown 1 edns 0 delay 0 lame dnssec 0 rec 0 A 0 other 0 root@akat:/home/akat/unbound# unbound-control list_stubs # 利用中のスタブ ゾーンの一覧を表示する . IN stub prime: M.ROOT-SERVERS.NET. L.ROOT-SERVERS.NET. K.ROOT-SERVERS.NET. J.ROOT-SERVERS.NET. I.ROOT-SERVERS.NET. H.ROOT-SERVERS.NET. G.ROOT-SERVERS.NET. F.ROOT-SERVERS.NET. E.ROOT-SERVERS.NET. D.ROOT-SERVERS.NET. C.ROOT-SERVERS.NET. B.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. 2001:dc3::35 2001:500:3::42 2001:7fd::1 2001:503:c27::2:30 2001:7fe::53 2001:500:1::803f:235 2001:500:2f::f 2001:500:2d::d 2001:503:ba3e::2:30 202.12.27.33 199.7.83.42 193.0.14.129 192.58.128.30 192.36.148.17 128.63.2.53 192.112.36.4 192.5.5.241 192.203.230.10 128.8.10.90 192.33.4.12 192.228.79.201 198.41.0.4 root@akat:/home/akat/unbound# unbound-control list_forwards # 利用中のフォワード ゾーンの一覧を表示する . IN forward: 210.224.163.3 root@akat:/home/akat# unbound-control list_local_data # 利用中のローカル データのリソース レコードの一覧を表示する 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa. 10800 IN NS localhost. 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa. 10800 IN SOA localhost. nobody.invalid. 1 3600 1200 604800 10800 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa. 10800 IN PTR localhost. 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa. 10800 IN SOA localhost. nobody.invalid. 1 3600 1200 604800 10800 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa. 10800 IN NS localhost. 8.b.d.0.1.0.0.2.ip6.arpa. 10800 IN NS localhost. 8.b.d.0.1.0.0.2.ip6.arpa. 10800 IN SOA localhost. nobody.invalid. 1 3600 1200 604800 10800 d.f.ip6.arpa. 10800 IN NS localhost. d.f.ip6.arpa. 10800 IN SOA localhost. nobody.invalid. 1 3600 1200 604800 10800 ...省略
コンテンツサーバとしても利用可能
server節に、local-dataを追加する
root@akat:/home/akat# vi /etc/unbound/unbound.conf ================== # local-zone: "info." static # ゾーンに対してrefuse・drop・static・transparent・redirect・nodefaultなど挙動を決めることができる local-data: "test.akat.info. A 192.168.0.1" ================== root@akat:/home/akat# nslookup test.akat.info Server: 127.0.0.1 Address: 127.0.0.1#53 Name: test.akat.info Address: 192.168.0.1
スタブゾーンとフォーワードゾーンの違い
権威サーバを指定する場合は、stub-zoneを利用
unboundはスタブゾーンに対して再帰検索を実行するため
再帰検索サーバを指定する場合は、forward-zoneを利用
unboundはフォワードゾーンに対する再帰検索を実行しないため
つまり再帰検索を指定したDNSサーバに依頼する形になる
参考
http://gihyo.jp/admin/feature/01/unbound/0004
http://l-w-i.net/t/unbound/control_001.txt