nslookupとhostとdig

11月 8, 2009

Linux LPIC編。教科書通りの順番ではないけど、ちょっと苦手なDNSの章にいきなり飛ぶ。

DNSサーバに問合せを行ってIPアドレスとドメインの関連を調べるには、現在の所
nslookup,host,digコマンドがある。
nslookupを実行すると、ご存知のように「いずれ消滅するからdig使ってね」と言われるけど、
hostコマンドの方が、シンプルでいいな。とはいえ、いい加減digの見方も覚えないとね・・・

とにかくこの場で、それぞれまとめてみよう。

nslookupは、DNSサーバを使ってホストやドメインの情報を表示するおなじみの
コマンド。

$ nslookup 74.125.153.132
Server: 218.176.253.65 ←DNSサーバ218.176.253.65に対して問合せをしている
Address: 218.176.253.65#53

Non-authoritative answer:  ←キャッシュサーバが回答を返していることを示す
132.153.125.74.in-addr.arpa name = ty-in-f132.google.com.

Authoritative answers can be found from:
125.74.in-addr.arpa nameserver = NS1.google.com.
125.74.in-addr.arpa nameserver = NS4.google.com.
125.74.in-addr.arpa nameserver = NS3.google.com.
125.74.in-addr.arpa nameserver = NS2.google.com.
NS1.google.com internet address = 216.239.32.10
NS2.google.com internet address = 216.239.34.10
NS3.google.com internet address = 216.239.36.10
NS4.google.com internet address = 216.239.38.10


hostコマンドは、デフォルトではホスト名とIPアドレスの変換のみ行う。

書式
host ホスト名/ドメイン名/IPアドレス [問い合わせ先DNSサーバ]

$ host 74.125.153.132
132.153.125.74.in-addr.arpa domain name pointer ty-in-f132.google.com.


-t オプションでリソースレコードタイプを指定できる。
以下、nsレコードやmxレコードを指定。

$ host -t ns google.com
google.com name server ns3.google.com.  ←google.comのネームサーバ
google.com name server ns2.google.com.
google.com name server ns4.google.com.
google.com name server ns1.google.com.

$ host -t mx google.com ↓ google.comのメールサーバ
google.com mail is handled by 10 google.com.s9b2.psmtp.com.
google.com mail is handled by 10 google.com.s9a1.psmtp.com.
google.com mail is handled by 10 google.com.s9a2.psmtp.com.
google.com mail is handled by 10 google.com.s9b1.psmtp.com.


dig(Domain Infomation Groper)コマンドはより詳細な情報をDNSサーバから取得する。
(詳細すぎて見方がよく分からないので利用しないという事態に陥っていたがxxx)

書式
dig [@ 問い合わせ先DNSサーバ] ホスト名/ドメイン名/IPアドレス [クエリタイプ]

主なオプション
-x 指定したIPアドレスの逆引き
-p ポート番号を指定。デフォルトは53番

クエリタイプ
a ホスト名に対応するIP(デフォルト)
ptr IPに対するホスト名
ns DNSサーバ
mx メールサーバ
soa SOAレコード情報
hinfo ホスト情報
axfr ゾーン転送
txt 任意の文字列
any すべての情報


ヘッダー部 status欄がNOERRORであれば正常な応答。
問い合わせたドメインが存在しない場合はNXDOMAINとなる。
DNSサーバが正しく応答しないとSERVFAIL。
flags欄のフラグの意味は以下の通り。

qr 問合せに対する回答
aa 権威のある回答
rd 再帰検索が可能
ra 再帰検索を希望


続く回答は四つのセクションに分かれる。

$ dig -x 74.125.153.132

; <<>> DiG 9.3.4-P1 <<>> -x 74.125.153.132
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34996
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 4
フラグと回答の数を表示

;; QUESTION SECTION: ←問合せ内容を表示
;132.153.125.74.in-addr.arpa. IN PTR

;; ANSWER SECTION: ←問合せに対する回答を表示
132.153.125.74.in-addr.arpa. 47193 IN PTR ty-in-f132.google.com.

;; AUTHORITY SECTION: ←問合せ先に権威がある場合に表示される
125.74.in-addr.arpa. 44905 IN NS NS4.google.com.
125.74.in-addr.arpa. 44905 IN NS NS3.google.com.
125.74.in-addr.arpa. 44905 IN NS NS2.google.com.
125.74.in-addr.arpa. 44905 IN NS NS1.google.com.

;; ADDITIONAL SECTION: ←ホストのIPアドレスなど、付属的な情報を表示
NS1.google.com. 131300 IN A 216.239.32.10
NS2.google.com. 131300 IN A 216.239.34.10
NS3.google.com. 131300 IN A 216.239.36.10
NS4.google.com. 131300 IN A 216.239.38.10

(以下フッター部)
;; Query time: 40 msec ←検索にかかった時間
;; SERVER: 218.176.253.65#53(218.176.253.65) 
↑ 回答したネームサーバのIPとポートNo
;; WHEN: Fri Jul 31 23:30:10 2009 ←問合せ日時
;; MSG SIZE rcvd: 216 ←メッセージサイズ


苦手なdigコマンドも、こうして整理すれば使いこなせるように・・・なるかな???


追記
digコマンドには他にもいろんな使い道があるようだ。例えば、以下はdigを利用して
最新のルートDNSサーバの情報を反映。

# dig@m.root-servers.net. ns > named.hint

※例としてルートネームサーバの一覧ファイルをnamed.hintとしている


それからnslookupで回答が得られなかった場合でも、digだと回答貰えることがある。

出典
Linux教科書LPICレベル2(翔泳社)


Linux記事一覧はこちらをどうぞ
↓ ↓ ↓
Linux-index


Categories: LPIC