「名前解決がうまくいかない…」そんな夜に。digコマンドでDNSの裏側を覗き見よう
夜中の3時、アラートの音で飛び起きる。監視画面には「Webサイトにアクセスできません」の文字。ブラウザを叩いても、真っ白な画面が虚しく表示されるだけ。「またDNSか?」と溜息をつきつつ、ターミナルを開く。
ネットワークの世界で、DNSは「電話帳」だとよく言われます。でも、現場にいる僕らにとって、DNSはもっと生々しい「郵便局の仕分けシステム」のようなもの。今日は、そんなDNSの迷宮で迷子にならないための最強の武器、digコマンドについてお話しします。
—
DNSは「住所へのリレーマラソン」
私たちがブラウザで example.com と打ち込むとき、裏側では膨大なやり取りが行われています。
1. 「 example.com の住所を教えて!」(あなたのPC)
2. 「うーん、知らないからあそこの大きい郵便局に聞いてみて」(ローカルDNSサーバ)
3. 「じゃあそっちへ…」(次々とリレー)
普段は意識しませんが、このやり取りが途中で止まると、Webサイトは表示されません。そんなとき、DNSがどこで詰まっているのかを突き止めるのが、今回紹介する dig です。
—
+traceオプション:迷路を最初から歩き直す
皆さんが普段使う dig example.com は、いわば「一番近い郵便局に聞く」という行為です。でも、その郵便局自体が間違った情報を覚えていたら?
そんなときこそ、+trace オプションの出番です。これを付けると、世界に13個しかない「ルートDNSサーバ」という、いわば世界の郵便局の頂点から、順番に「道順」を追いかけてくれます。
# ルートサーバから順に、目的地までの道のりを全て追跡する
dig +trace example.com
これを実行すると、膨大なログが出てきます。最初はびっくりするかもしれませんが、見方は簡単です。
NSと書かれている行: 「次の宛先はこの郵便局(サーバ)だよ」と教えてくれている場所です。Aと書かれている行: 「ここが最終目的地(IPアドレス)だよ!」という答えです。
+trace を使うことで、「世界中の誰が、どこで間違った道を教えたのか」を、一歩ずつ辿りながら特定できるんです。
—
よく使う「魔法の呪文」たち
実務では、+trace 以外にもいくつかのオプションを組み合わせて使います。現場でよく使うものをいくつか紹介しますね。
1. 特定のDNSサーバを直撃する
「ISPのDNSは怪しいな」と思ったら、GoogleのパブリックDNS(8.8.8.8)やCloudflare(1.1.1.1)に直接聞きに行きましょう。
# @マークの後にサーバを指定することで、特定の場所から回答を得られます
dig @8.8.8.8 example.com
2. 「短い」回答だけが欲しいとき
ログが多すぎて見づらいときは、+short オプションを付けます。
# IPアドレスだけをシンプルに抽出します
dig +short example.com
# 結果:93.184.216.34
3. MXレコード(メール配送先)を調べる
メールが届かない!というトラブルの時は、メールの配送先である MX レコードを調べます。
# mail exchange(配送先)の情報を問い合わせる
dig example.com MX
—
トラブルシューティングの極意:まずは「どこで止まっているか」
現場で障害対応をするとき、一番やってはいけないのは「勘」で設定をいじることです。
1. まず dig +trace で、どこの階層までたどり着いているか確認する
2. 特定のDNSサーバ(@8.8.8.8など)なら解決できるのか比較する
3. もし特定のサーバでだけ解決できないなら、そのサーバのキャッシュが汚れている可能性がある
このように、一つずつ「事実」を積み上げていくのが、百戦錬磨のエンジニアへの第一歩です。
—
最後に:恐れることはありません
DNSは複雑そうに見えますが、やっていることは「誰に聞けばいいか」を順番に探しているだけです。dig は、その探偵のような役割を果たしてくれる、私たちエンジニアの親友です。
もし今度、ネットワークが繋がらなくなったら、焦らずに dig +trace を叩いてみてください。画面に流れるパケットの行進が、きっとあなたのヒントになるはずです。
それでは、次回のトラブルシューティングでお会いしましょう。現場からは以上です!
コメント