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

第4回 Unboundサーバ運用Tips

この記事を読むのに必要な時間:およそ 2 分

問い合わせを指定した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<<- opcode: QUERY, rcode: NOERROR, id: 42043
;; flags: qr rd ra ; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;; version.bind.        CH      TXT

;; ANSWER SECTION:
version.bind.   0       CH      TXT     "unbound 1.0.2"

;; AUTHORITY SECTION:

;; ADDITIONAL SECTION:

;; Query time: 0 msec
;; SERVER: 127.0.0.1
;; WHEN: Mon Nov 10 00:32:34 2008
;; MSG SIZE  rcvd: 56

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

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

設定ファイル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サイトではマニュアルの日本語の翻訳などの日本語での情報発信を細々と行っています。興味がありましたら訪れてください。

著者プロフィール

滝澤隆史(たきざわたかし)

株式会社サードウェアに所属。

OSSの活動としては,メールシステム全般に興味があり,TTYベースのメーラMuttの開発に参加したり,qmailのアドオンパッケージを開発したり,SpamAssassinの日本語対応パッチの開発をしてきた。メールだけではなく,DNSにも興味があり,先日,日本Unboundユーザ会を立ち上げた。