1日1アウトプットを心がける
- 前提
- Debian GNU/Linux lennyで確認。
本題に入る前に自分のためにいつも忘れがちな用語を整理
名前解決するためのDNSクライアントコマンドはnslookup、host、digの3つがあります。nslookupはwindowsにも付属しているコマンドなのでなじみが深いかと思います。
nslookup
実行結果はこんな感じ。Non-authoritative answerとか言われているのはキャッシュサーバが回答を返しているからです。
masasuzu@lenny% nslookup google.com Server: 192.168.1.31 Address: 192.168.1.31#53 Non-authoritative answer: Name: google.com Address: 66.249.89.104 Name: google.com Address: 66.249.89.99
-typeオプションをつけるとリソースレコードのタイプを指定できます。
masasuzu@lenny% nslookup -type=mx google.com Server: 192.168.1.31 Address: 192.168.1.31#53 Non-authoritative answer: google.com mail exchanger = 300 google.com.s9b1.psmtp.com. google.com mail exchanger = 100 google.com.s9a1.psmtp.com. google.com mail exchanger = 400 google.com.s9b2.psmtp.com. google.com mail exchanger = 200 google.com.s9a2.psmtp.com. Authoritative answers can be found from:
host
実行結果はこんな感じ。lennlyに載っているhostコマンドはnslookupと違ってデフォルトでMXレコードも返してくれます。
masasuzu@lenny% host google.com google.com has address 66.249.89.104 google.com has address 66.249.89.99 google.com mail is handled by 300 google.com.s9b1.psmtp.com. google.com mail is handled by 100 google.com.s9a1.psmtp.com. google.com mail is handled by 400 google.com.s9b2.psmtp.com. google.com mail is handled by 200 google.com.s9a2.psmtp.com.
-tでタイプ指定、-vで冗長出力します。
masasuzu@lenny% host -t ns google.com google.com name server ns2.google.com. google.com name server ns1.google.com. google.com name server ns3.google.com. google.com name server ns4.google.com. masasuzu@lenny% host -v google.com Trying "google.com" ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19563 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;google.com. IN A ;; ANSWER SECTION: google.com. 172 IN A 66.249.89.104 google.com. 172 IN A 66.249.89.99 Received 60 bytes from 192.168.1.31#53 in 1 ms Trying "google.com" ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43957 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;google.com. IN AAAA Received 28 bytes from 192.168.1.31#53 in 1 ms Trying "google.com" ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28348 ;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;google.com. IN MX ;; ANSWER SECTION: google.com. 869 IN MX 200 google.com.s9a2.psmtp.com. google.com. 869 IN MX 100 google.com.s9a1.psmtp.com. google.com. 869 IN MX 400 google.com.s9b2.psmtp.com. google.com. 869 IN MX 300 google.com.s9b1.psmtp.com. Received 162 bytes from 192.168.1.31#53 in 1 ms
dig
出力はこんな感じ。上2コマンドに比べて、詳細な情報を取得することができます。
statusがNOERRORになっていれば正しく応答をもらっていることになります。
masasuzu@lenny% dig google.com a ; <<>> DiG 9.6-ESV-R3 <<>> google.com a ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44662 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;google.com. IN A ;; ANSWER SECTION: google.com. 300 IN A 66.249.89.104 google.com. 300 IN A 66.249.89.99 ;; Query time: 96 msec ;; SERVER: 192.168.1.31#53(192.168.1.31) ;; WHEN: Thu Feb 3 23:25:38 2011 ;; MSG SIZE rcvd: 60
上記2コマンドではオプションなしで逆引きができましたが、digでは-xオプションを使います。
masasuzu@lenny% dig -x 66.249.89.99 ; <<>> DiG 9.6-ESV-R3 <<>> -x 66.249.89.99 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53842 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;99.89.249.66.in-addr.arpa. IN PTR ;; ANSWER SECTION: 99.89.249.66.in-addr.arpa. 86289 IN PTR nrt04s01-in-f99.1e100.net. ;; Query time: 6 msec ;; SERVER: 192.168.1.31#53(192.168.1.31) ;; WHEN: Thu Feb 3 23:30:35 2011 ;; MSG SIZE rcvd: 82 masasuzu@lenny% nslookup 66.249.89.99 Server: 192.168.1.31 Address: 192.168.1.31#53 Non-authoritative answer: 99.89.249.66.in-addr.arpa name = nrt04s01-in-f99.1e100.net. Authoritative answers can be found from: masasuzu@lenny% host 66.249.89.99 99.89.249.66.in-addr.arpa domain name pointer nrt04s01-in-f99.1e100.net.
ちょっとしたことを調べるにはnslookup、細かい調査をするにはdigといったところでしょうか。nslookupは将来的には廃止されるようですが。