みなさん、こんにちは!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が古いな」「権威サーバーの向き先が違うぞ」と、エラーの尻尾が必ず見えてくるはずです。
それでは、快適なネットワーク運用ライフを!パケットよ、今日も無事に目的地へ届いてくれ!
コメント