2009年1月18日日曜日

FreeBSD のデフォルト named.conf の邦訳

今回は,FreeBSD 7.0-RELEASE にデフォルトで入っている named.conf を読んでみようと思う.調べても直接的な情報がすくない気がするし,結局 ARM で確認をとることになったから,ここに書く意味はあるのかなぁと思った♪

では,上からサクサクといこ〜.手元に,named.conf を表示しながら読み進めるといいと思う.コメントの邦訳の語調が変なのは仕様wこの語調で書いてたら楽しくなってきたので,そのままにしてるwww

まず,最初のコメントブロック.最初の行が,バージョンなどなど(バージョン管理ツールで入力された内容だね.)が表記されている.今回の named.conf は,1.26.4.1 というバージョンだった.その次の行からのコメントの内容は,次のような感じ.

\named.conf(5) と named(8) の man ページを参照してね.あと詳細なドキュメントが /usr/share/doc/bind9 にあるよ.

もし,権威あるサーバをセットアップしようとしてるなら,DNS がどう動いてるのか細かいとこまできちんと理解してからやってね.ちょっとした失敗でも,グループに影響して接続を壊したり,無駄な大量のトラフィックを発生させちゃうかも.


さて,次は options ステートメント部分だ.directory オプションは作業ディレクトリを示す.pid-file オプションはプロセス ID を記述したファイルへのパス.dump-file オプションは,サーバの内部データベースのダンプをとるときの保存先.(/var/dump/named_dump.db と設定されていて,rndc dumpdb というコマンドでダンプをとると,/var/named/var/dump/named_dump.db に保存される.謎仕様な気がするのは僕だけ?w)statistics-file オプションは,サーバの統計情報をとるときの保存先.

listen-on サブステートメントは,問い合わせを待ち受けるネットワークインタフェースを指定するためのステートメントだ.デフォルトでは,ループバックアドレスの 127.0.0.1 だけが設定されているので,自分自身からの問い合わせしか受け付けないようになっている.このサブステートメントにくっついてるコメントの意味はこんなかんじ.

ローカルリゾルバとしてしか named を使わないんだったら,これは安全なデフォルト設定だよ.named をネットワークからアクセス可能にするなら,コメントするか,適当なアドレスを設定するか,このオプションを削除してね.

listen-on-v6 サブステートメントは,IPv6 用のやつ.コメントになってる.

システム上で IPv6 を有効にしてるんだったら,ローカルリゾルバとして使うためにコメントを外してね.ネットワークからアクセス可能にするなら,適当な IPv6 アドレスか,any ってキーワードを設定してね.

disable-empty-zone オプションってのが,最近(9.4.x からだったと思う.)追加されたオプションだ.ARM 読むまで知らなかったんだけど,BIND は,Built-in Empty Zones ってのを持っていて,それらのゾーンが自動的に設定される.その自動的に設定されるのを無効にするのがこのオプション.Empty Zone てのは,NXDOMAIN(ドメインが存在しないという確認応答.)を返すような問い合わせがルートネームサーバに行かないようにするために,SOA レコードと NS レコードだけを設定した空のゾーンのことだ.つまり,Built-in Empty Zones は,NXDOMAIN を返すような問い合わせのゾーン一覧で,自動的に BIND によって設定されるようになっている.

設定ファイルでは,disable-empty-zone オプションが3つ設定されている.なぜこの3つが設定されているかは,コメントに書いてある.

これらのゾーンは,下の方で指定している empty zone でカバー済みだよ.関連する empty zone を削除したりしたら,これらの行をコメントしてね.

forward オプションは,回想の設定のためのオプション.つまり,自分で解決せずに指定した DNS サーバに解決を依頼する設定をするためのオプション.forwarders サブステートメントは,回送先の DNS サーバの IP アドレスを設定するためのステートメント.

fowarders サブステートメントに追加した際に,次の行を有効にすることで,fowarders に指定した回送先だけに問い合わせて,自分自身からの問い合わせをしないように強制できるよ.

上位プロバイダに DNS サーバを持っているなら,ここにその IP アドレスを入力して,下の行を有効にしてね.キャッシュによって得するし,インターネットの DNS トラフィックを減らすことができるよ.

query-source サブステートメントは,問い合わせで使うインタフェースとポートを指定することができる.コメントされているデフォルト設定がなぜそうなっているかについては,コメントに書いてある.

ファイアウォールがホストとその問い合わせ先のネームサーバの間にある場合,下の query-source サブステートメントのコメントを外す必要があるかもね.以前のバージョンの BIND だといつも53番ポートから問い合わせてたんだけど,バージョン8以降はランダムな非特権 UDP ポートをデフォルトで使っちゃうからね.

ここまでで,option ステートメントは終わり♪終わった直後に書いてあるコメントの意味は次のような感じ.

ローカルネームサーバとして有効にしたいなら,このサーバに問い合わせられるように /etc/resolv.conf の最初にに 127.0.0.1 を入力することを忘れないようにね./etc/rc.conf でネームサーバを有効にすることも必ずやってよね.

さて,やっと zone ステートメントの記述が出てきた.一番最初は,ルートネームサーバへのヒントファイルの設定だね.

伝統的なルートヒント機能だよ.これを使うか,下の方のスレーブゾーンを使ってね.

で,スレーブゾーンの方法がなんでいいのかがコメントで書いてあって,その後にコメントされた設定が書いてある.

ルートネームサーバのゾーンをスレーブすることはとってもいいことなんだよ.ひとつ目は,高速にローカルで名前解決できるようになるんだよ.ふたつ目は,見せかけのトラフィックをルートに送ることがなくなるんだよ.みっつ目は,ルートサーバが DDoS によって停止したりすることにたいして回復力があるんだよ.

他方では,この方法は予期しない不全状態がサーバを無能にしないように,ヒントファイルによる方法よりも監視することが必要なんだよね.多くのクライアントに供給するネームサーバは,このアプローチによって個々のホストより有益だろうね.用心して使えばね.

この方法を使うには,下のエントリのコメントを外して,上のヒントゾーンをコメントしてね.


さらに,zone の設定が続く.それぞれの意味を適当に書いといた.コメントの意味は次のとおり.

ローカルに供給される下記のゾーンは,これらのゾーンへのあらゆる問い合わせが,ネットワークから出ることやルートネームサーバにとんでいくことを防いでくれるんだよ.これにはふたつ利点がある.ひとつ目は,高速にローカルで名前解決できるようになるんだよ.ふたつ目は,見せかけのトラフィックをルートに送ることがなくなるんだよ.

localhost は,localhost.
127.in-addr.arpa は,localhost の逆引き.
255.in-addr.arpa はブロードキャストアドレスの逆引き.
0.ip6.arpa は,IPv6 の localhost の逆引き.
0.in-addr.arpa はローカルアドレスの逆引き.
10.in-addr.arpa〜168.192.in-addr.arpa は,プライベートネットワークの逆引き.
254.169.in-addr.arpa は,リンクローカルアドレスの逆引き.
2.0.192.in-addr.arpa は,TEST-NET っていう例として使う IP アドレス空間の逆引き.
18.198.in-addr.arpa と 19.198.in-addr.arpa は,ルータのベンチマークテストにつかう IP アドレス空間(知らなかった〜w)の逆引き.
240.in-addr.arpa〜254.in-addr.arpa は,IANA が予約している古い Class E の IP アドレス空間の逆引き.
1.ip6.arpa〜7.e.f.ip6.arpa は,IPv6 の未割り当てアドレス空間の逆引き.
c.f.ip6.arpa と d.f.ip6.arpa は,IPv6 のユニークローカルアドレス空間の逆引き.
8.e.f.ip6.arpa〜b.e.f.ip6.arpa は,IPv6 のリンクローカルアドレス空間の逆引き.
c.e.f.ip6.arpa〜f.e.f.ip6.arpa は,IPv6 の廃止されたサイトローカルアドレス空間の逆引き.
ip6.int は,廃止された IPv6 の逆引き.

これに続くのは,自分でゾーンを記述するときの例となるゾーン.動的更新されるゾーンと逆引き用のスレーブゾーンの設定例が書いてある.コメントはこんなかんじ.

注意:下に書いてある IP アドレスは,デモやドキュメントのための偽ものだから使っちゃダメだよ.

スレーブゾーン設定情報の例.これはスレーブになるときに便利だと思うよ.少なくとも,君のドメインのスレーブになるゾーンをつくるときにはね.君のネットワーク管理者に,返事してくれるマスターネームサーバの IP アドレスを聞いてみたら.

逆引きゾーンを含めることを忘れないようにねっ!これは,IP アドレスのバイトごとに逆順にしたものに,.INADDR.ARPA をつないだものだよ.IPv6 の場合は .IP6.ARPA だけどね.

マスターゾーンの設定を始める前に,必ず DNS と BIND がどう働くか完全に理解してよね.そこにはわかり辛い落とし穴があるかもしれないんだから.スレーブゾーンの方がたいていは簡単に設定できるよ.

注意:やみくもに下の例を有効にしちゃだめなんだからね.代わりになる現実の名前とアドレスを使ってよね.


以上.長かったなぁ.デフォルトの設定ファイルはこうなってるってことがわかっていただけたと思う.なので,FreeBSD で DNS サーバを立てるときには,このデフォルト設定ファイルを有効に使ったらいいんじゃないかな.関連ファイルとして,普通の語調で邦訳した named.conf をあげておく.

関連ファイル:
http://idisk.mac.com/takuya0301/Public/FreeBSD/named_ja.conf

参考文献:
BIND 9 Administrator Reference Manual
Paul Albitz, Cricket Liu. 第4版 DNS & BIND, オライリー・ジャパン, 2002.

0 件のコメント: