【入門編】 digコマンドの出力セクション構造(QUESTION, ANSWER, AUTHORITY, ADDITIONAL) – トラブルシューティング&ネットワーク運用監視実践ガイド

みなさん、こんにちは!NOC(ネットワークオペレーションセンター)で日々パケットの荒波と格闘しているシニアエンジニアです。

データセンターのフロアでうなるサーバーの冷却音を聞きながら、私たちはいつも「なぜ繋がらないのか?」という謎を解き明かしています。Webサイトが表示されない、メールが届かない……そんなトラブルの裏側で、ほぼ間違いなく最初に犯人探しをされるのが「DNS(ドメインネームシステム)」です。

人間界の「電話帳」であるDNSですが、その名前解決の裏側を覗き見するための強力な相棒が dig コマンドです。

「dig を打つと、なんだか英語の羅列がたくさん返ってきて、どこを見ればいいのか頭が痛くなる……」
そんな風に思っていませんか? 大丈夫です!一歩ずつ、丁寧に紐解いていきましょう。今回は、dig が返してくれるDNS応答メッセージの「4つの部屋(セクション)」について、身近な郵便配達の仕組みに例えながら徹底解説します。

—

1. DNSの応答メッセージは「4つの部屋」でできている

私たちが dig コマンドを実行すると、画面にはたくさんの文字が表示されます。実はあの画面、郵便局に届いた「とある荷物」の伝票のようなもので、綺麗に4つの論理セクション(部屋)に分かれているんです。

まずは、その4つの部屋の名前を覚えてしまいましょう。

1. QUESTION(質問セクション):何を調べてほしいと依頼したか
2. ANSWER(回答セクション):その答え(本命のIPアドレスなど)
3. AUTHORITY(権威セクション):そのドメインを本当は誰が管理しているのか(お墨付き)
4. ADDITIONAL(追加セクション):スムーズに連絡を取るためのオマケ情報

これだけ聞いてもピンとこないですよね。では、私たちが普段使っている「手紙(郵便配達)」に例えてみましょう!

—

2. 郵便配達で例えるDNSの4セクション

あなたが遠くに住むお友達(example.com)の家に手紙を出したいと想像してください。

  • QUESTION(質問)
  • 郵便局の窓口で「example.com のお家はどこですか?」と尋ねるメモ用紙です。「何を調べたいか」がここに書かれます。
  • ANSWER(回答)
  • 窓口の人が調べてくれて、「あそこですよ」と教えてくれた宛先の本命(IPアドレス)が書かれた紙です。私たちが一番知りたい情報はここにあります。
  • AUTHORITY(権威セクション)
  • 「この情報は、隣町の『公式な管理事務所』がちゃんとお墨付きを与えた情報ですよ」という、本物の管理者の連絡先が書かれています。偽情報ではないことの証明ですね。
  • ADDITIONAL(追加)
  • 「あ、そうだ。その管理事務所に行くなら、この近道用の地図(IPアドレス)も一緒に使ってくださいね」という、親切なオマケ情報です。

DNSの世界もこれと全く同じです。サーバーたちは、この4つの部屋に綺麗に情報を詰めて私たちに返してくれているのです。

—

3. 実践! dig コマンドで実際の出力を見てみよう

百聞は一見にしかず。実際にターミナルを開いて(あるいは心の中でイメージして)、dig コマンドを叩いたときの出力を覗いてみましょう。今回は例として example.com を引いてみます。

# example.com のAレコード(IPアドレス)を調べる基本的なコマンド
$ dig example.com A

このコマンドを実行すると、次のような出力が得られます(※分かりやすく一部を抜粋・整形しています)。

; <<>> DiG 9.16.1-Ubuntu <<>> example.com A
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; QUESTION SECTION:
;example.com.			IN	A

;; ANSWER SECTION:
example.com.		86400	IN	A	93.184.216.34

;; ADDITIONAL SECTION:
example.com.		86400	IN	NS	a.iana-servers.net.

おぉ、見慣れない記号や英語が並んでいますね。でも、先ほどお話しした「4つの部屋」の意識を持つだけで、この出力が途端に優しく見えてきますよ。それぞれの部屋を順番に覗いてみましょう!

—

4. 4つの部屋を徹底解剖!トラブルシューティングの視点

① QUESTION SECTION(質問セクション)

> ;example.com. IN A

ここは、「私たちは何を調べたくてこのコマンドを打ったのか」の再確認です。

  • 見方のコツ: クエリ(問い合わせ)の内容がそのままエコーバックされています。ここが自分が調べたいドメインやレコードタイプ(A や MX など)と一致しているか、まずはサラッと確認します。

② ANSWER SECTION(回答セクション)

> example.com. 86400 IN A 93.184.216.34

ここが主役の部屋、ANSWER(答え)です!

  • 見方のコツ: example.com のIPアドレスは 93.184.216.34 ですよ、と教えてくれています。その手前にある 86400 という数字は TTL(Time To Live:生存期間) と呼ばれ、「この情報は86400秒(=24時間)の間は、自分の手元にメモ(キャッシュ)しておいていいですよ」という意味を持っています。
  • トラブルシューティングの知見: 「Webサイトのサーバーを新しいIPに引っ越したのに、古いサイトが表示される!」という障害の多くは、このTTLのせいで古いANSWERがキャッシュされ続けていることが原因です。

③ AUTHORITY AUTHORITY SECTION(権威セクション)

今回のサンプルでは省略されていますが、通常は次のような形(あるいはもっと上位のネームサーバー情報)が出てきます。

> example.com. 172800 IN NS ns.icann.org.

  • 見方のコツ: 「このドメインの本当の親(権威DNSサーバー)はこいつらだよ」という情報です。
  • トラブルシューティングの知見: 「レコードがどうしても反映されない」「意図しない名前解決結果になる」というとき、この権威セクションを見て「おや、自分が意図しているネームサーバー(DNSの親)とは違うところを尋ねているぞ?」という原因特定に繋がります。

④ ADDITIONAL SECTION(追加セクション)

> example.com. 86400 IN NS a.iana-servers.net.

  • 見方のコツ: AUTHORITYセクションで出てきた「親(ネームサーバー)」の名前(ホスト名)だけだと、コンピュータは「じゃあその親のIPアドレスはどこ?」と再び探しにいかなくてはなりません。それを二度手間にならないように、「親のIPアドレスはこれだよ!」と最初からオマケで教えてくれているのがこの部屋です。
  • エンジニアの裏技: ネットワークの効率化や、DNSのループ・グルーレコードの不整合を追うときに、この追加セクションが大きなヒントになります。

—

5. 現場で役立つ!トラブルシューティングの実践テクニック

NOCの現場で「名前解決ができない!」というアラートが上がったとき、私たちはやみくもに設定ファイルを書き換えたりはしません。dig を使って、DNSのどの段階で迷子になっているかをロジカルに切り分けます。

例えば、特定のネームサーバーに直接問い合わせて、想定通りの答えが返ってくるかをテストしたいときは、@マークを使います。

# 8.8.8.8(GoogleのパブリックDNS)に直接、example.comの問い合わせを投げる
$ dig @8.8.8.8 example.com A

もし、自社の内部DNSサーバーに聞いたときは変な答えが返ってくるのに、GoogleのDNS(@8.8.8.8)に聞くと正しいANSWERが返ってくる場合、「あ、自社DNSのキャッシュが汚れているな」「フォワーダーの設定がおかしいな」と、一発で原因の当たりをつけることができます。

さらに、トレース(経路)を追いたいときは traceroute ならぬ、DNSの足取りを追う dig +trace という非常に強力なオプションもあります。

# 根っこのルートサーバーから、目的のドメインにたどり着くまでの全行程を覗き見する
$ dig +trace example.com

このコマンドを実行すると、世界中のどこを経由してその情報にたどり着いたのか、DNSの旅の全貌がありありと出力されます。トラブルシューティングの際にはぜひ試してみてください、「おぉ、こうやって名前を引いているのか!」と感動すること間違いなしです。

—

まとめ:DNSトラブルは「4つの部屋」のどこに問題があるかを見極めよう

今回は、dig コマンドの出力にある4つのセクション(QUESTION、ANSWER、AUTHORITY、ADDITIONAL)について、郵便配達の例えを交えながら解説しました。

  • QUESTION: 何を聞いたか
  • ANSWER: 何が返ってきたか(本命)
  • AUTHORITY: 誰がそれを保証しているか
  • ADDITIONAL: スムーズにやり取りするためのオマケ

インフラやネットワークの世界は、一見すると複雑な暗号のように見えますが、一つひとつの部品が「現実世界のどのような仕組みを模しているか」を紐解いていくと、驚くほどシンプルで論理的な構造をしています。

次にDNSのトラブルに直面したときは、慌てずにターミナルを開いて dig を打ち、4つの部屋を覗いてみてください。「あ、ANSWERが古いな」「権威サーバーの向き先が違うぞ」と、エラーの尻尾が必ず見えてくるはずです。

それでは、快適なネットワーク運用ライフを!パケットよ、今日も無事に目的地へ届いてくれ!

コメント

タイトルとURLをコピーしました