ここでは、DNSサーバーのトラブルシューティングに役立つコマンドとしてNSLOOKUPについて解説をしていきます。Linuxにおいては将来のバージョンでは廃止され、その代用としてdigコマンドやhostコマンドが採用されるようです。それでも、RedHatLinux9のバージョンにて一応
nslookup はサポートされていますし、今後も何かと活用する機会があると思います。何より、WindowsOSを使っている場合などは通常はこのコマンドを使用するかたの方がまだまだ多いでしょう。ここを読んでおられる皆さんは、nslookup
の基本的な使い方ぐらいは既にご存知の事とおもいますが、nslookupには実は意外と多くのオプションがあります。それらの高度な使い方を知っておくことでより多くの情報を得ることができますし、トラブル解決も早くなりますので覚えておいて損はないでしょう。
|
|
■基本的な使い方
なにはともあれ、nslookupの基本的な使い方から説明していきます。まず、以下のように"nslookup"とコマンドを入力すると、冒頭で述べたnslookupが廃止されるので、digやhostコマンドを勧めますといった旨のメッセージが表示されます。このメッセージを省略したい場合には、"nslookup
-sil "と入力します。
# nslookup
Note: nslookup is deprecated and may be
removed from future releases.
Consider using the `dig' or `host' programs
instead. Run nslookup with
the `-sil[ent]' option to prevent this message
from appearing.
>
# nslookup -sil
> |
|
では、筆者のDNSサーバーが構築された環境の中で、外部ドメインの正引きと逆引きを行うことができるかどうかを試してみます。DNSサーバーが正常に動作しているならば、きちんと応答が返ってくるはずです。以下は筆者が加入しているプロバイダに向けてnslookupを実行した例です。
# nslookup -sil
> www.interlink.or.jp
Server: ns1.kororo.jp
Address: 127.0.0.1#53
Non-authoritative answer:
www.interlink.or.jp canonical name = www2.interlink.or.jp.
Name: www2.interlink.or.jp
Address: 203.141.128.17
>
> 203.141.128.17
Server: ns1.kororo.jp
Address: 127.0.0.1#53
Non-authoritative answer:
17.128.141.203.in-addr.arpa name = www2.interlink.or.jp.
Authoritative answers can be found from:
128.141.203.in-addr.arpa nameserver = dns2.interlink.or.jp.
128.141.203.in-addr.arpa nameserver = dns1.interlink.or.jp.
dns1.interlink.or.jp internet address =
203.141.128.37
dns2.interlink.or.jp internet address =
203.141.128.38 |
|
まず、2行目を見てもらいたいのですが、2行目では「www.interlink.or.jp のIPアドレスは何ですか?」という問い合わせを行っています。3行目では、「server
ns1.kororo.jp 」といったようにLAN内に設置してあるDNSサーバー名が表示されていればOKです。要するに、この問い合わせは、ns1.kororo.jp
が行いますよ!という意味になります。さらにもう一点着目しておきたいのは、CNAMEです。www.interlink.or.jp
の別名は、www2.interlink.or.jp ですよ、という回答が「www.interlink.or.jp
canonical name = www2.interlink.or.jp.」という形で表示されます。
返ってきた答えが、9行目の「Address: 203.141.128.17」ということになります。これで正常に正引きができたので、今度は逆引きを行います。その例が、11行目です。「203.141.128.17」のホスト名は何ですか?と問い合わせると、CNAMEで別名定義された「www2.interlink.or.jp」という回答が得られます。その他にもDNSサーバーのホスト名とIPアドレスも表示されています。実際にこの問い合わせに対しての応答を行っているのは、「dns1.interlink.or.jp」もしくは、「dns2.interlink.or.jp」ということになります。ここで15行目に表示されているNon-authoritative
answerについて少し解説してみましょう。
■Non-authoritative answerについて
Non-authoritative answerというのは、ゾーン情報に関して権威の持たないものからの回答、という意味で、簡単に言ってしまえば、筆者のローカルに設置してあるDNSサーバーが代わりにこの問い合わせに対する応答をしたために、Non-authoritative
answerと表示されてしまうのです。仮に直接インターリンクの大元のDNSサーバーに問い合わせた場合、Non-authoritative
answerとは表示されなくなります。試しに、
serverオプションを利用して例をだしてみましょう。
# nslookup -sil
> server dns1.interlink.or.jp
Default server: dns1.interlink.or.jp
Address: 203.141.128.37#53
> www.interlink.or.jp
Server: dns1.interlink.or.jp
Address: 203.141.128.37#53
www.interlink.or.jp canonical name =
www2.interlink.or.jp.
Name: www2.interlink.or.jp
Address: 203.141.128.17
|
|
まず、serverオプションを使って、デフォルトで使用するDNSサーバーを筆者のDNSサーバーではなく、インターリンクの大元のDNSサーバーに変更します。その上で、「www.interlink.or.jp」のIPアドレスを求めてみると今度はさっきと違ってNon-authoritative
answerが表示されなくなったのがわかるとおもいます。これは、ゾーンに関して権威をもっている大元のDNSサーバーが応答を返しているためなのです。
■DNSサーバーの動作確認
自ドメイン内のDNSサーバーが正常に稼動しているかどうかを確認するには以下の項目をチェックする必要があります。
・LAN内に設置されたホストの正引き、逆引きが行えるかどうか
・外部ホストの正引き、逆引きが行えるかどうか
・セカンダリDNSサーバーから自ドメインの正引き、逆引きが行えるかどうか
# nslookup -sil
> router
Server: ns1.kororo.jp
Address: 127.0.0.1#53
Name: router.kororo.jp
Address: 172.16.50.1
>
> 172.16.50.1
Server: ns1.kororo.jp
Address: 127.0.0.1#53
1.50.16.172.in-addr.arpa name = router.kororo.jp.
>
> www.plala.or.jp
Server: ns1.kororo.jp
Address: 127.0.0.1#53
Non-authoritative answer:
Name: www.plala.or.jp
Address: 218.47.162.65
>
> 218.47.162.65
Server: ns1.kororo.jp
Address: 127.0.0.1#53
Non-authoritative answer:
65.162.47.218.in-addr.arpa name = wwwe.plala.or.jp.
> server tegtan1.interlink.or.jp
Default server: tegtan1.interlink.or.jp
Address: 203.141.128.33#53
> ns1.kororo.jp
Server: tegtan1.interlink.or.jp
Address: 203.141.128.33#53
Name: ns1.kororo.jp
Address: 219.117.218.26
> 219.117.218.26
Server: tegtan1.interlink.or.jp
Address: 203.141.128.33#53
26.218.117.219.in-addr.arpa name = ns1.kororo.jp.
|
|
上記の例のように、LAN内のホスト名とIPアドレス、外部のホスト名とIPアドレスが、ns1.kororo.jp
によって応答が返ってくることが確認できればDNSサーバーは正常に稼動していることがわかります。また、デフォルトサーバーをセカンダリDNSサーバーに指定し、自分のホスト名が正引き、逆引きともに引くことができれば、ゾーン転送が正常に行われたことになります。
※nslookupの"ls"オプションについて
BIND8においては、ゾーン転送の確認を行うことができる「ls」オプションが付属しているのですが、BIND9では「ls」オプションを指定すると、「The
'ls' command is not implemented.」(lsコマンドは実装されていません)と言われてしまいます。けれども、「man
nslookup」でマニュアルを確認すると確かに「ls」オプションの説明が載っているんですよね(・・;) どうやら、マニュアルの方がBIND9に追いついていないみたいで「ls」コマンドは実際は使用できないみたいです。まぁ、Linuxではdigコマンドを使ってくださいということでしょうかね…。もしどうしてもnslookupじゃなきゃ嫌だ!という方は、Windowsのコマンドプロンプトを起動してnslookupを実行してください。こちらの方では「ls」コマンドはサポートされています。
|
|