ネットワークの世界へようこそ!データセンターの片隅で、日々押し寄せるアラートの嵐と格闘しているシニアエンジニアの私です。
インフラの世界に足を踏み入れると、避けて通れないのが「名前解決」のトラブルですよね。「あれ、さっきまで繋がっていたサーバーにアクセスできないぞ?」なんて時に、まず最初にあなたは何を使いますか? そう、DNSトラブルシューティングの絶対王者、digコマンドですね。
黒い画面にずらっと現れる英語の羅列。「なんだか難しそう…」と、そっとウィンドウを閉じたくなる気持ち、痛いほどよく分かります。でも、大丈夫です!今回は、digコマンドの出力結果を構成する4つのセクション(QUESTION、ANSWER、AUTHORITY、ADDITIONAL)について、私たちが普段暮らしている現実世界の「郵便配達」に例えながら、一歩ずつ優しく紐解いていきましょう。
さあ、深呼吸をして、パケットたちの旅に出発です!
—
1. なぜ dig コマンドが必要なのか?
私たちがブラウザに https://example.com と打ち込んだとき、裏側では「このドメイン名に対応するIPアドレスを教えて!」という問い合わせ(DNSクエリ)がインターネットの海を駆け巡っています。
普段私たちが使っているパソコンのOSにも簡易的な名前解決機能は入っていますが、トラブルが起きたとき、OSの裏側で何が起きているのかを正確に教えてくれるのが dig(Domain Information Groper)コマンドです。
まずは、実際に dig コマンドを叩いたときの典型的な出力を見てみましょう。
# example.com のAレコード(IPアドレス)を引いてみる
$ dig example.com A
このコマンドを実行すると、ターミナルにたくさんの文字が流れます。この出力結果、実は綺麗にいくつかの部屋(セクション)に分かれているんです。次の章から、その中身を覗いていきましょう!
—
2. 郵便配達で例えるDNSの4大セクション
dig コマンドの応答メッセージは、大きく分けて以下の4つのセクションで構成されています。
1. QUESTION SECTION(質問セクション)
2. ANSWER SECTION(回答セクション)
3. AUTHORITY SECTION(権威セクション)
4. **ADDITIONAL SECTION*(追加情報セクション)
これを身近な例えで考えてみましょう。あなたは「東京に住む山田さん(IPアドレス)の正確な住所を知りたい」と、総合案内窓口(DNSサーバー)に手紙を出しました。
① QUESTION SECTION(質問セクション):「何を知りたいの?」
このセクションは、「あなたがDNSサーバーに投げかけた質問そのもの」がそのまま返ってきます。
- 現実世界の例: 「山田さんの住所を教えてください」という封筒の宛書き。
- 実際の出力例:
;; QUESTION SECTION:
;example.com. IN A
- 読み方: 「私は
example.comという名前のA(IPv4アドレス)について尋ねましたよ」という確認です。ここが間違っていたら、そもそも欲しい答えは返ってきません。
② ANSWER SECTION(回答セクション):「お探しの答えはこちらです!」
このセクションこそが、私たちが一番知りたい「お目当ての情報(正解)」が書かれている場所です。
- 現実世界の例: 総合案内係が「山田さんのご住所は東京都千代田区…ですね」と教えてくれる瞬間。
- 実際の出力例:
;; ANSWER SECTION:
example.com. 3599 IN A 93.184.216.34
- 読み方:
example.comのIPアドレスは93.184.216.34ですよ、と教えてくれています。その手前にある3599という数字は TTL(Time To Live) と呼ばれ、「この情報はあと約1時間(3600秒)くらいはメモしておいていいよ(キャッシュしていいよ)」という有効期限を表しています。
③ AUTHORITY SECTION(権威セクション):「この領域の本当の責任者は私です」
ちょっと難しく聞こえる名前ですが、ここは「このドメインの管理を正式に任されている本家本元の親分(権威DNSサーバー)は誰か」を指し示す場所です。
- 現実世界の例: 案内係が「この件についてもっと詳しく知りたい場合は、こちらの『山田家戸籍管理事務所』にお問い合わせください」と本家の連絡先を教えてくれるようなものです。
- 実際の出力例:
;; AUTHORITY SECTION:
example.com. 86400 IN NS a.iana-servers.net.
example.com. 86400 IN NS b.iana-servers.net.
- 読み方:
example.comの本当の管理者はa.iana-servers.netやb.iana-servers.netというネームサーバー(NS)ですよ、と教えてくれています。トラブルシューティングの際、「あれ、うちのDNSサーバーはちゃんとした権威サーバーに問い合わせにいけてるかな?」と確認する時にめちゃくちゃ重宝します。
④ ADDITIONAL SECTION(追加情報セクション):「ついでにこの情報も役に立つと思って!」
最後のセクションは、「質問された直接の答えではないけれど、親切心でつけておいたおまけの情報」です。
- 現実世界の例: 案内係が「山田家戸籍管理事務所の場所(IPアドレス)も、ついでに書いておきますね」と、親切にそのサーバーの住所までメモしてくれた状態です。
- 実際の出力例:
;; ADDITIONAL SECTION:
a.iana-servers.net. 86400 IN A 199.43.132.53
...(IPv6アドレスなどが続くことも)
- 読み方: AUTHORITYセクションに出てきたネームサーバーの名前(
a.iana-servers.net)のIPアドレスが、わざわざ調べ直さなくてもいいようにここに記載されています。これにより、次の問い合わせをスムーズに行うことができるのです。
—
3. 現場で役立つ! dig の実用的な使い方と裏技
構造が分かったところで、日々の運用監視やトラブルシューティングで私たちがよく使う実践的なコマンドをいくつかご紹介しますね。
① 逆引き(IPアドレスからドメイン名を探す)をしたいとき
「この怪しいIPアドレス 93.184.216.34 は一体何のドメインだ?」という時は、-x オプションを使います。
# IPアドレスからドメイン名を引く(逆引き)
$ dig -x 93.184.216.34
② 特定のDNSサーバーに直接聞きに行きたいとき
「プロバイダのDNSがおかしいのか、それともドメイン側の設定がおかしいのか切り分けたい!」という時は、GoogleのパブリックDNS(8.8.8.8)などを名指しで指定して問い合わせます。
# GoogleのDNSサーバー(8.8.8.8)を使って強制的に問い合わせる
$ dig @8.8.8.8 example.com A
- ※
@の後ろにDNSサーバーのIPアドレスを書くのがポイントです。現場ではこれを使って「キャッシュサーバーの故障か、権威サーバーの障害か」を瞬時に切り分けます。
③ 余計な出力を省いて、すっきり結果だけを見たいとき
dig コマンドはデフォルトだとヘッダー情報などがたくさん表示されます。「IPアドレスだけサクッと知りたい!」という時は、+short オプションが便利です。
# 余計な装飾を削ぎ落とし、答えのIPアドレスだけを返す
$ dig +short example.com A
# 出力結果例:
# 93.184.216.34
シェルスクリプトや自動化の監視スクリプトを組む時にも、この +short は大活躍します。
—
4. まとめ:パケットの気持ちになって読み解こう
今回は、dig コマンドの出力構造と、4つのセクション(QUESTION、ANSWER、AUTHORITY、ADDITIONAL)について解説しました。
- QUESTION は「質問」
- ANSWER は「答え」
- AUTHORITY は「本家の案内」
- ADDITIONAL は「親切なおまけ」
こうして身近な郵便配達に置き換えてみると、無機質に見えた黒い画面の文字たちが、まるでネットワークの上を一生懸命に駆け回るパケットたちのストーリーのように見えてきませんか?
インフラのトラブルシューティングは、目の前で起きている現象の「パケットの気持ち」を想像することから始まります。次にDNSのトラブルに直面したときは、ぜひ今回の4つのセクションを思い出して、落ち着いて dig の出力を眺めてみてくださいね。
あなたのネットワーク運用ライフが、少しでも快適でワクワクするものになりますように。それではまた、次のデータセンターの現場でお会いしましょう!
コメント