summaryプラグインは存在しません。
- 参考リンク集
- インストール
- ネットワーク構成
- 設定
- zoneファイルの作成
- named.conf.optionsの修正
- 起動してみよう
- あれ? デーモンが止められない
- resolv.confの修正
- 動作確認
- 註
参考リンク集
インストール
# apt-get install bind9 bind9-doc bind9-host
9.2.3+9.2.4-rc2-1をインストールしました。
ネットワーク構成
今回構築するDNSサーバは当然LAN内限定で使用するものです。うちのネットワーク構成は大体こんな感じになっています。notepc1, notepc2はdhcpでIPアドレスを割り振るので、ホスト名解決すれば良いマシンはjona, munky, kazzの合計3台です。こいつらをhostsファイルに書かずに名前解決できるように設定します。
+----------------+
| The Internet |
+----------------+
|
|
LAN(192.168.1.0/24) -----------------------------------
+----------------+
| router |
+----------------+
192.168.1.1
|
+--------+--------+---------+-----------+----------+
| | | | |
jona munky kazz notepc1 notepc2
(Linux) (Win) (Linux) (Win) (Win)
2 10 102 ?? ??
ちなみにドメイン名は外部からも見える[1]kazz.homeunix.orgにします。つまり、jonaのFQDNは"jona.kazz.homeunix.org"になります。
設定
debianでのbindの設定ファイルは/etc/bind配下にまとめられています。通常はnamed.confを修正していくのですが、自前のzoneの定義はnamed.conf.localにまとめておくのがdebian流のようです(named.conf.localがnamed.confからincludeされている)。ちなみに、 options {}の定義はnamed.conf.optionsに書きます。
まずはnamed.confから
自分で定義するzoneはnamed.conf.localに書くので、 zone "." 以外はすべてコメントアウトしました。
named.conf.local
まずアクセス制御の設定です。LAN内のマシンと自分自身からのみ問い合わせ可能とします。
acl localnet {
192.168.1.0/24;
127.0.0.1;
};
次はループバックアドレス正引き、逆引き用の設定です。
zone "localhost" {
type master;
file "/etc/bind/local.zone";
};
zone "0.0.127.in-addr-arpa" {
type master;
file "/etc/bind/local.rev";
};
ここからはkazz.homeunix.org zoneの正引き、逆引きの設定です。
zone "kazz.homeunix.org" {
type master;
file "/etc/bind/kazz.homeunix.org.zone";
};
zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/kazz.homeunix.org.rev";
};
こいつらを記述し終わったら、各zoneのfileで指定したファイルを作成します。ここで作成するファイルの内容がzone内のマシンの名前解決に用いられます。
zoneファイルの作成
zone localhost
/etc/bind配下にlocal.zoneというファイルを作成します。これはlocalhost->127.0.0.1の正引き情報を提供します。内容は下記そのままでOK。
$TTL 86400
@ IN SOA localhost. root.localhost. (
2004052901 ; serial
28800 ; refresh 8hr
14400 ; retry 4hr
604800 ; expire 1w
86500 ; negative cache TTL 24hr
)
@ IN NS localhost.
@ IN A 127.0.0.1
zone 0.0.127.in-addr-arpa
/etc/bind配下にlocal.revというファイルを作成します。これは127.0.0.1->localhostの逆引き情報を提供します。これも内容はそのままでOK。
$TTL 86400
@ IN SOA localhost. root.localhost. (
2004052901 ; serial
28800 ; refresh 8hr
14400 ; retry 4hr
604800 ; expire 1w
86500 ; negative cache TTL 24hr
)
IN NS localhost.
1 IN PTR localhost.
zone kazz.homeunix.org
kazz.homeunix.orgのzoneはLAN内で使用するドメインのzoneです。kazz.homeunix.org.zoneファイルを作成します。これはそれぞれのマシン環境によって異なります。1行目の括弧の前にはこのzoneの管理者のメールアドレスを記述します。ただし、 @ は . に置き換えるのと、最後にドットをつける必要があるので、メールアドレスが hoge@fuga.com の場合、 hoge.fuga.com. となります。詳しくは参考リンクの@ITの記事を読んでください。
@ IN SOA kazz.kazz.homeunix.org. kazuhiro.kazz.homeunix.org. (
2004052902 ; serial
3600 ; refresh 1hr
900 ; retry 15min
604800 ; expire 1w
86500 ; negative cache TTL 24hr
)
IN NS kazz.kazz.homeunix.org.
@ IN A 192.168.1.102
kazz IN A 192.168.1.102
jona IN A 192.168.1.2
munky IN A 192.168.1.10
zone 1.168.192.in-addr.arpa
次は定義するドメインの逆引き用の設定ファイル kazz.homeunix.org.rev を作成します。
$TTL 86400
@ IN SOA kazz.kazz.homeunix.org. kazuhiro.kazz.homeunix.org. (
2004052901 ; serial
3600 ; refresh 1hr
900 ; retry 15min
604800 ; expire 1w
3600 ; negative cache TTL minimum
)
IN NS kazz.kazz.homeunix.org.
102 IN PTR kazz.kazz.homeunix.org.
2 IN PTR jona.kazz.homeunix.org.
10 IN PTR munky.kazz.homeunix.org.
named.conf.optionsの修正
named.conf.optionsに options での定義を追加します。主にセキュリティ関連の設定です。localnetというのは acl で定義したものを使用します。(つまり192.168.1.0/24と127.0.0.1)
// 内部マシンからの問い合わせを外部に対しても行う
recursion yes;
allow-recursion {
localnet;
};
// ゾーン転送は行わない
allow-transfer {
none;
};
// 問い合わせは内部マシンからだけ
allow-query {
localnet;
};
// bindのバージョン番号を表示しない
version "DNS Server";
起動してみよう
zoneファイルを全て作成したら、bindを起動してみます。debianでは/etc/init.d/bind9スクリプトを使用します。が、その前にnamedデーモンを bind ユーザで起動するように修正します。具体的には、/etc/init.d/bind9を下記のように修正します。
OPTIONS="" ↓ OPTIONS="-u bind"
では起動しましょう。
# /etc/init.d/bind9 start
起動後に、 # ps aux | grep named してみて、namedデーモンが起動していればOKです。起動してない場合は、/var/log/daemon.logを見て、うまくいかなった理由を調べてください。
あれ? デーモンが止められない
namedデーモンを止めようと思うと、下記のように怒られます。あんまり良くわかってないのですが、bind9はrndcという機構を使ってデーモンの制御を行うみたいです。んで、このrndcというやつが認証用の鍵を必要としているらしいのですが、その鍵が不正だよ〜んと言っているみたいです。
Stopping domain name service: namedrndc: connection to remote host closed This may indicate that the remote server is using an older version of the command protocol, this host is not authorized to connect, or the key is invalid.
とりあえず、
# killall named
すれば回避出来るのですが、あまりにもアドホックなのでちゃんと設定してみます。まずは認証用の鍵を作成し、/etc/bind/rndc.confにその鍵を登録します。
# cd /etc/bind # rndc-confgen -r /dev/random > rndc.conf
これを行うと、rndc.confというファイルができあがります。んで、このファイルの下の行はコメントアウトされているのですが、このコメント部分をそっくりnamed.conf.localにでもコピーして、コメントアウトを解除します。(# Use with ... から # End of named.conf の行まで)
終わったら、rndc.confの所有者とパーミッションを変更します。
# chown bind:bind rndc.conf # chmod 600 rndc.conf
では気を取り直してnamedデーモンを立ち上げて、落としてみましょう。
# /etc/init.d/bind9 start # /etc/init.d/bind9 stop
これで先ほどのエラーがでなければOKです。念のためログも確認してみましょう。
named[4198]: stopping command channel on 127.0.0.1#953 named[4198]: no longer listening on 127.0.0.1#53 named[4198]: no longer listening on 192.168.1.102#53 named[4196]: exiting
と出ていればOKです。
resolv.confの修正
bindが動いているマシンでは、下記のようにローカルドメインにDNSで作成したzoneのドメイン名を、自分自身をDNSサーバとして指定します。
domain kazz.homeunix.org nameserver 127.0.0.1 nameserver プロバイダ提供のDNS
jonaなどのクライアントマシンは下記のように、bindが動いているサーバを第1のDNSサーバとします。
nameserver 192.168.1.102 nameserver プロバイダ提供のDNS
また、私はhostnameをFQDNにしました。
# echo "jona.kazz.homeunix.org" > /etc/hostname # hostname jona.kazz.homeunix.org
動作確認
とりあえず、@ITの記事を参考にしてください、ということで...
註
- [1]dyndnsにのDynamic DNSを利用している