【Linux】digコマンドについて
はじめに
サーバーの名前解決に関する情報を調べる機会があり、その際に dig コマンドを使用しました。さまざまなDNS情報を確認できることを知ったので、記録としてまとめておきます。
digコマンドについて
dig コマンドは、ネームサーバに対してDNSの問い合わせを行い、その応答結果を表示するためのツールです。特定のタイプのDNSレコード(A、AAAA、MX、NS、CNAMEなど)を指定して問い合わせることも可能です。
Aレコードの問い合わせ
dig コマンドの出力は一見すると複雑に見えますが、セクションごとに分かれており、構造を理解することで徐々に読み解けるようになりました。
今回は試しに、ヤフーのホームページ(yahoo.co.jp)を対象に、dig コマンドを使って調べてみます。
オプションなしで dig yahoo.co.jp を実行すると、yahoo.co.jp に対する Aレコード(IPv4アドレス) の情報が返されます。
root@fedora:~# dig yahoo.co.jp
; <<>> DiG 9.18.36 <<>> yahoo.co.jp
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29086
;; flags: qr rd ra; QUERY: 1, ANSWER: 18, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;yahoo.co.jp. IN A
;; ANSWER SECTION:
yahoo.co.jp. 24 IN A 183.79.250.251
yahoo.co.jp. 24 IN A 182.22.31.252
yahoo.co.jp. 24 IN A 182.22.25.124
yahoo.co.jp. 24 IN A 182.22.24.252
yahoo.co.jp. 24 IN A 183.79.249.252
yahoo.co.jp. 24 IN A 124.83.185.252
yahoo.co.jp. 24 IN A 182.22.16.251
yahoo.co.jp. 24 IN A 124.83.184.252
yahoo.co.jp. 24 IN A 183.79.219.124
yahoo.co.jp. 24 IN A 182.22.16.123
yahoo.co.jp. 24 IN A 182.22.31.124
yahoo.co.jp. 24 IN A 124.83.185.124
yahoo.co.jp. 24 IN A 183.79.249.124
yahoo.co.jp. 24 IN A 183.79.219.252
yahoo.co.jp. 24 IN A 182.22.24.124
yahoo.co.jp. 24 IN A 182.22.25.252
yahoo.co.jp. 24 IN A 124.83.184.124
yahoo.co.jp. 24 IN A 182.22.28.252
;; Query time: 19 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Sat Jul 19 14:56:01 JST 2025
;; MSG SIZE rcvd: 328
HEADER セクション
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29086
;; flags: qr rd ra; QUERY: 1, ANSWER: 18, AUTHORITY: 0, ADDITIONAL: 1
- opcpode: QUERY
→通常のDNS問い合わせであることを示しています。 - status: NOERROR
→エラーがなく正常に応答されたことを示しています。 - id: 29086
→この問い合わせに付けられた識別番号 - flags:
- qr → 応答(query response)であること
- rd → 再帰的な検索を要求したこと(recursion desired)
- ra → 再帰的な検索に対応していること(recursion available)
- QUERY: 1
→問い合わせ数 - ANSWER: 18
→回答数(今回はAレコードの数) - AUTHORITY: 0
→権威サーバー情報は0 - ADDITIONAL: 1
→追加情報が1件(今回はOPTセクション)
OPT PSEUDOセクション
これは拡張DNSに関する情報です。通常のDNSでは制限されていた機能を拡張するためのメタ情報を含んでいます。
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
- EDNS: version: 0
→現在使用している拡張DNSのバージョン(0が一般的らしい) - flags:; udp: 65494
→使用可能な最大UDPパケットサイズ(応答が大きくなっても対応可能)
QUESTION セクション
どのドメインに、どの種類のレコードを問い合わせたかが表示されます。
;; QUESTION SECTION:
;yahoo.co.jp. IN A
- yahoo.co.jp. → 問い合わせ対象のドメイン
- IN → インターネットクラス
- A → Aレコード(IPv4アドレス)を問い合わせたことを示します
ANSWER セクション
問い合わせに対する回答がこのセクションに表示されます。
;; ANSWER SECTION:
yahoo.co.jp. 24 IN A 183.79.250.251
yahoo.co.jp. 24 IN A 182.22.31.252
yahoo.co.jp. 24 IN A 182.22.25.124
yahoo.co.jp. 24 IN A 182.22.24.252
yahoo.co.jp. 24 IN A 183.79.249.252
yahoo.co.jp. 24 IN A 124.83.185.252
yahoo.co.jp. 24 IN A 182.22.16.251
yahoo.co.jp. 24 IN A 124.83.184.252
yahoo.co.jp. 24 IN A 183.79.219.124
yahoo.co.jp. 24 IN A 182.22.16.123
yahoo.co.jp. 24 IN A 182.22.31.124
yahoo.co.jp. 24 IN A 124.83.185.124
yahoo.co.jp. 24 IN A 183.79.249.124
yahoo.co.jp. 24 IN A 183.79.219.252
yahoo.co.jp. 24 IN A 182.22.24.124
yahoo.co.jp. 24 IN A 182.22.25.252
yahoo.co.jp. 24 IN A 124.83.184.124
yahoo.co.jp. 24 IN A 182.22.28.252
- 24 → TTL(Time To Live)で、DNSキャッシュに保存される秒数(この場合は24秒)
- A → IPv4アドレスであること
- 実際のIPアドレスが表示される
つまり、つまり、Yahoo! JAPANのような大規模サービスでは、複数のIPを使って負荷分散や**障害対策(冗長構成)**がなされている事がわかります。
NSレコードの問い合わせ
続いて、yahoo.co.jpに対してNSレコードを調べてみようと思います。nsオプションを使用する事で、yahoo.co.jpが使用しているDNSサーバーの情報を調べる事ができます。
root@fedora:~# dig ns yahoo.co.jp
; <<>> DiG 9.18.36 <<>> ns yahoo.co.jp
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29262
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;yahoo.co.jp. IN NS
;; ANSWER SECTION:
yahoo.co.jp. 656 IN NS ns02.yahoo.co.jp.
yahoo.co.jp. 656 IN NS ns12.yahoo.co.jp.
yahoo.co.jp. 656 IN NS ns01.yahoo.co.jp.
yahoo.co.jp. 656 IN NS ns11.yahoo.co.jp.
;; Query time: 29 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Sat Jul 19 15:23:37 JST 2025
;; MSG SIZE rcvd: 116
ANSWER セクション
問い合わせたNSレコードに関する情報が表示されます。つまり yahoo.co.jp というドメインの名前解決を担当している権威DNSサーバが表示されます。
;; ANSWER SECTION:
yahoo.co.jp. 656 IN NS ns02.yahoo.co.jp.
yahoo.co.jp. 656 IN NS ns12.yahoo.co.jp.
yahoo.co.jp. 656 IN NS ns01.yahoo.co.jp.
yahoo.co.jp. 656 IN NS ns11.yahoo.co.jp.
656 → TTL(Time To Live)。この情報がDNSキャッシュにどれくらい保持されるか(単位:秒)
IN → インターネットクラス
NS → ネームサーバのレコードであること
ns01.yahoo.co.jp. など → 実際の権威DNSサーバ名
さいごに
digコマンドを使って調べていくことで、インターネット上のドメインがどのようにIPアドレスに変換されているのか、その仕組みを実際のデータを見ながら学ぶことができました。
digコマンドでDNS情報を辿っていくことでインターネットの裏側への理解がより深まると感じました。
Discussion