Unbound: DNSSECを有効にするには

By W.C.A. Wijngaards, NLnet Labs, August 2008.

DNSSECはDNSのデータを保護するための機構である。ディジタル署名を使っている。 DNSSECを利用するためには公開鍵を設定しなければならない。以下で説明する。

以下に登場するのは2008年時点でのトラストアンカーである。 読者の国の(訳注: ccTLDの)トラストアンカーについては、管轄のレジストリを通じて確認されたい。

  トラストアンカー群を格納したファイルを置くディレクトリ、/etc/unbound/anchorsを作成する。 unboundデーモンからアクセスできる他のパス、デーモンが/var/unboundあるいは/usr/local/etc/unboundで動作するようなら、その場所に置くことになろう。

; /etc/unbound/anchors/br.anchor
br. DS 18457 5 1 1067149C134A5B5FF8FC5ED0996E4E9E50AC21B1
br. DS 61207 5 1 637724A380ECE3426F5EBDCD6795AD4F729AB3E9
; /etc/unbound/anchors/se.anchor
se. DS 49678 5 1 6672948B37E6B7B3EFE87FB711849EF17786C8E3
se. DS  6166 5 1 CE2B007F6D000B064B4A82E8840C19D3D09B8F8E
; /etc/unbound/anchors/bg.anchor
bg. DS 61993 5 1 ABC9B1EB085C12AB3214BC5B08269C24B918B623
; /etc/unbound/anchors/pr.anchor
pr. DS  2684 5 1 f461055cf27925a56bf9cff1826e946235be2767

configファイルでは、トラストアンカーを格納したファイルを以下のようにincludeする。

server:
	# これは例なので、パス名の整合性のため、chrootさせない。
	chroot: ""
	directory: "/etc/unbound"

        # トラストアンカー群。cronで更新できるよう、独立したファイルにした。
        trust-anchor-file: "/etc/unbound/anchors/br.anchor"
        trust-anchor-file: "/etc/unbound/anchors/se.anchor"
        trust-anchor-file: "/etc/unbound/anchors/bg.anchor"
        trust-anchor-file: "/etc/unbound/anchors/pr.anchor"
	# ... 他のトラストアンカーも列挙する。

次にcrontabに設定を追加して、トラストアンカーを自動的に更新できるようにしよう。 この設定は、鍵が更新されたかどうかを毎日確認する。 ここで紹介する方法では、更新を確認するために簡単なスクリプトを使う。 実装が済めば、最近RFC5011で標準化されたロールオーバーの追従方式でも同様のことができるようになる。

unboundのソースのtarballに含まれているcontrib/update-anchor.shというスクリプトを適切なディレクトリにコピーする(ここでは/usr/local/binとした)。

このスクリプトを起動すると、トラストアンカーのファイル群が更新される。一般にトラストアンカーは月に1回とか年に1回とかの頻度でしか更新されないが、 ここでは毎日起動するように設定している。これで鍵が更新されても遅れることなく追従できる。このスクリプトは、デーモンをrestartしなければならないとき(訳注:更新されたトラストアンカーがあったとき)には終了コード0で終了する。 したがって、cronでは、仮想コードで表現するとupdate-anchor.sh -d mydir && restart_daemon_commandというジョブを毎日実行しなければならない。 このスクリプトは-bオプションを与えて起動すると、BINDの設定ファイルを取り扱うことができる。

読者のシステムでanacronが採用されているなら、以下の内容で/etc/cron.daily/update-anchorというファイルを作成する。

#!/bin/sh
# this command updates the .anchor files in the directory
# and performs the rc.d restart for the daemon if they changed.
/usr/local/bin/update-anchor.sh -d /etc/unbound/anchors && \
/etc/init.d/unbound reload

訳注: コピー&ペーストの便宜のためコメントは原文のまま残したが、内容は以下の通り。

このコマンドは、ディレクトリの中にある<zone>.anchorというファイルを更新して、変更があったときには、デーモンを再起動するためにrc.d restartを実行する。

読者のシステムがcronを採用している(/etc/cron.dailyというディレクトリがない)なら、(rootの権限でcrontab -eを実行して)crontabに以下のように設定する。

0 11 * * * /usr/local/etc/update-anchor.sh -d /etc/unbound/anchors &&
/etc/init.d/unbound reload

翻訳: 匿名