概要
大先輩のインフラエンジニアさんに教えてもらってdigコマンドを初めて使ったので簡単にまとめておく。
※「初めて」とか言ってるけど下記の記事を書いたときに実行してた。
何をするコマンド?
ドメインを引数に実行することでそのドメインのDNSサーバーから情報を取得する事ができるコマンドである。
例
基本の場合
下記のように実行する
dig 情報を得たいドメイン
上記を実行するとそのドメインを管理しているDNSが持っている公開できる情報すべてが返ってくる。例えば dig qiita.com
などを実行すると「qiita.com」のドメインがルーティングされているIPアドレスを知ることができる。※DNS情報は公開されているので閲覧そのものは問題ない
試しに自分で保有しているドメインでdigコマンドを実行してみた。
dig miriwo.work
上記を実行すると下記のような出力が得られる。
; <<>> DiG 9.10.6 <<>> miriwo.work
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2912
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;miriwo.work. IN A
;; AUTHORITY SECTION:
miriwo.work. 129 IN SOA 01.dnsv.jp. hostmaster.dnsv.jp. 1707489657 3600 900 604800 300
;; Query time: 20 msec
;; SERVER: 2408:211:1580:ee00:5a52:8aff:fe63:9565#53(2408:211:1580:ee00:5a52:8aff:fe63:9565)
;; WHEN: Fri Feb 09 23:50:12 JST 2024
;; MSG SIZE rcvd: 97
個々のレスポンスフィールドに分けて解説する。
ヘッダーセクション
下記部分についてまとめる。
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2912
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
この部分はヘッダーセクションと呼ばれる。
- opcode: QUERY
- 問い合わせが標準的な食えるであることを示す。
- status: NOERROR,
- 問題なく問い合わせが成功したことを示す。(エラーは無し)
- id: 2912
- 問い合わせID(一意)
- flags: qr rd ra;
- qrが応答メッセージであることを示す。
- rdが再帰的な問い合わせをしたことを示す。
- raが当該DNSサーバーが再帰的な問い合わせに対応しているかを示す。
ここから先は次のセクションで返されている情報の概要をまとめている。
- QUERY: 1,
- 1つのクエリが実行されたことを示す。
- ANSWER: 0,
- 応答が0件であることを示す。(Aレコードが未設定の場合0になるはず)
- AUTHORITY: 1,
- ドメインのDNS設定の基本情報が1件返されたことを示す。
- ADDITIONAL: 1
- 付加情報が1件返されたことを示す。
OPT PSEUDOSECTION
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
これはEDNSのオプションや機能に関する情報を含んでいるらしい。
QUESTION SECTION
;; QUESTION SECTION:
;miriwo.work. IN A
自分が問い合わせた内容(実際に実行されたクエリ)の情報が出ている。
AUTHORITY SECTION
;; AUTHORITY SECTION:
miriwo.work. 129 IN SOA
これは当該ドメインを管理しているDNSサーバーの情報が返される。
レコードタイプを指定して取得する場合
下記のようにドメイン指定のあとにレコードタイプ(AとかNSとかCNAMEとか)を指定することで、そのレコードの情報だけを取得することができる。
dig 情報を得たいドメイン レコードタイプ
IPからのドメイン逆引きする場合
IPを指定してドメインを逆引きすることもできるらしい。
dig -x IPアドレス
利用事例
筆者の場合、AWS SESの認証済みIDにてドメインを登録したときに吐き出されるDKIM用のCNAMEレコード追加が正しく行われているかを確認するために使用した。
下記を実行し、SESで吐き出された情報が正常にDNSに登録できているか確認した。
dig SESで吐き出されたDNSの「名前」 CNAME
結果が下記のように表示され「ANSWER SECTION」で返された値が、SESで吐き出されたDNSの「値」と一致していれば問題なく設定ができている。
関連記事