Unbound、知ってる? この先10年を見据えたDNS

第4回Unboundサーバ運用Tips

運用TIPS

今回は他のDNSサーバとの連携方法や運用TIPSについて紹介します。

設定ファイルの記述が正しいか確認する

デフォルトの設定ファイルに設定を少し追加しただけの場合は問題ないですが、設定を次々と追加していくと記述間違いが出てくる恐れがあります。そのため、設定ファイルを書き換えた後にはunbound-checkconfコマンドを実行することにより、設定ファイルのエラーの確認を行うことができます。

実行例は次の通りです。

# unbound-checkconf
unbound-checkconf: no errors in /var/unbound/unbound.conf

問い合わせをゾーン毎に制御する

ローカルゾーン「local-zone」の設定を行うことで、⁠local-data」に記述がない場合の動作を設定することができます。

記述方法は次の通りです。

local-zone: ゾーン タイプ

下表のようなタイプの指定を行うことができます。local-zoneの指定がないときには「transparent」がデフォルトです。

refusercodeをREFUSEDにして、エラーメッセージを返す
drop回答を送信しない
staticNXDOMAINかNODATAを返す
transparent通常の再帰問い合わせの処理をする
redirectゾーンのサブドメインを異なるアドレスにリダイレクトする
nodefaultAS112ゾーンのデフォルトの設定をオフにする

AS112ゾーンはプライベートアドレスやリンクローカルアドレスの逆引きのゾーンのことです。Unboundではデフォルトでこのゾーンに対する問い合わせにはNXDOMAIN(情報なし)を返します。

設定例を1つ紹介します。

試験用のドメイン「local.」を運用していて、登録したホスト以外への問い合わせに対してはインターネットに問い合わせが行かないようにしたいときには、次のような設定を行い、タイプには「static」を記述します。


local-zone: "local." static
local-data: "host1.local. A 192.168.0.1"

この設定では、host1.localのAレコードの問い合わせには192.168.0.1が返されますが、host2.localのAレコードの問い合わせにはNXDOMAINが返されます。

指定したDNSコンテンツサーバに問い合わる

特定のドメインに対して指定したDNSコンテンツサーバに問い合わせを行いたいときにはスタブゾーン「stub-zone」を設定します。図1のような関係になります。

図1 スタブゾーンの設定
図1 スタブゾーンの設定

記述方法は次の通りです。⁠stub-addr」「stub-host」はどちらか1つ以上の記述があれば良いです。

stub-zone:
    name: スタブゾーンの名前
    stub-addr: スタブゾーンのDNSサーバのIPアドレス
    stub-host: スタブゾーンのDNSサーバのドメイン名

次の例は「example.org」ゾーンとその逆引き「0.168.192.in-addr.arpa」ゾーンのDNSコンテンツサーバへの問い合わせ先のIPアドレスが「192.168.0.4」であることを示します。

stub-zone:
    name: "example.org."
    stub-addr: 192.168.0.4
stub-zone:
    name: "0.168.192.in-addr.arpa."
    stub-addr: 192.168.0.4

プライベートアドレスの逆引きのゾーンに対する問い合わせはUnboundではデフォルトでNXDOMAINを返すので、server節に次のようにローカルゾーンの設定を行い、⁠transparent」の指定を行います。

local-zone: "0.168.192.in-addr.arpa." transparent

問い合わせを指定したDNSキャッシュサーバにフォワードする

特定のドメインに対する再帰問い合わせを指定したDNSキャッシュサーバにフォワードしたいときにはフォワードゾーン「forward-zone」を設定します。図2のような関係になります。

図2 フォワードゾーンの設定
図2 フォワードゾーンの設定

記述方法は次の通りです。⁠forward-addr」「forward-host」はどちらか1つ以上の記述があればよいです。

forward-zone:
    name: フォワードゾーンの名前
    forward-addr: フォワードゾーンのDNSサーバのIPアドレス
    forward-host: フォワードゾーンのDNSサーバのドメイン名

次の例は「example.org」ゾーンとその逆引き「0.168.192.in-addr.arpa」ゾーンのDNSキャッシュサーバへのフォワード先のIPアドレスが「192.168.0.5」であることを示します。

forward-zone:
    name: "example.org."
    forward-addr: 192.168.0.5
forward-zone:
    name: "0.168.192.in-addr.arpa."
    forward-addr: 192.168.0.5

プライベートアドレスの逆引きのゾーンに対する問い合わせはUnboundではデフォルトでNXDOMAINを返すので、server節に次のようにローカルゾーンの設定を行い、⁠transparent」の指定を行います。

local-zone: "0.168.192.in-addr.arpa." transparent

すべての問い合わせを指定したDNSキャッシュサーバにフォワードする

すべての問い合わせを指定したDNSキャッシュサーバにフォワードする場合にはフォワードゾーン「forward-zone」の設定で「name」として「.」を、⁠forward-addr」としてDNSキャッシュサーバのIPアドレスを指定します。設定例は次の通りです。

forward-zone:
    name: "."
    forward-addr: 192.168.0.5

バージョン番号を調べる

digやdrillを使って次のようにしてバージョンを確認できます。

$ drill version.bind @127.0.0.1 TXT CH
;; ->>HEADER

バージョン番号を設定したり、隠したりする

ソフトウェアのバージョン特有の脆弱性への攻撃を防ぐために、バージョン番号を変えたり、隠したりしたいという考えがあります。

設定ファイルunbound.confに次のような設定を加えるとバージョン番号の文字列を変えることができます。

version: "10.0.0"

また、設定ファイルunbound.confに次のような設定を加えるとバージョン番号を返さなくなります。

hide-version: yes

統計情報を出力する

「statistics-interval」に指定した秒数の間隔で統計情報をログに出力することができます。また、⁠statistics-cumulative」「yes」を指定することにより、統計のカウンターをクリアせず累積の統計情報を出力するようになります。

設定例は次のようになります。

statistics-interval: 3600
statistics-cumulative: yes

ログの出力例は次のようになります。なお、デフォルトではログはsyslogに出力されます。

info: server stats for thread 0: 2709 queries, 1258 answers from cache, 1451 recursions
info: server stats for thread 0: requestlist max 44 avg 10.4018 exceeded 0
info: average recursion processing time 0.938908 sec
info: histogram of recursion processing times
info: [25%]=0.000548627 median[50%]=0.0729175 [75%]=0.0592945
info: lower(secs) upper(secs) recursions
info:    0.000000    0.000001 46
info:    0.002048    0.004096 20
info:    0.004096    0.008192 21
info:    0.008192    0.016384 6
info:    0.016384    0.032768 1
info:    0.032768    0.065536 16
info:    0.065536    0.131072 250
info:    0.131072    0.262144 657
info:    0.262144    0.524288 315
info:    0.524288    1.000000 74
info:    1.000000    2.000000 32
info:    2.000000    4.000000 1
info:    4.000000    8.000000 1
info:    8.000000   16.000000 2
info:   16.000000   32.000000 2
info:   32.000000   64.000000 2
info:   64.000000  128.000000 1
info:  128.000000  256.000000 4

参考までに、このデータは筆者が迷惑メール対策ソフトウェアのSpamAssassin用に使っているマシンの結果です。DNSの問い合わせのほとんどがヘッダ解析のDNSテストやRBLやURIBLです。

まとめ

4回に渡ってUnboundについての紹介をしてきました。UnboundはDNSキャッシュサーバとして必要な機能はほぼ実装されているのがわかったでしょうか? 通常のDNSキャッシュサーバとして足らないのはDNSラウンドロビン対応とrndcのような制御ツールくらいと思われます。本記事を読まれて興味を持たれた方は試してください。

また、2008年12月18日発売のSoftware Design2009年1月号にて、Unboundの特集記事が掲載されます。こちらも合わせてご覧ください。

最後に、日本Unboundユーザ会のWebサイトではマニュアルの日本語の翻訳などの日本語での情報発信を細々と行っています。興味がありましたら訪れてください。

おすすめ記事

記事・ニュース一覧