みなさん、IPアドレスというのはご存じですね。ネットワークの住所みたいな数字の羅列です(210.101.2.025みたいなやつです)。インターフェースと1対1(マシンと1対1じゃないんですね。インターフェースと1対1ではないようにもできるそうですが、、、)で対応するアドレスで、本来はこれがホームページの位置を指し示すために使われるのですが、人間には覚えにくいので(17.254.0.91よりはwww.apple.comが覚えやすいですよね)、DNSというやつがアルファベットのアドレスを数字のIPアドレスと対応させる作業をしてくれているわけです。

 そのような割当情報を参照して、例えばwww.apple.comと対応するIPアドレスは何番になるのか調べたい時、昔はnslookupを使うのが定番でしたが、どうもnslookupは無くなるかもしれず、digを使うのが今風なようです。

 ドメイン名に対応したIPアドレスを探す場合は、「dig ドメイン名」とします。このあたりはnslookupと同じですね。それでは、www.apple.comを使ってやってみましょう。

PowerBookG4:~ hiro$ dig www.apple.com

; <<>> DiG 9.2.2 <<>> www.apple.com
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10148
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 11, ADDITIONAL: 11

;; QUESTION SECTION:
;www.apple.com.                 IN      A

;; ANSWER SECTION:
www.apple.com.          444     IN      CNAME   www.apple.com.akadns.net.
www.apple.com.akadns.net. 60    IN      A       17.254.0.91

;; AUTHORITY SECTION:
akadns.net.             65438   IN      NS      asia3.akam.net.
akadns.net.             65438   IN      NS      eur3.akam.net.
akadns.net.             65438   IN      NS      use2.akam.net.
akadns.net.             65438   IN      NS      use4.akam.net.
akadns.net.             65438   IN      NS      usw5.akam.net.
akadns.net.             65438   IN      NS      usw6.akam.net.
akadns.net.             65438   IN      NS      usw7.akam.net.
akadns.net.             65438   IN      NS      za.akadns.net.
akadns.net.             65438   IN      NS      zc.akadns.org.
akadns.net.             65438   IN      NS      zf.akadns.net.
akadns.net.             65438   IN      NS      zh.akadns.org.

;; ADDITIONAL SECTION:
asia3.akam.net.         11897   IN      A       193.108.154.9
eur3.akam.net.          9098    IN      A       193.45.1.103
use2.akam.net.          17585   IN      A       63.209.170.136
use4.akam.net.          8293    IN      A       80.67.67.182
usw5.akam.net.          17585   IN      A       63.241.73.214
usw6.akam.net.          78844   IN      A       206.132.100.108
usw7.akam.net.          78844   IN      A       65.203.234.27
za.akadns.net.          9098    IN      A       208.185.132.176
zc.akadns.org.          10868   IN      A       63.241.199.54
zf.akadns.net.          11897   IN      A       63.215.198.83
zh.akadns.org.          10868   IN      A       63.208.48.46

;; Query time: 218 msec
;; SERVER: 192.168.0.1#53(192.168.0.1)
;; WHEN: Sun Aug 15 16:26:55 2004
;; MSG SIZE  rcvd: 491

 何やら長い表示が出ましたが、まず、

;; QUESTION SECTION:
;www.apple.com.                 IN      A

 という部分は、こちらの問い合わせ内容を示しており、www.apple.comの(IN)インターネットの(A)Aレコードを要求した、ことになっています。Aレコードというのは、ホスト名とIPアドレスの関連づけを定義するレコードだそうです。ちなみに、IPv6だとAAAAレコードなんだとか。。。

 これに対し、

;; ANSWER SECTION:
www.apple.com.          444     IN      CNAME   www.apple.com.akadns.net.
www.apple.com.akadns.net. 60    IN      A       17.254.0.91

 という答えが得られました。www.apple.comは(IN)インターネットの(CNAME)CNAMEレコードでは、www.apple.com.akadns.netになっており、www.apple.com.akadns.netの(IN)インターネットの(A)Aレコードによると、IPアドレスは、17.254.0.91である、ということだそうです。CNAMEレコードというのは、ホストの別名と正式名を登録しておくレコードだそうですので、www.apple.com.akadns.netの別名がapple.comということなんでしょう。(ってことは、www.apple.comはAppleの独自サーバーではない、ってことですかね。)

digでIPアドレスからドメイン名を調べることもできますが、その時は、ちょっとややこしいことになります。

 普通に「dig IPアドレス」としても、、、

PowerBookG4:~ hiro$ dig 17.254.0.91

; <<>> DiG 9.2.2 <<>> 17.254.0.91
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 48919
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;17.254.0.91.                   IN      A

;; AUTHORITY SECTION:
.                       8474    IN      SOA     A.ROOT-SERVERS.NET. NSTLD.VERISIGN-GRS.COM. 2004081301 1800 900 604800 86400

;; Query time: 17 msec
;; SERVER: 192.168.0.1#53(192.168.0.1)
;; WHEN: Sun Aug 15 17:12:35 2004
;; MSG SIZE  rcvd: 104

 この通り、まともな答えは返ってきません。逆引きする場合は、Aレコードとは逆にIPアドレスとホスト名の関連づけを定義するPTRレコードを調べる必要がありますが、digは何も指定しないとAレコードを見に行ってしまいます。また、逆引きの場合、IPアドレスを、後ろから順に書いて、その後に、「.in-addr.arpa」という呪文を入れてやる必要があります。「.in-addr.arpa」は逆引きであることを示すサブドメイン名だそうです。最終的には「dig 逆順に並べたIPアドレス.in-addr.arpa ptr」という書式になります。ですから、IPアドレスの17.254.0.91を逆引きする場合は「dig 91.0.254.17.in-addr.arpa ptr」です

PowerBookG4:~ hiro$ dig 91.0.254.17.in-addr.arpa ptr

; <<>> DiG 9.2.2 <<>> 91.0.254.17.in-addr.arpa ptr
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58125
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 6, ADDITIONAL: 6

;; QUESTION SECTION:
;91.0.254.17.in-addr.arpa.      IN      PTR

;; ANSWER SECTION:
91.0.254.17.in-addr.arpa. 83997 IN      PTR     www.apple.com.

;; AUTHORITY SECTION:
17.in-addr.arpa.        83997   IN      NS      nserver4.apple.com.
17.in-addr.arpa.        83997   IN      NS      nserver.asia.apple.com.
17.in-addr.arpa.        83997   IN      NS      nserver.euro.apple.com.
17.in-addr.arpa.        83997   IN      NS      nserver.apple.com.
17.in-addr.arpa.        83997   IN      NS      nserver2.apple.com.
17.in-addr.arpa.        83997   IN      NS      nserver3.apple.com.

;; ADDITIONAL SECTION:
nserver4.apple.com.     65802   IN      A       17.112.144.59
nserver.asia.apple.com. 65802   IN      A       203.120.14.5
nserver.euro.apple.com. 65802   IN      A       17.72.133.64
nserver.apple.com.      65802   IN      A       17.254.0.50
nserver2.apple.com.     65802   IN      A       17.254.0.59
nserver3.apple.com.     65802   IN      A       17.112.144.50

;; Query time: 33 msec
;; SERVER: 192.168.0.1#53(192.168.0.1)
;; WHEN: Sun Aug 15 17:14:36 2004
;; MSG SIZE  rcvd: 310

 今度は、まともな答えが返ってきましたね。

 しかし、IPアドレスから逆引きする時に毎回これでは気が滅入ると開発者が考えてくれたのか、便利なオプションがあります。「dig -x IPアドレス」とすると、「dig 逆順に並べたIPアドレス.in-addr.arpa ptr」として扱ってくれます。これなら覚えられそうです。

PowerBookG4:~ hiro$ dig -x 17.254.0.91

; <<>> DiG 9.2.2 <<>> -x 17.254.0.91
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63690
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 6, ADDITIONAL: 6

;; QUESTION SECTION:
;91.0.254.17.in-addr.arpa.      IN      PTR

;; ANSWER SECTION:
91.0.254.17.in-addr.arpa. 83973 IN      PTR     www.apple.com.

;; AUTHORITY SECTION:
17.in-addr.arpa.        83973   IN      NS      nserver4.apple.com.
17.in-addr.arpa.        83973   IN      NS      nserver.asia.apple.com.
17.in-addr.arpa.        83973   IN      NS      nserver.euro.apple.com.
17.in-addr.arpa.        83973   IN      NS      nserver.apple.com.
17.in-addr.arpa.        83973   IN      NS      nserver2.apple.com.
17.in-addr.arpa.        83973   IN      NS      nserver3.apple.com.

;; ADDITIONAL SECTION:
nserver4.apple.com.     65778   IN      A       17.112.144.59
nserver.asia.apple.com. 65778   IN      A       203.120.14.5
nserver.euro.apple.com. 65778   IN      A       17.72.133.64
nserver.apple.com.      65778   IN      A       17.254.0.50
nserver2.apple.com.     65778   IN      A       17.254.0.59
nserver3.apple.com.     65778   IN      A       17.112.144.50

;; Query time: 34 msec
;; SERVER: 192.168.0.1#53(192.168.0.1)
;; WHEN: Sun Aug 15 17:15:00 2004
;; MSG SIZE  rcvd: 310