dig とは?DNS情報を調べるコマンドの基本と使い方をわかりやすく解説

DevOps

はじめに

皆さんはドメイン名を入力すると、どのようにして目的のサーバーへ接続できるのか疑問に思ったことはないでしょうか。 実はドメイン名とIPアドレスを結びつける仕組みを DNS (Domain Name System)と呼びます。 DNSに何か問題があると、ウェブサイトにアクセスできなくなったり、メールを受信できなくなったりすることがあります。 こういったトラブルの原因を調べる際に使われるコマンドとして、digが挙げられます。 ここでは、digがどんな働きをするのか、基本的な使用方法をはじめとして、具体的にどのような場面で活用されるのかを解説します。

dig とは

digはDNSに関する問い合わせを行うコマンドラインツールです。 LinuxやmacOSなどで標準的に利用できますが、Windowsでもインストールすれば使える場合があります。 DNSサーバーに対して直接問い合わせるので、名前解決が期待どおり動いているかを細かく確認することが可能です。 「どのIPアドレスが返ってくるか」「DNSのレコード設定が想定どおりか」といった情報を得る際には重宝します。

DNSの仕組みをざっくり理解

ドメインとIPアドレスを結びつける仕組みがDNSなのは先ほど触れましたが、その過程では階層的に複数のDNSサーバーをたどることになります。 たとえば、あるドメインについて調べたい場合、ルートDNSからトップレベルドメイン(TLD)のDNS、さらに各サブドメインのDNSを参照しながら最終的な応答を返します。 digはこのやりとりをユーザーの手元で直接確認できる手段を提供してくれます。

nslookupとの違い

DNSを調べるコマンドとしては、nslookupという名前も聞いたことがあるかもしれません。 nslookupとdigは似ていますが、digのほうがより詳細な情報を表示できるのが特徴です。 出力される形式も見やすく、専門家やエンジニアが深いトラブルシュートを行う際にはdigのほうが好まれることが多いです。

dig の基本的な構文

digの基本的な使い方はとてもシンプルです。 最も簡単な例としては、目的のドメインを指定するだけでDNSの情報を取得できます。

dig example.com

このように打ち込むと、DNSサーバーへの問い合わせ結果が表示されます。 特に注目すべきはANSWER SECTIONと呼ばれる部分です。 そこにはAレコードなど、問い合わせたレコードの結果が返ってきます。

レコードタイプの指定

digではDNSレコードの種類を指定することができます。 Aレコード(IPv4アドレスに対応するレコード)だけを調べたいときは、以下のように書きます。

dig example.com A

また、AAAAレコード(IPv6アドレス用)やMXレコード(メール用)、CNAMEレコードなども同様に指定可能です。 これにより、特定のレコードだけを集中的に調べられるので便利ですね。

追加オプション

digには多くのオプションが用意されています。 たとえば出力情報を最小限に絞りたい場合は、+shortを付けます。 また、逆に余分な情報を省きつつ重要部分のみを表示したいときには、+noall +answerのような組み合わせもよく使われます。

dig example.com A +noall +answer

このコマンドでは、余計な情報を省いてANSWER SECTIONだけを表示するので、トラブルシュート時に結果を素早く確認したいときに便利です。

実務での活用シーン

企業のWebサイトや社内システムが正常にアクセスできない場合、DNS設定の不備が原因になることがあります。 その際、digを使ってどのレコードに問題があるのかを見極めるのが一般的な方法です。 社内ネットワークのDNSキャッシュが古くなっていたり、外部DNSに誤った情報が登録されていたりする場合にもdigで確認できます。

ホスティング移行やドメイン移管

Webホスティングを別のサービスに切り替える場合や、ドメインを別のレジストラに移管する場合、DNSレコードが一時的に混乱することがあります。 このタイミングでdigを活用し、どのDNSサーバーがどのような情報を返しているのかを逐一確認するのはとても重要です。 「新しいレコードに切り替わったつもりでも、実際にはまだ古い情報を返している」といったズレが生じることも珍しくありません。

テスト環境でのDNS設定

大規模なシステム開発では、テスト用に別のDNSを立てたり、hostsファイルを編集したりして仮想のサブドメインを運用する場合があります。 こうした状況でもdigを使うと、実際にどのIPに名前解決されているかをすぐに確かめられます。 予期しない接続先にトラフィックが流れているような事態を未然に防ぐ意味でも、digの活用は欠かせません。

トラブルシューティングでの使用例

ある日、Webサイトにアクセスできなくなったとしましょう。 まずはネットワーク状況やサーバーの稼働状況をチェックしますが、DNS設定に問題があるかもしれません。 そのときにdigを使えば、どのDNSサーバーがどんな応答を返しているのかを調査できます。

応答がない場合

digコマンドを打っても、ANSWER SECTIONがまったく返ってこない場合は、DNSサーバーが応答を返せていない可能性があります。 再帰的な問い合わせがうまくいっていないのか、あるいは指定したDNSサーバーがダウンしているのかを切り分ける必要があります。 このようなトラブルを踏まえると、複数のDNSサーバーを指定して結果を比較することが大切だとわかります。

期待と違うIPが返ってくる場合

digを実行すると、予想外のIPアドレスがANSWER SECTIONに表示されることもあります。 例えば、古いキャッシュが反映されていたり、CNAMEレコードの設定が別のホストに向いてしまっている場合が考えられます。 こうしたときは対象のDNSサーバーをあえて指定してdigを行い、どのサーバーが間違った情報を保持しているのかを突き止めるわけです。

dig @8.8.8.8 example.com A

上記のように、@8.8.8.8を付けることでGoogle Public DNSを直接問合せ先として指定できます。

結果の見方

digの出力は初めて見る方にとって、少し情報量が多く感じられるかもしれません。 しかし、最も大事なのはANSWER SECTIONで、そこにレコードの種類やTTL、返ってきたIPアドレスなどが記載されます。 また、AUTHORITY SECTIONやADDITIONAL SECTIONも、DNS運用の場面では役立ちます。

ANSWER SECTION

ANSWER SECTIONには、問い合わせたレコードタイプごとの情報が一覧表示されます。 例えばAレコードを問い合わせたなら、IPv4アドレスが表示されます。 複数のIPアドレスを持つマルチホスト構成であれば、複数行にわたってIPアドレスが出力されることもあります。

AUTHORITY SECTION

AUTHORITY SECTIONには、そのゾーンを管理している権威DNSサーバーの情報が表示されます。 自前でDNSを運用しているケースでは、設定ミスを追跡する手がかりにもなります。 ゾーンの管理権限がどのDNSサーバーにあるのかを把握するうえでも確認しておきたい項目です。

dig と他のDNSツールの比較

DNSの動きを確認するツールとしては、digの他にnslookuphostなども存在します。 nslookupは昔からあるツールですが、出力のフォーマットがやや簡素であり、トラブルシュートにはdigのほうが向いていると感じる人も多いです。 一方、hostコマンドは名前解決の結果のみを表示する用途に特化していて、詳細な調査をする場合には情報が不足することがあります。

digを選ぶ理由

digを使う最大の理由は、やはり詳細な情報が得られる点です。 ANSWER SECTIONだけではなく、どのDNSサーバーがどんな形で応答したのかを併せて見られます。 自動化スクリプトや監視ツールにも組み込みやすいので、システム管理者や開発者にとっては頼りになる存在です。

DNS関連のトラブルは原因を特定しにくいケースが多いです。 digを使うことで、具体的にどの段階で問題が起きているかを可視化できます。

dig の具体的な活用ポイント

digを使いこなすには、単にコマンドを打つだけでなく、さまざまなオプションを柔軟に組み合わせることが重要です。 その際には、実際の環境でどのDNSサーバーを使っているかや、レコードの種類、TTLなどを整理しておくとスムーズです。

複数のDNSサーバーを指定して比較

内部DNSと外部DNSで登録情報が食い違うケースは珍しくありません。 そうしたとき、digで異なるDNSサーバーを指定して結果を比較すると、問題の所在を素早く特定できます。 1台目のDNSサーバーと2台目のDNSサーバーから返ってくる結果が違う場合、片方だけ更新されていないか、あるいは設定そのものが正しいかなどを検証しやすくなります。

特定のレコードを消去したいとき

新しいDNSレコードを追加したのに、digで古い情報が返ってくる場合は、キャッシュが影響しているかもしれません。 このような場合にはキャッシュをクリアする方法を探ると同時に、digコマンドで実際にどのレコードが残っているかを確認するのが一手です。 ここでは一見遠回りに思えても、複数回にわたってdigを実行し、結果を記録していくことでキャッシュの切り替わり具合が見えてくることがあります。

セキュリティやパフォーマンスにも関わるDNS

DNSは単に名前解決をするだけでなく、運用面ではセキュリティやパフォーマンスにも大きな影響を与えることがあります。 例えば、DNSの設定が誤っていると正規のホスト名が取れず、通信がブロックされたり、ミドルウェアの機能が正常に動作しなかったりします。 また、大量のアクセスが集中するサービスであれば、DNSラウンドロビン方式などを利用して負荷分散を行うこともあるでしょう。

digでのチェックが予防策につながる

開発や本番環境に変更を加えるとき、あらかじめdigを使ってDNSレコードの変更が正しく反映されるかをチェックしておくと安心です。 実際にリリース直後にDNS関連のトラブルが発生すると、利用者に影響を与えてしまいます。 定期的にdigを用いてDNSの状況を監視するのも、安定運用にとっては大切な手法です。

DNSはインフラの基礎となる部分であり、あらゆる通信が依存しています。 digを使ってこまめに状態を確認することが、トラブルを減らすコツかもしれません。

まとめ

ここまで、digがどのような仕組みでDNS情報を調べるのかを解説してきました。 DNSはシステムやネットワークの中心的な役割を担うため、問題が起こると原因を追いかけるのが難しいことが多いです。 しかしdigのような詳細な情報を取得できるコマンドを使いこなすことで、トラブルの発生源を可視化しやすくなります。

digの使い方にはいくつものパターンがあり、オプション次第で出力結果を自由にカスタマイズできます。 「DNSがきちんと反映されているか」「複数のDNSサーバーで結果が一致しているか」といった点を随時確認し、実務へ役立ててみてはいかがでしょうか。 DNS設定が絡むあらゆる場面で、digは心強い助けとなるでしょう。

Shell Scriptをマスターしよう

この記事で学んだShell Scriptの知識をさらに伸ばしませんか?
Udemyには、現場ですぐ使えるスキルを身につけられる実践的な講座が揃っています。