DNSが使用するポート番号(TCP/UDPの53)

 DNSでは、主にUDPを使用して通信を行います。名前解決でやり取りされるデータが小さいことやオーバヘッドを小さくしたいことが理由です。

 TCPを利用すると、スリーウェイハンドシェイクでセッションを確立してからでないとデータの送信を行うことができません。また、信頼性を確保するために確認応答や再送信などの処理を行うためオーバヘッドが大きくなってしまいます。

 名前解決の問い合わせは、即時性が求められますし、なにより、小さなデータをやり取りするためにTCPを利用するのは非効率です。

 DNSによる名前解決では、問い合わせ・応答ともにUDPの制限で1パケット、512bytesまでで行えるように設計されています。この512bytesという制限があるおかけで、フラグメンテーションやパケットの到着順序が変わってしまうなどの問題がなくなります。

 セカンダリDNSサーバがプライマリDNSサーバの持つデータの複製するために行うゾーン転送には、TCPポートの53番を利用します。

ファイアウォールで、DNSのパケットがフィルタリングされないように設定する必要があります。

DNS(nslookupコマンド)

 nslookupは、UNIX上でDNSが開発された当初から利用されている歴史のある古いコマンドです。DNSの名前解決機能を手動で実行するためのコマンドで、トラブルシューティング時に頼りになります。

正引き/逆引き、Aレコード/NSレコード/MXレコードなどのレコードの絞込み検索を行うことができます。

 同様のコマンドとして、UNIXやLinuxなどでは「digコマンド」や「hostコマンド」といった、より高機能なコマンドが用意されています。Windows OS環境では「nslookup.exe」しか用意されていません。

ここでは、Windowsの「nslookup.exe」コマンドの使い方を紹介して行きます。

コマンドプロンプトを起動して「nslookup」と入力します。

c:\>nslookup

FQDN名を指定したDNS検索

 DNSサーバに対する検索は、FQDN名によるAレコードの検索が基本になります。ここでは、「www.yahoo.co.jp」と入力してみます。

>www.yahoo.co.jp

Windows Vistaの場合、nslookupの挙動が今までと少し違います。「権限のない回答」と結果が返されます。

これは、ネームサーバのキャッシュ(権限のない回答)を参照してることを表しています。

「www.yahoo.co.jp」は、エイリアス(Aliases)であることが分かります。

逆引きポインタの検索

 IPアドレスからFQDN名を検索することができます。DNSサーバの逆引きレコード(PTRレコード)を検索することができます。

先ほど求めた「www.yahoo.co.jp」のIPアドレスを入力してみます。

下表の指定をすることで、FQDN名とIPアドレスの関連付け以外にも各種情報を返してくれます。

set querytype=参照したいレコード

コマンド内容
set querytype=soaSOAレコード(DNSサーバのドメインに関する基本情報)
set querytype=nsNSレコード(ドメインのDNSサーバ)
set querytype=mxMXレコード(ドメインのメールサーバ)
set querytype=aAレコード(ホスト名をIPアドレスの関連付け)
 set querytype=参照したいレコード