特定のドメインのIPアドレスやDNSの情報を調べたいときに「dig」や「nslookup」といったコマンドを使用することができます。
ここでは「dig」や「nslookup」の使い方や表示内容が示す意味についてまとめています。
digコマンドとは何か?
digコマンドとは指定したIPアドレスやDNS、応答時間などの情報を取得できるコマンドです。
使い方は以下のようになります。
$ dig [@DNSサーバー] ドメイン名 [オプション]
なお、digはdomain information groperの略です。
英語辞書でgroperの意味を調べると「痴漢」。つまり、他人のドメイン情報をまさぐるコマンドということです。
(digは英語で掘るという意味なので、指定したドメインを深掘ることだと思っていました、、)
digコマンドでわかること
コマンド実行後の回答は情報がセクション毎に別れて返ってきます。
ドメインに対するIPアドレスは、ANSWER SECTIONに記載されています。
(1) ANSWER SECTION
問合せたドメインに対する回答。
IPアドレス、TTL、レコードのクラスとタイプがわかる。
(2) AUTHORITY SECTION
権威DNSサーバーの情報。
問い合わせたドメイン名のDNSサーバー一覧を表示する。
(3) ADDITIONAL SECTION
権威DNSサーバーの情報を表示する。
IPアドレス、TTL、レコードのクラスとタイプがわかる。
(4) 問合せ情報の詳細
・問合せから回答までにかかった時間
・問い合わせに使用したDNSサーバー
DNSサーバーとは何か?
WEBページを開くと上部にURLが表示されます。
例えば、このサイトであれば「https://prograshi.com/」が先頭にきて、その配下に各ページの階層のパスがきます。
ただし、インターネット上では「prograshi.com」というドメイン名ではなくIPアドレスを使って、各アドレスの所在地を割り当てています。
「prograshi.com」はドメインネーム、通称DNと呼ばれるものです。このDNとIPアドレスを対応させているサーバーをDNSサーバーと呼びます。
ドメイン名の問合せをすると、まずキャッシュDNSサーバーに行きここで情報があれば回答がきます。
ない場合は、ルートDNSサーバーに問合せ、そこで教えらるのが直下の権威DNSサーバーとなります。
図の例では、.jp -> .co.jp -> www.example.co.jpのように、各対応表を持つ3つの権威サーバーを経由しています。
権威DNSサーバーとは?
世の中にはIPアドレスとDNがたくさんあるため、1つのDNSサーバーではなく、DNSサーバーが複数に分かれています。
権威DNSサーバーとは、各DNSサーバーの中で指定したIPアドレスとドメイン名を定義(所有)しているサーバーのことです。
digコマンドの実行結果
例えば、qiitaのIPアドレス情報は以下になります。$ dig qiita.com
; <<>> DiG 9.10.6 <<>> qiita.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29878
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 4, ADDITIONAL: 4
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;qiita.com. IN A
;; ANSWER SECTION:
qiita.com. 16 IN A 52.194.6.194
qiita.com. 16 IN A 13.114.11.230
qiita.com. 16 IN A 13.112.43.51
;; AUTHORITY SECTION:
qiita.com. 171893 IN NS ns-772.awsdns-32.net.
qiita.com. 171893 IN NS ns-171.awsdns-21.com.
qiita.com. 171893 IN NS ns-1049.awsdns-03.org.
qiita.com. 171893 IN NS ns-1956.awsdns-52.co.uk.
;; ADDITIONAL SECTION:
ns-171.awsdns-21.com. 139723 IN A 205.251.192.171
ns-772.awsdns-32.net. 20264 IN A 205.251.195.4
ns-1049.awsdns-03.org. 65809 IN A 205.251.196.25
;; Query time: 18 msec
;; SERVER: 2400:2412:6a60:bb00:1111:1111:1111:1111#53(2400:2412:6a60:bb00:1111:1111:1111:1111)
;; WHEN: Thu Sep 10 15:46:27 JST 2020
;; MSG SIZE rcvd: 271
Qiitaの場合、IPアドレスは52.194.6.194, 13.114.11.230, 13.112.43.51の3種類。
権威DNSの情報を見るとAWSが使われていることがわかります。
AWSの場合、入力されたドメインが一致した場合にSSL/TLSハンドシェイクが成立し、ページが開く仕様のため、IPアドレス(52.194.6.19)でページを開こうとすると502 BadGatewayと表示されてしまいます。
問合せ結果の見方
上記の例で、digコマンドの実行結果から得られた情報は大きく以下の3つに分けることができます。
ドメイン/DNS名 | TTL[s] | レコードクラス | レコードタイプ | IPアドレス |
---|---|---|---|---|
qiita.com. | 16 | IN | A | 52.194.6.194 |
qiita.com. | 171893 | IN | NS | ns-772.awsdns-32.net. |
ns-772.awsdns-32.net. | 20264 | IN | A | 205.251.195.4 |
TTL
TTLはTime To Live(生きている時間)。
DNSの場合、DNSサーバーのキャッシュの有効生存時間のこと。
権威DNSサーバーは毎回問合せを受けているわけではなく、応答時間を早めたり、負荷分散のために、前にキャッシュDNSサーバーがある。ここでのデータの保持時間。
WEBサーバー
↑↓
PC
↑↓
キャッシュDNSサーバー
↑↓
権威DNSサーバー
レコードとは?
権威DNSサーバーが所持しているIPアドレスとドメインの対応表(ゾーンファイル)の行のこと。
レコードにはクラスとタイプ(種類)が記述されている。
例えば、IPアドレスとドメインの対応はレコードクラスINのAレコードに記述されている。
レコードクラス
基本的にINのみ。INはInternetの略。
レコードタイプ
実例ではAレコードと、NSレコードがあります。
主要なレコードの内容は以下のようになっています。
タイプ | 概要 | 備考 |
---|---|---|
Aレコード | ドメイン名とIPアドレス(ipv4形式)の対応表 | Aはadressの略 |
AAAAレコード | ドメイン名とIPアドレス(ipv6形式)の対応表 | ipv6が4桁区切りなのでAが4つ |
NSレコード | ドメイン名と権威サーバーの対応表 | 権威サーバーとは、DNSの管理を委託されているサーバー |
MXレコード | ドメイン名とメールサーバーの対応表 | Mail Exxhangeの略。対象ドメイン宛てのメール配信先サーバーを定義。 |
TXTレコード | コメント | ドメイン名に関連する情報が記載された行 |
CNAMEレコード | ニックネーム | ドメイン名の別名を定義。Canonical NAMEの略。 |
他にもDSやCAAレコードなどがある。
コマンドオプション
逆引き(-x)
dig -x IPアドレス
IPアドレスからDNSの情報を問い合わせることができる。
権威DNSの情報がわかるのであって、ドメイン名がわかるわけではない。
$ dig -x 13.112.43.51
; <<>> DiG 9.10.6 <<>> -x 13.112.43.51
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48107
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 5, ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;51.43.112.13.in-addr.arpa. IN PTR
;; ANSWER SECTION:
51.43.112.13.in-addr.arpa. 300 IN PTR ec2-13-112-43-51.ap-northeast-1.compute.amazonaws.com.
;; AUTHORITY SECTION:
112.13.in-addr.arpa. 8034 IN NS x2.amazonaws.com.
112.13.in-addr.arpa. 8034 IN NS x1.amazonaws.com.
112.13.in-addr.arpa. 8034 IN NS pdns1.ultradns.net.
112.13.in-addr.arpa. 8034 IN NS x4.amazonaws.org.
112.13.in-addr.arpa. 8034 IN NS x3.amazonaws.org.
;; ADDITIONAL SECTION:
pdns1.ultradns.net. 3409 IN AAAA 2001:502:f3ff::1
pdns1.ultradns.net. 3409 IN A 204.74.108.1
;; Query time: 18 msec
;; SERVER: 2400:2412:6a60:bb00:1111:1111:1111:1111#53(2400:2412:6a60:bb00:1111:1111:1111:1111)
;; WHEN: Thu Sep 10 17:05:23 JST 2020
;; MSG SIZE rcvd: 278
IPアドレスのみ表示(+short)
$ dig ドメイン +short
シンプルにIPアドレスだけを返します。
$ dig qiita.com +short
52.194.6.194
13.114.11.230
13.112.43.51
問い合わせ先のDNSサーバーを指定(@ DNSサーバー)
$ dig @DNSサーバー ドメイン
$ dig @8.8.8.8 qiita.com
省略
;; Query time: 15 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Thu Sep 10 17:19:06 JST 2020
;; MSG SIZE rcvd: 86
問合せ先DNSのSERVERが8.8.8.8になっています。
ちなみに、8.8.8.8はGoogle Public DNSが運営するDNSサーバのIPアドレスです。
問い合わせるipvを指定(-4, -6)
$ dig ドメイン -4
: ipv4で問合せ$ dig ドメイン -6
: ipv6で問合せ
dig qiita.comを実行するとデフォルトでipv6で問い合わせているが、「-4」を使うと、IPv4で問合せられる。
-6 での問い合わせ結果
;; Query time: 22 msec
;; SERVER: 2400:2412:6a60:bb00:1111:1111:1111:1111#53(2400:2412:6a60:bb00:1111:1111:1111:1111)
;; WHEN: Thu Sep 10 17:22:52 JST 2020
;; MSG SIZE rcvd: 271
-4 での問い合わせ結果
;; Query time: 18 msec
;; SERVER: 192.168.3.1#53(192.168.3.1)
;; WHEN: Thu Sep 10 17:23:21 JST 2020
;; MSG SIZE rcvd: 271
nslookup
digと似たコマンドに「nslookup」というコマンドがあります。
digで取得できる情報をシンプルにしたもので、問い合わせ先DNS、ドメインに対応するIPアドレスのみを返します。
nsはname serverの略で、DNSサーバーが起動正しく起動しているか確認するために開発されたコマンドです。
$ nslookup ドメイン名
nslookupの実行例
$ nslookup qiita.com
Server: 2400:2412:6a60:bb00:1111:1111:1111:1111
Address: 2400:2412:6a60:bb00:1111:1111:1111:1111#53
Non-authoritative answer:
Name: qiita.com
Address: 13.114.11.230
Name: qiita.com
Address: 52.194.6.194
Name: qiita.com
Address: 13.112.43.51
問合せ先DNSサーバーの指定
digと同じく問い合わせるDNSサーバーを指定することもできます。
$ nslookup ドメイン名 DNSサーバーのIPアドレス
$ nslookup qiita.com 8.8.8.8
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: qiita.com
Address: 13.112.43.51
Name: qiita.com
Address: 13.114.11.230
Name: qiita.com
Address: 52.194.6.194