対象サーバについて
製品名 | OpenBlockS 600 |
OS(kernel ver) | Debian lenny(2.6.29) |
CPU | 600MHz(AMCC PowerPC 405EX) |
メモリ | 1GB(DDR2 SDRAM) |
ストレージ | 8GB(Compact Flash) |
RNDCの設定
Bind9のインストール
# aptitude install bind9
/etc/bind/rndc.confの作成
www:~# cd /etc/bind www:/etc/bind# ls db.0 db.255 db.local named.conf named.conf.options zones.rfc1918 db.127 db.empty db.root named.conf.local rndc.key
→bind9の設定ファイルは/etc/bindにあります。
www:/etc/bind# rndc-confgen -b 512
→OpenBlockS600(当サイトで使用しているサーバ)では/dev/randomだと長時間かかるため/dev/urandomで代替します。
www:/etc/bind# rndc-confgen -b 512 -r /dev/urandom > rndc.conf www:/etc/bind# ls -al rndc.conf -rw-r--r-- 1 root bind 607 2010-01-03 15:40 rndc.conf
→/etc/rndc.confが作成されました。
www:/etc/bind# chown root:root rndc.conf www:/etc/bind# chmod 600 rndc.conf www:/etc/bind# ls -al rndc.conf -rw------- 1 root root 607 2010-01-03 15:40 rndc.conf
→rndcはrootで動作するため権限を修正します。
rndc.confの初期設定の確認
確認するファイル:/etc/bind/rndc.conf
# Start of rndc.conf key "rndc-key" { algorithm hmac-md5; secret "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; }; options { default-key "rndc-key"; default-server 127.0.0.1; default-port 953; }; # End of rndc.conf # Use with the following in named.conf, adjusting the allow list as needed: # key "rndc-key" { # algorithm hmac-md5; # secret "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; # }; # # controls { # inet 127.0.0.1 port 953 # allow { 127.0.0.1; } keys { "rndc-key"; }; # }; # End of named.conf
→コメントアウトされている部分の#を削除してnamed.confにコピーします。
named.confの設定
修正するファイル:/etc/bind/named.conf
// 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"; # Use with the following in named.conf, adjusting the allow list as needed: key "rndc-key" { algorithm hmac-md5; secret "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; }; controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; }; }; # End of named.conf // prime the server with knowledge of the root servers zone "." { type hint; file "/etc/bind/db.root"; }; // be authoritative for the localhost forward and reverse zones, and for // broadcast zones as per RFC 1912 zone "localhost" { type master; file "/etc/bind/db.local"; }; zone "127.in-addr.arpa" { type master; file "/etc/bind/db.127"; }; zone "0.in-addr.arpa" { type master; file "/etc/bind/db.0"; }; zone "255.in-addr.arpa" { type master; file "/etc/bind/db.255"; }; include "/etc/bind/named.conf.local";
→ピンク色の部分を追加しました。
bind9の再起動を実施します。
# /etc/init.d/bind9 start Starting domain name service...: bind9/etc/init.d/bind9: line 44: 22152 セグメンテーション違反です start-stop-daemon --start --oknodo --quiet --exec /usr/sbin/named --pidfile ${PIDFILE} -- $OPTIONS failed! # /usr/sbin/named セグメンテーション違反です
→通常は正常起動するのですが、OpenBlockS600(当サイトで使用しているサーバ)の場合はここでbinaryファイル(/usr/sbin/named)の入れ替えが必要となります。
その方法についてはOpenblocks600用bind9のbinary入れ替えにまとめていますので参考にしてみて下さい。
ここでは起動に成功したものとして先に進みます。
named.confの修正
修正するファイル:/etc/bind/named.conf
// 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/rndc.key";# Use with the following in named.conf, adjusting the allow list as needed: key "rndc-key" { algorithm hmac-md5; secret "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; };controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; }; }; # End of named.conf // prime the server with knowledge of the root servers zone "." { 以下、省略
→ピンク色の部分を追加して横線部分をrndc.keyファイルに切り出します。
rndc.keyの作成とnamed.confでの指定
新規作成するファイル:/etc/bind/rndc.key
# Use with the following in named.conf, adjusting the allow list as needed: key "rndc-key" { algorithm hmac-md5; secret "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; };
→named.confからkey部分を切り出しました。
次に、このファイルの権限を修正します。
# chmod 600 /etc/bind/rndc.key # chown bind:bind /etc/bind/rndc.key # ls -al /etc/bind/rndc* -rw------- 1 root root 607 2010-01-03 15:40 rndc.conf -rw------- 1 bind bind 227 2010-01-03 16:49 rndc.key
→ rndc.confはrndcコマンドが使用するため、rootのみが読める必要があります。
一方、rndc.keyはnamed.confにてincludeされているため、bindが読める必要があります(namedは-u bindしているため、ユーザbindにて動作します。)
bind9の再起動
# /etc/init.d/bind9 restart Stopping domain name service...: bind9 waiting for pid 2577 to die. Starting domain name service...: bind9. # rndc status number of zones: 14 debug level: 0 xfers running: 0 xfers deferred: 0 soa queries in progress: 0 query logging is OFF recursive clients: 0/0/1000 tcp clients: 0/100 server is up and running
→動作確認OK
ここまでで、rndc.confの作成、named.confからrndc.keyの切り出し、起動確認まで終了しました。
ルートゾーンの設定
内部LANの端末は本サーバをDNSサーバとして設定するため、内部端末からのqueryに対して外部DNSに再帰問い合わせできるようにする必要があります。
内部端末がwww.abc.jpのwebサイトを閲覧する際、①のwww.abc.jpの正引きのqueryに対して②~⑦の再帰問い合わせが実施されることになります。
この動きを実現するためには以下の作業が必要になります。
- db.rootの作成
- named.confにdb.rootファイルの指定
- named.conf にRecursion yes; の指定
上記、2,3については別途zoneファイルの項で説明するので、まずはdb.rootの作成を行い、その後、常にdb.rootを最新状態に保つためのcron用のスクリプトを作成します。
digのインストール
ルートゾーンファイルを作成する際に使用するdigをインストールします。
# dig -su: dig: command not found
→digが入っていません(digはdnsutilsのパッケージに含まれています。)
# aptitude install dnsutils 以下の新規パッケージがインストールされます: bind9-host{a} dnsutils # dig ; <<>> DiG 9.5.1-P3 <<>> ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62314 ;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 14
→インストール完了
# cp /etc/bind/db.root /etc/bind/db.root.original.20100103 # dig @a.root-servers.net . ns > /etc/bind/db.root
→ルートゾーンファイルが作成されました。
ルートゾーン自動更新cronの作成
こちらを参考にさせて頂きました。
作成したファイル:/etc/cron.monthly/named.root_update
#!/bin/bash new=`mktemp` errors=`mktemp` dig . ns @198.41.0.4 > $new 2> $errors if [ $? -eq 0 ]; then sort_new=`mktemp` sort_old=`mktemp` diff_out=`mktemp` sort $new > $sort_new sort /etc/bind/db.root > $sort_old diff --ignore-matching-lines=^\; $sort_new $sort_old > $diff_out if [ $? -ne 0 ]; then ( echo '-------------------- old named.root --------------------' cat /etc/bind/db.root echo echo '-------------------- new named.root --------------------' cat $new echo '---------------------- difference ----------------------' cat $diff_out ) | mail -s 'named.root updated' root cp -f $new /etc/bind/db.root chmod 644 /etc/bind/db.root /etc/init.d/bind9 restart > /dev/null fi rm -f $sort_new $sort_old $diff_out else cat $errors | mail -s 'named.root update check error' root fi rm -f $new $errors
→db.rootとdig . ns @198.41.0.4の実施結果が異なった場合はroot宛に差分のメールを送信し、bind9をrestartします。
# chmod 755 /etc/cron.monthly/named.root_update # vi /etc/bind/db.root →アドレスを修正して動作確認 # /etc/cron.monthly/named.root_update # tail -300 /var/mail/user001
→差分がメールで飛んでいることを確認
JPのネームサーバとセカンダリDNSの設定
JPのネームサーバについて
外部から本サイトへたどり着くためには、本サイトの上位のJPのネームサーバにて、本サイトのドメイン(example.jp)を管理するネームサーバのIPアドレス(本サイトの場合はWAN側グローバルIPアドレス)が登録されている必要があります。
外部端末がwww.example.jpのwebサイトを閲覧する際、①~⑥の再帰問い合わせが実施されることになります。
これを実現するには以下の2つの設定が必要となります。
- JPのネームサーバにexample.jpのネームサーバ名(ns.example.jp) とIPアドレス(WAN側グローバルIPアドレス)の括り付け
- example.jpドメインを管理するns.example.jpにてゾーンファイル(db.XXX)の作成
上記、2については後述します。
上記、1については、ご自身のドメインを取得された事業者のwebサイトにて設定可能だと思われますので、設定して下さい。
セカンダリDNSサーバについて
外部にSecondary DNSを登録しておき、通常時にZoneファイルを転送しておくと、Primary DNSサーバ障害時においても外部から名前解決が可能になります。
ただし、DNSサーバとWWWサーバが同じ場合には効果が小さいので注意が必要です。
Zone転送のためには以下が必要となります。
- セカンダリDNSサービスを行っているサイトにて自身のネームサーバ名とIPアドレスを登録
- ルータやサーバのフィルタ開放(TCP:53番)
- ZoneファイルにSOAレコード追加
- named.conf(wan view)にallow-transfer設定
上記、2については忘れがちなのでご注意下さい。
上記3,4については後述します。
上記1について、無料のセカンダリDNSサービスを紹介します。本サイトでも使用しています。
URL: http://www.maihama-net.com/
セカンダリDNS その1: ns1.maihama-net.com / 123.50.202.226 (国内設置)
セカンダリDNS その2:ns2.maihama-net.com / 38.110.146.192 (米国設置)
named.conf、named.conf.options、named.conf.localの設定
前置きが長くなりましたが、ここからが本番です。
まずはこれから解説していく設定の前提条件であるネットワーク構成を図示します。
パターン1
パターン1は内向け、外向けDNSサーバを一台で兼ねる構成です。
パターン2
パターン2は外部サーバ(DMZに設置)と内部サーバ(LAN内部に設置)に機能を分ける構成です。
こちらについては複雑なため、内向けDNSサーバと外向けDNSサーバに役割を分割する設定に別途まとめています。
named.confとnamed.conf.localの設定
パターン1の図の通り、以下の条件で設定していきます。
LAN内IPアドレス | 192.168.0.0/24,172.0.0.0/24 |
グローバルIPアドレス | 111.111.111.111/32 |
ドメイン1 | example.jp |
ドメイン2(マルチドメインの場合) | example2.jp |
view "lan"とview "wan"に分け、LAN内IPアドレスからのqueryに対してはview lan、その他のアドレスからのqueryに関してはview wanの設定に従って処理します。
view は、match-clientsにて送信元のアドレスを指定することでlanとwanを見分けています。match-clientsで当てはまった時点で以降のviewは実施されないため、先にview lanにてLANアドレスで絞り込み、view wanではmatch-clients anyにてその他のアドレスからの通信をマッチさせます。
view "lan"に関してはnamed.conf.localという別ファイルにまとめ、named.confからincludeします。
view "wan"に関してはnamed.confにそのまま定義しています。
編集するファイル:/etc/bind/named.conf
# LAN内のNWアドレス acl localnet{ 127.0.0.1; 192.168.0.0/24; 172.0.0.0/24; }; include "/etc/bind/named.conf.options"; include "/etc/bind/rndc.key"; controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; }; }; # LAN内端末からのquery用 include "/etc/bind/named.conf.local"; # 外部の端末からのquery用 view "wan" { match-clients { any; }; # localnetは既にlan viewでmatchさせているためany設定とする allow-query { any; }; # 外部からの問い合わせ用viewのため絞らない recursion no; # 外部からの再帰問い合わせを拒否 notify yes; # DNS情報の変更をSecondary DNSに通知する also-notify { 123.50.202.226; # Secondary DNSのアドレス その1 38.110.146.192; # Secondary DNSのアドレス その2 }; # zoneの定義(逆引きはISPにて設定されており不可) zone "example.jp" IN { type master; file "/etc/bind/db.example.jp"; # zoneファイルの指定 allow-transfer { 123.50.202.226; 38.110.146.192; }; }; // --- マルチドメインを使用する場合はここから追加 ---// zone "example2.jp" IN { type master; file "/etc/bind/db.example2.jp"; allow-transfer { 123.50.202.226; 38.110.146.192; }; }; // ---------------- ここまで追加 --------------------// }; # syslogとquerylogの設定 logging { # syslogの設定 channel "default-log" { syslog local7; # local7.infoにてsyslog出力 severity info; print-time yes; print-severity yes; print-category yes; }; # rndcコマンド実行時に出力されるQuerylog channel "default_debug" { file "named.run"; # rndcコマンドで出力させるログファイル名 severity dynamic; }; # 上記で設定したsyslogとquerylogの有効化(channelだけでは有効にならないため要注意) category default { "default-log"; "default_debug"; }; category "lame-servers" { "null"; }; };
編集するファイル:/etc/bind/named.conf.local
view "lan" { match-clients { localnet; }; # acl localnet(LAN内IPアドレス)に当てはまった場合は本viewを適用 notify no; # DNS情報の変更をSecondary DNSに通知しない allow-query {localnet; }; # 問い合わせを受け付けるホストを指定する recursion yes; # LAN端末から外部ドメインの名前解決のための再帰検索を許可する allow-recursion { localnet; }; # 再帰的な問い合わせを受け付けるホストを指定する。 # 内部端末からドメイン名でアクセスできるようにする zone "exapmle.jp" IN { type master; file "/etc/bind/db.example.jp.lan"; allow-update { none; }; }; zone "localhost" { type master; file "/etc/bind/db.local"; }; zone "0.0.127.in-addr.arpa" { type master; file "/etc/bind/db.127"; }; // --- マルチドメインを使用する場合はここから追加 ---// zone "exapmle2.jp" IN { type master; file "/etc/bind/db.example2.jp.lan"; allow-update { none; }; }; // ---------------- ここまで追加 --------------------// # 外部ドメインを再帰検索するため、先ほど作成したルートゾーンファイルを指定 zone "." { type hint; file "/etc/bind/db.root"; }; # 内部LANからqueryが来た時にインターネットへ逆引きしに行かないようにする設定 zone "0.168.192.in-addr.arpa" { type master; file "/etc/bind/db.empty"; allow-update { none; }; }; # DMZ上の設備の名前解決用 zone "0.0.172.in-addr.arpa" { type master; file "/etc/bind/db.172"; allow-update { none; }; }; };
named.conf.optionsの設定
編集するファイル:/etc/bind/named.conf.options
options { # rndc querylogやrndc trace時のログ保存先を指定 directory "/var/cache/bind"; # bindのバージョンを非表示(セキュリティ対応) version "unknown"; # ダンプファイル(現在のDBとキャッシュの内容)の出力先パスを指定する。 # rndc dumpdbにて出力される。 dump-file "/dump/named_dump.db"; # 問い合わせの統計情報を出力するファイル名を指定 # rndc statsにて出力される。 statistics-file "/dump/named.stats"; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { none; }; pid-file "/var/run/bind/run/named.pid"; };
rndcコマンドによる各種調査を実施した際のログ保存先を指定します。
www:/# mkdir dump www:/# chown bind:bind dump/ www:/# chmod 777 dump/
→dumpや統計情報を保存するためのディレクトリを作成します。
rsyslogの設定
修正するファイル名: /etc/rsyslog.conf
local7.* /var/log/named.log
named 起動時は /var/log/syslogと/var/log/daemon.log に、起動途中から /var/log/named.log にログが出力されますが、BIND9 では named.conf が読み込まれた後に logging ステートメントが有効となることから、起動時のログはデフォルトの宛先に送られているためです。
※logrotateについても必要に応じて設定して下さい(ここでは割愛します)
zoneファイルの設定
# ls /etc/bind/*db* db.0 db.172 db.example.jp db.empty db.root db.127 db.255 db.example.jp.lan db.local
※db.0とdb.255は0と255から始まるアドレスの逆引き設定で、ファイルには特に何も設定が無いため意味は無いですが、デフォルトのままのこしておくことにします。
※マルチドメインの場合、二つ目のドメイン(example2.jp)については逆引き設定しないことにします(逆引きはローカルで使用しているだけなので問題ありません。)
編集するファイル:/etc/bind/db.127
; ; BIND reverse data file for local loopback interface ; $TTL 604800 @ IN SOA localhost. root.localhost. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; IN NS localhost. 1 IN PTR localhost. 1 IN PTR www.example.jp. 1 IN PTR www.example2.jp.
→マルチドメインを使用する場合は一番下の行を追加する
編集するファイル:/etc/bind/db.empty
; BIND reverse data file for empty rfc1918 zone ; ; DO NOT EDIT THIS FILE - it is used for multiple zones. ; Instead, copy it, edit named.conf, and use that copy. ; $TTL 86400 @ IN SOA localhost. root.localhost. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 86400 ) ; Negative Cache TTL ; @ IN NS localhost.
編集するファイル:/etc/bind/db.local
; ; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA localhost. root.localhost. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS localhost. @ IN A 127.0.0.1 @ IN AAAA ::1
編集するファイル:/etc/bind/db.example.jp
$TTL 86400 @ IN SOA ns.example.jp. user001.example.jp.( 2010012401 ; Serial 3600 ; secondaryがゾーン情報の更新をチェックする間隔 7200 ; secondaryがゾーン転送を失敗した場合に待機する間隔 604800 ; secondaryがゾーンファイルを無効とみなすまでの時間 3600 ) ; 問い合わせレコードが存在しなかった場合に「存在しない」という情報の生存時間 IN NS ns.example.jp. IN NS ns1.maihama-net.com. IN NS ns2.maihama-net.com. IN MX 10 mail.example.jp. @ IN A 111.111.111.111 ns IN A 111.111.111.111 www IN A 111.111.111.111 mail IN A 111.111.111.111
編集するファイル:/etc/bind/db.example.jp.lan
$TTL 86400 @ IN SOA ns.example.jp. user001.example.jp.( 2010012401 ; Serial 3600 ; secondaryがゾーン情報の更新をチェックする間隔 7200 ; secondaryがゾーン転送を失敗した場合に待機する間隔 604800 ; secondaryがゾーンファイルを無効とみなすまでの時間 100 ) ; 問い合わせレコードが存在しなかった場合に「存在しない」という情報の生存時間 IN NS ns.example.jp. IN MX 10 mail.example.jp. @ IN A 172.0.0.2 ns IN A 172.0.0.2 www IN A 172.0.0.2 mail IN A 172.0.0.2 router IN A 172.0.0.1
編集するファイル:/etc/bind/db.172
$TTL 86400 @ IN SOA ns.example.jp. user001.example.jp.( 2010012402 ; Serial 3600 ; secondaryがゾーン情報の更新をチェックする間隔 7200 ; secondaryがゾーン転送を失敗した場合に待機する間隔 604800 ; secondaryがゾーンファイルを無効とみなすまでの時間 3600 ) ; 問い合わせレコードが存在しなかった場合に「存在しない」という情報の生存時間 IN NS ns.example.jp. 2 IN PTR ns.example.jp. 2 IN PTR www.example.jp. 2 IN PTR mail.example.jp. 1 IN PTR router.example.jp.
以降はマルチドメインの場合のみ設定
編集するファイル:/etc/bind/db.example2.jp
$TTL 86400 @ IN SOA ns.example2.jp. user001.example2.jp.( 2010012401 ; Serial 3600 ; secondaryがゾーン情報の更新をチェックする間隔 7200 ; secondaryがゾーン転送を失敗した場合に待機する間隔 604800 ; secondaryがゾーンファイルを無効とみなすまでの時間 3600 ) ; 問い合わせレコードが存在しなかった場合に「存在しない」という情報の生存時間 IN NS ns.example2.jp. IN NS ns1.maihama-net.com. IN NS ns2.maihama-net.com. IN MX 10 mail.example2.jp. @ IN A 111.111.111.111 ns IN A 111.111.111.111 www IN A 111.111.111.111 mail IN A 111.111.111.111
編集するファイル:/etc/bind/db.example2.jp.lan
$TTL 86400 @ IN SOA ns.example2.jp. user001.example2.jp.( 2010012401 ; Serial 3600 ; secondaryがゾーン情報の更新をチェックする間隔 7200 ; secondaryがゾーン転送を失敗した場合に待機する間隔 604800 ; secondaryがゾーンファイルを無効とみなすまでの時間 100 ) ; 問い合わせレコードが存在しなかった場合に「存在しない」という情報の生存時間 IN NS ns.example2.jp. IN MX 10 mail.example2.jp. @ IN A 172.0.0.2 ns IN A 172.0.0.2 www IN A 172.0.0.2 mail IN A 172.0.0.2 router IN A 172.0.0.1
/etc/resolv.confの設定
編集するファイル:/etc/resolv.conf
nameserver 127.0.0.1 search example.jp example2.jp
rndcによるdebugの方法
queryログの取得方法
# rndc querylog
→querylogをonにします。
# rndc status number of zones: 1 debug level: 0 xfers running: 0 xfers deferred: 0 soa queries in progress: 0 query logging is ON recursive clients: 0/0/1000 tcp clients: 0/100 server is up and running
→ロギングがonになりました。
デバッグの出力方法
# rndc trace デバッグレベル
→デバッグレベルには0~99の整数を指定します。
デバッグレベルが大きい(高い)ほど、表示されるメッセージが詳細になります。
デバッグレベルを付加せずにtraceとだけすると、デバッグレベルが1段上がります。
デバッグ出力の停止はrndcコマンドでnotraceまたはtrace 0を指定します。
ログはnamed.conf.optionsの「directory」で指定したディレクトリに、named.confのchannel "default_debug"で指定したファイル名で出力されます。
当サイトの設定の場合は「/var/cache/bind/named.run」になります。
querylogのファイルの中身を確認してみます。
# tail -f /var/cache/bind/named.run no longer listening on 127.0.0.1#53 no longer listening on 192.168.0.2#53 exiting zone 0.in-addr.arpa/IN/lan: loaded serial 1 zone 127.in-addr.arpa/IN/lan: loaded serial 1 zone 0.168.192.in-addr.arpa/IN/lan: loaded serial 2009123001 zone 255.in-addr.arpa/IN/lan: loaded serial 1 zone example.jp/IN/lan: loaded serial 2009123001 zone localhost/IN/lan: loaded serial 2 running createfetch: www.ocn.ne.jp A createfetch: . NS createfetch: K.ROOT-SERVERS.NET A createfetch: K.ROOT-SERVERS.NET AAAA createfetch: L.ROOT-SERVERS.NET A createfetch: L.ROOT-SERVERS.NET AAAA createfetch: M.ROOT-SERVERS.NET A createfetch: M.ROOT-SERVERS.NET AAAA network unreachable resolving 'www.ocn.ne.jp/A/IN': 2001:dc4::1#53 network unreachable resolving 'www.ocn.ne.jp/A/IN': 2001:2f8:0:100::153#53
→rndc trace 1を投入して内部LANからnslookupしたところ、IPv6のエラーらしき結果が出ていました。
named.conf.optionsでIPv6を無効にしているはずですが、効いていないように思われます。
namedの起動スクリプトの中でオプションに-4を付けてみたところ回復しました。
# vi /etc/init.d/bind9 if start-stop-daemon --start --oknodo --quiet --exec /usr/sbin/named \ --pidfile ${PIDFILE} -- $OPTIONS -4; then # /etc/init.d/bind9 restart Stopping domain name service...: bind9 waiting for pid 22770 to die. Starting domain name service...: bind9.
rndc statsとrndc dumpdbについて
rndc stats
→/dump/named.statsに利用状況を表示します。cronで定期実行してmrtgなどでグラフ化すると有効です。
rndc dumpdb
→/dump/namedにキャッシュされているメモリ内のデータを出力します。