CentOS5(RHEL5)系の BIND 9.3 と CentOS6(RHEL6)系の BIND 9.7 以上ではインストールファイル構成、動作する時のディレクトリ構成から chroot の動作の仕様が全然違います。
今まで BIND 9.3 に慣れていて、同じつもりで初期設定しようとしたら戸惑います。
CentOS6系の初期状態から運用していて yum update であるとき変わってしまって動かなくなったらしばし呆然とするでしょう。
ここに違いをメモしておきます。
■ BIND 9.3.x
(1) インストール
# yum install bind bind-chroot # yum install caching-nameserver
(2) ファイル構成の確認
こうなっています。
/etc/named.conf <<< /var/named/chroot/etc/ からシンボリックリンク /etc/named.caching-nameserver.conf <<< /var/named/chroot/etc/ からシンボリックリンク /etc/named.rfc1912.zones <<< /var/named/chroot/etc/ からシンボリックリンク /var/named/named.ca <<< /var/named/chroot/var/named/ からシンボリックリンク /var/named/xxxxxxxxx.zone <<< /var/named/chroot/var/named/ からシンボリックリンク /var/named/chroot/etc/named.conf (新規作成、/etc/named.conf へシンボリックリンク) /var/named/chroot/etc/named.caching-nameserver.conf >>> /etc/ へシンボリックリンク /var/named/chroot/etc/named.rfc1912.zones >>> /etc/ へシンボリックリンク /var/named/chroot/var/named/named.ca >>> /var/named/ へシンボリックリンク /var/named/chroot/var/named/xxxxxxxxx.zone >>> /var/named/ へシンボリックリンク
※BIND 9.7 はシンボリックリンクではなく、モジュール起動時にマウントする仕様に変わっています。
(3) named.conf 作成
/var/named/chroot/etc/named.conf
// // named.conf for Red Hat caching-nameserver // options { directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; /* * If there is a firewall between you and nameservers you want * to talk to, you might need to uncomment the query-source * directive below. Previous versions of BIND always asked * questions using port 53, but BIND 8.1 uses an unprivileged * port by default. */ // query-source address * port 53; forwarders { 8.8.8.8; // Google Public DNS 8.8.4.4; // Google Public DNS }; }; // // a caching only nameserver config // controls { inet 127.0.0.1 allow { localhost; } keys { rndckey; }; }; include "/etc/rndc.key"; zone "." IN { type hint; file "named.ca"; }; zone "localdomain" IN { type master; file "localdomain.zone"; allow-update { none; }; }; zone "localhost" IN { type master; file "localhost.zone"; allow-update { none; }; }; zone "0.0.127.in-addr.arpa" IN { type master; file "named.local"; allow-update { none; }; }; zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN { type master; file "named.ip6.local"; allow-update { none; }; }; zone "255.in-addr.arpa" IN { type master; file "named.broadcast"; allow-update { none; }; }; zone "0.in-addr.arpa" IN { type master; file "named.zero"; allow-update { none; }; };
パーミッションとシンボリックリンク
# chown root.named named.conf # chmod 640 named.conf # cd /etc/ # ln -s /var/named/chroot/etc/named.conf
(4) ゾーンファイルの追加
/var/named/chroot/etc/named.conf
... // 逆引きゾーン追加(逆引きはなくてもいいけど) zone "444.333.222.111.in-addr.arpa" IN { type master; file "111.222.333.444.rev"; allow-update { none; }; }; // 正引きゾーン追加 zone "mydomain.com" IN { type master; file "mydomain.com.zone"; allow-update { none; }; };
/var/named/chroot/var/named/111.222.333.444.rev (逆引きはなくてもいいけど)
$TTL 3600 @ IN SOA host.mydomain.com. postmaster.mydomain.com. ( 2012070101 ; Serial 3H ; Refresh 15M ; Rretry 1W ; Expire 3H ) ; Minimum IN NS dns.mydomain.com. IN PTR www.mydomain.com.
/var/named/chroot/var/named/mydomain.com.zone
$TTL 3600 @ IN SOA host.mydomain.com. postmaster.mydomain.com. ( 2012070101 ; Serial 3H ; Refresh 15M ; Rretry 1W ; Expire 3H ) ; Minimum IN NS dns.mydomain.com. IN MX 10 mail IN A 111.222.333.444 mail IN A 111.222.333.444 www IN A 111.222.333.444
シンボリックリンク作成
# cd /var/named # ln -s /var/named/chroot/var/named/mydomain.com.zone # ln -s /var/named/chroot/var/named/111.222.333.444.rev
設定ファイルの書式チェック
# named-checkconf
※エラーメッセージが出なければOK
起動・終了・再起動
# /etc/init.d/named start # /etc/init.d/named stop # /etc/init.d/named restart
■ BIND 9.7.x
(1) インストール
# yum -y install bind bind-chroot
※bind 9.7 以上の場合、caching-nameserver はない
(2) ファイル構成の確認
※bind 9.7 以上の場合、シンボリックリンクはない。
/etc/named.conf /etc/named.rfc1912.zones ... named.conf に読み込む ローカルゾーンの宣言 /etc/named.iscdlv.key ... ISC DLV の DNSKEY と ルートDNSKEY /etc/named.root.key ... ルートDNSKEY (named.iscdlv.key に含まれている) /var/named/named.ca ... ルートサーバーのゾーン定義 /var/named/named.empty ... ローカルゾーン定義 /var/named/named.localhost ... ローカルゾーン定義 /var/named/named.loopback ... ローカルループバック /var/named/data ... ゾーンファイルをここに保存する。 逆引きファイルも同じ。 /var/named/slaves ... スレーブデータをここに保存する。
chroot環境下では、named起動すると以下のようにマウントされる
/etc/named → /var/named/chroot/etc/named /var/named → /var/named/chroot/var/named /etc/named.conf → /var/named/chroot/etc/named.conf /etc/named.rfc1912.zones → /var/named/chroot/etc/named.rfc1912.zones /etc/rndc.key → /var/named/chroot/etc/rndc.key /usr/lib64/bind → /var/named/chroot/usr/lib64/bind /etc/named.iscdlv.key → /var/named/chroot/etc/named.iscdlv.key /etc/named.root.key → /var/named/chroot/etc/named.root.key
これは
# df -ha
にて確認できる
(3) named.conf 作成
/etc/named.conf (デフォルト)
// // named.conf // // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS // server as a caching only nameserver (as a localhost DNS resolver only). // // See /usr/share/doc/bind*/sample/ for example named configuration files. // options { listen-on port 53 { 127.0.0.1; }; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { localhost; }; recursion yes; dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
※DNSSEC関係のデフォルトの設定が増えています。
※rndcコマンドのためのキーファイルが欠如しています。
↓以下の部分を修正します。
options { ... #※コメントアウトする #listen-on port 53 { 127.0.0.1; }; #listen-on-v6 port 53 { ::1; }; #allow-query { localhost; }; allow-query { any; }; forwarders { 8.8.8.8; // Google Public DNS 8.8.4.4; // Google Public DNS }; }; controls { inet 127.0.0.1 allow { localhost; } keys { rndc-key; }; }; include "/etc/rndc.key"; logging { ... channel の後に category lame-servers { null; }; category edns-disabled { null; }; category resolver { null; }; }; ...
(4) /etc/rndc.key を作成
※rndcコマンドのためのキーファイルを作成
※これがないと rndc reload などができません。
# rndc-confgen -a -b 512 -r /dev/urandom # chgrp named /etc/rndc.key # chmod g+r /etc/rndc.key
(5) ゾーンファイルの追加
/etc/named.conf
... // 逆引きゾーン追加(逆引きはなくてもいいけど) zone "444.333.222.111.in-addr.arpa" IN { type master; file "data/111.222.333.444.rev"; allow-update { none; }; }; // 正引きゾーン追加 zone "mydomain.com" IN { type master; file "data/mydomain.com.zone"; allow-update { none; }; };
/var/named/data/111.222.333.444.rev (逆引きはなくてもいいけど)
$TTL 3600 @ IN SOA host.mydomain.com. postmaster.mydomain.com. ( 2012070101 ; Serial 3H ; Refresh 15M ; Rretry 1W ; Expire 3H ) ; Minimum IN NS dns.mydomain.com. IN PTR www.mydomain.com.
/var/named/data/mydomain.com.zone
$TTL 3600 @ IN SOA host.mydomain.com. postmaster.mydomain.com. ( 2012070101 ; Serial 3H ; Refresh 15M ; Rretry 1W ; Expire 3H ) ; Minimum IN NS dns.mydomain.com. IN MX 10 mail IN A 111.222.333.444 IN TXT "v=spf1 a mx ~all" mail IN A 111.222.333.444 www IN A 111.222.333.444
設定ファイルの書式チェック
# named-checkconf -p
-h はヘルプ
-t [directory] は指定したディレクトリをchrootとして設定
-v はバージョン表示
-p はエラーがなければnamed.confとインクルードファイルの内容を表示
-z は全てのマスタゾーンをロードしてみるテスト
-j はゾーンファイルを読み込むときにあればジャーナルファイルも読み込む
※エラーメッセージが出なければOK
★named.confを書き直したときは再起動
# /etc/init.d/named restart
ログ確認
# tail -n 50 /var/log/messages
BIND実行状態を確認
# rndc status
ステータス見て問題なければOK。