みなさん、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