DNS(bind9)のデバック

特定のドメインの設定がうまくいっていなくてそのドメインだけつながらないというような場合には、デバックが結構大変です。今まで通り設定したのにそのドメインがいつまでたっても引けないなんていうことがよくあるので、そのような場合のデバックの方法をまとめておきます。

基本的な動作の確認

bindをストップさせてみる
# /etc/init.d/named stop [Enter]
bindを止めてみて正常につながっている機能が止めるかどうか確かめてみる。

bindをスタートさせる
# /etc/init.d/named start [Enter]
先ほど止めてみた機能がきちんと動くかどうか確かめてみる。

bindを再起動する
# /etc/init.d/named restart [Enter]
 再起動してみて正常に動くかどうか確かめてみる。何らかの設定をした後は再起動していないだけだった...みたいなことがよくあります。

pingでパケットを送信してみる
# ping -c 4 <自身のIPアドレス> [Enter]
 DNSサーバーのあるIPアドレスにパケットを送信して通信しているかどうか確かめてみる。

bindの動作確認をする
# ps ax | grep named [Enter]
 bindのプロセスが正常に動いているか確認します。通常は以下のような感じになっています。
1648 ? Ssl 0:00 /usr/sbin/named -u named -t /var/named/chroot
2623 pts/0 S+ 0:00 grep named

named.confの文法をチェック(デバック)する
# named-checkconf /etc/bind/named.conf
/etc/bind/named.conf.default-zones:2: when using 'view' statements, all zones must be in viewsなどかなりはっきりと訂正箇所を指定してくれるのでかなり使えます。私の場合ブロック指定の際に最後の括弧"}"の後ろにセミコロン";"をつけるのをすぐに忘れてしまいました。

ゾーンファイルの文法チェック
# named-checkzone example.com /etc/bind/zoon/db.example.com
zone example.com/IN: loaded serial 2010081606
OK
という風にゾーンとクラス、シリアル番号が返ってきてOKが表示されたら大丈夫です。修正すべき箇所があるとその行を指摘してくれます。



正引き逆引き

digでドメインの正引きをしてみる
# dig example.com @ns.example.com [Enter]
digでドメインを指定して、そのドメインの名前解決を行うDNSサーバーを@以下で指定します。@以下を省略する場合は、すべてのDNSサーバーが対象になります。

digでドメインの逆引きをしてみる
# dig -x 192.168.11.38 @localhost [Enter]
digで逆引きをする場合はオプション-xが必要です。その他は正引きと同様に@以下で名前解決をするDNSサーバーを指定できます。

tracerouteで経路を確認
# traceroute example.com [Enter]
traceroute to example.com (121.xxx.xxx.xxx), 64 hops max, 40 byte packets
 1  ns.example.com (192.168.11.1)  0 ms  6 ms  0 ms
 2  example.com (121.xxx.xxx.xxx)  4 ms  10 ms  10 ms
 こんな感じで名前解決の経路がわかります。この場合は、LAN内のデフォルトゲートウェイを経由してIPアドレス121.xxx.xxx.xxxで名前解決されていることになります。(最も本来はLAN内のどこかで名前解決されているのですが...。)














プロフィール



  • Name :: 山上オサム ♂(37)
  • Hobby :: 武術
  • Work :: Web Designer