DNSのデバックのおともにdigコマンド

DNSサーバーの動作確認をする際のコマンドとして、nslookupとか使って対話的に確認したりすると思うけど、
どうやらUNIX, Linux的に非推奨だということが(今更)分かり、digコマンドをようやく使ってみたメモです。

また、nslooupより高機能らしいので高機能好きの僕には今が覚える好機。(いみふ)

ちなみにwindowsには標準ではいってないので使う方は頑張ってインストールしてください。

まずはシンプルに実行


実行コマンド
1
$ dig google.com
実行結果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[admin@localhost ~]$ dig google.com

; <<>> DiG 9.9.4-RedHat-9.9.4-73.el7_6 <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17627
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;google.com. IN A

;; ANSWER SECTION:
google.com. 299 IN A 216.58.197.142

;; Query time: 54 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: 10 22 17:45:30 JST 2019
;; MSG SIZE rcvd: 55

確かにnslookupより情報量が多い( ゚Д゚)

status 応答コード
NOERROR 正常
REFUSED 拒否
flags 応答コード
qr サーバーからの回答が正常に行われた
rd 再帰的問い合わせを要求
ra サーバが再帰的問い合わせをサポート

※ここでいう再起はプログラミング的な再起処理ではなくて、「再び帰ってくる」という意味でちゃんとした結果を返してくることをサポートしますよ!ということ。

1
2
3
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17627
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

Question

オプションに何も指定せずに実行するとクエリタイプが「a」になるっぽい

1
2
;; QUESTION SECTION:
;google.com. IN A

Answer

Aレコードの内容がきちんと見れました

1
2
;; ANSWER SECTION:
google.com. 299 IN A 216.58.197.142

リソースを指定したい場合


■ ns(ネームサーバー)

実行コマンド

1
$ dig ns google.com

実行結果

Answerセクション部分のみ抜粋

1
2
3
4
5
;; ANSWER SECTION:
google.com. 19288 IN NS ns3.google.com.
google.com. 19288 IN NS ns1.google.com.
google.com. 19288 IN NS ns4.google.com.
google.com. 19288 IN NS ns2.google.com.

■ mx(メール交換情報)

実行コマンド

1
$ dig ms google.com

実行結果

Answerセクション部分のみ抜粋

1
2
;; ANSWER SECTION:
google.com. 234 IN A 172.217.161.46

■ any

実行コマンド

1
$ dig any google.com

実行結果

全部入り的なやつ

Answerセクション部分のみ抜粋

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
;; ANSWER SECTION:
google.com. 299 IN A 216.58.197.142
google.com. 299 IN AAAA 2404:6800:4004:800::200e
google.com. 21599 IN NS ns1.google.com.
google.com. 599 IN MX 30 alt2.aspmx.l.google.com.
google.com. 599 IN MX 10 aspmx.l.google.com.
google.com. 599 IN MX 20 alt1.aspmx.l.google.com.
google.com. 299 IN TXT "docusign=1b0a6754-49b1-4db5-8540-d2c12664b289"
google.com. 21599 IN NS ns2.google.com.
google.com. 599 IN MX 50 alt4.aspmx.l.google.com.
google.com. 21599 IN NS ns3.google.com.
google.com. 599 IN MX 40 alt3.aspmx.l.google.com.
google.com. 3599 IN TXT "globalsign-smime-dv=CDYX+XFHUw2wml6/Gb8+59BsH31KzUr6c1l2BPvqKX8="
google.com. 59 IN SOA ns1.google.com. dns-admin.google.com. 275806207 900 900 1800 60
google.com. 3599 IN TXT "v=spf1 include:_spf.google.com ~all"
google.com. 21599 IN NS ns4.google.com.
google.com. 3599 IN TXT "facebook-domain-verification=22rm551cu4k0ab0bxsw536tlds4h95"
google.com. 21599 IN CAA 0 issue "pki.goog"
google.com. 299 IN TXT "docusign=05958488-4752-4ef2-95eb-aa7ba8a3bd0e"

ネームサーバーを指定する場合

ネームサーバー切り替え前にデバックするときに重宝する

実行コマンド

1
$ dig a google.com 8.8.8.8

必要最低限の情報だけほしい場合

実行コマンド

+shortをつけるだけ!

1
$ dig ns google.com +short

実行結果

大分、目に優しい感じで表示されます

1
2
3
4
ns3.google.com.
ns2.google.com.
ns4.google.com.
ns1.google.com.

Please share