【Debian】BIND9の設定

FireWallをいただいたので、一度自宅のネットワークを綺麗に整えようと思い立ち、ごにょごにょしております。で、今までなんとなくしか理解していなかったDNSの仕組みとかBIND9の設定とかについてちょっとお勉強しましたので、主にDebianでのBIND9の設定に関してメモしておきます。

ただ単にDNSサーバ建てたいということならBINDよりもdnsmasqの方がいいんでしょうか。

ポインタ

とりあえずこのあたり読む。

  • /usr/share/doc/bind9/README.Debian.gz
  • bind9-doc (なぜhtmlなのかと小一時間)
  • Bind9 – Debian Wiki

BIND9ファイル構成

DebianでBIND9インストールするとこんな構成になってます。
/etc/bind/ 以下に配置されます。私の嫌いなディストリビューションとか(何)はchroot前提だったりして全然違うところに配置されたりします。

$ls -l /etc/bind/
total 52
-rw-r–r– 1 root bind 2389 Jul 24 13:46 bind.keys
-rw-r–r– 1 root bind 237 Jul 24 13:46 db.0
-rw-r–r– 1 root bind 271 Jul 24 13:46 db.127
-rw-r–r– 1 root bind 237 Jul 24 13:46 db.255
-rw-r–r– 1 root bind 353 Jul 24 13:46 db.empty
-rw-r–r– 1 root bind 270 Jul 24 13:46 db.local
-rw-r–r– 1 root bind 3048 Jul 24 13:46 db.root
-rw-r–r– 1 root bind 463 Jul 24 13:46 named.conf
-rw-r–r– 1 root bind 490 Jul 24 13:46 named.conf.default-zones
-rw-r–r– 1 root bind 165 Jul 24 13:46 named.conf.local
-rw-r–r– 1 root bind 890 Jul 24 13:46 named.conf.options
-rw-r—– 1 root bind 77 Jul 24 13:46 rndc.key
-rw-r–r– 1 root bind 1317 Jul 24 13:46 zones.rfc1918

(あ、時間見て気づいたけどこのサーバー、タイムゾーンの設定間違ってるわ。。。)

BIND9の設定ファイルとか

named.conf

メインの設定ファイルですが空っぽです。
named.conf.* が include されてるだけです。
ここに直接書かないのがお作法みたいです。
ごちゃごちゃといろいろ書くよりわかりやすいけどファイル数が多いと最初びびります。

// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

include “/etc/bind/named.conf.options”;
include “/etc/bind/named.conf.local”;
include “/etc/bind/named.conf.default-zones”;

named.conf.options

BINDの設定が書かれています。

再起問い合わせとキャッシュの返答は localhost と localnets に限定されてます。
ちょっと前までは any だったらしいです。こわいですね。設定例とか探してるとallow-queryとか設定してるのが多いのはそういうわけなんですね。

変更箇所は dnsseq-validation no です。デフォルトはautoになってます。これはsyslogにno valid RRSIGエラー出まくる対策で入れました。

あとは、listen-on-v6 { any; }; をコメントアウトしました。IPv6を最初に見にいってsyslogにnetwork unreachable resolvingを吐くので。

named.conf.default-zones

ルートサーバ、ローカルサーバのデフォルトのゾーン設定が書かれています。
ここはさわりませんでした。

named.conf.local

このファイルに正引き逆引きの設定追加。このへんの書き方はその辺にいくらでも転がってますね。

db.*

正引き設定ファイルと逆引き設定ファイル。

チェック

設定ファイルのチェック

$ sudo named-checkconf
$ named-checkzone example.com db.example.com

オープンリゾルバチェック

そもそも外部公開してないので心配ないのだけど、こんなのもありますよ。という話。
$ wget -qO - http://www.openresolver.jp/cli/check.html

課題

  • dnsseqがデフォルト有効になっているため、syslogにエラーがでまくってたのでdnsseq-validation noにしといたけど、正直わかってない。
  • たまにsyslogにFORMERRが出てるけどなんですかこれは。
  • nslookup すると サーバー:UnKnown ってなるけどこれは何を設定すればいいのかわからなかった。

↓ 読んどくべきかなぁ…