Linux / コマンド / dig - DNSレコードと応答を詳しく確認

digはDNS(Domain Name System:名前に対応するアドレスなどを調べる仕組み)のサーバーへ問い合わせ、レコードと応答状態を詳しく表示します。名前解決の問題を調べたり、指定したサーバーの回答を比較したりできます。

名前だけを指定した問い合わせでは、通常Aレコードを調べます。結果のstatusは応答状態、ANSWER SECTIONは回答レコードです。+shortは短い結果だけを表示するため、状態、フラグ、TTLなどの文脈が省かれます。キャッシュや問い合わせ先によって回答が違う場合があります。

基本的な文法

dig [@DNSサーバー] 名前 [レコード形式] [オプション]

インストールされている実装とオプションは、配布版によって異なる場合があります。man digで現在のシステムの説明を確認してください。

使用例

Aレコードの確認

ドメインのIPv4アドレスと応答状態を確認します。

dig example.com A

メールサーバーレコードの確認

MXレコードの優先順位とホストを確認します。

dig example.com MX

簡単な回答のみを見る

スクリプトや簡単な確認に使用できますが、診断情報は減少します。

dig +short example.com A

DNS応答の各フィールドを読む

digはDNS(Domain Name System)クエリを詳しく表示します。+noall +answerは回答節のみを残し、レコード名・TTL・クラス・タイプ・値を見やすくします。

dig +noall +answer example.com A

出力形式の例(IPは説明用アドレスです。TTLも実際の応答とは異なります):

example.com. 300 IN A 192.0.2.10

300はTTL(Time To Live)を秒単位で表した値で、レコードをキャッシュしてよい時間です。キャッシュからの応答では残り時間が表示されます。INはインターネットクラス、AはIPv4アドレスのレコードです。空の結果なら+noall +answerを外して再照会し、NXDOMAIN(名前が存在しない)か、名前は存在するが要求した種類のデータがない状態か、サーバーエラーなどかを確認します。別の問い合わせ先は@サーバーアドレスで指定します。

主なオプションと形式

オプション・形式 説明
@サーバー 問い合わせるDNSサーバーを指定します。
A / AAAA / MX / TXT AはIPv4、AAAAはIPv6、MXはメール配送先、TXTはテキスト情報のレコードを選びます。
+short 短い回答のみを出力します。
+noall +answer 回答セクションを中心に出力します。
-x IPアドレス 逆方向のDNSクエリを実行します。
+trace 委任経路に沿ってクエリします。

使用する際の注意点

+shortの標準出力が空という事実だけでは、名前がない、要求したデータがない、サーバーエラー、応答がない、という状態を区別できません。短縮表示を外し、応答ヘッダーとエラーも確認してください。digの終了コードが0でも、NXDOMAINを含むDNS応答を受け取ったという意味の場合があり、目的のレコードが存在する保証にはなりません。アプリ全体の名前解決経路は/etc/hostsなども使うため、getentによるシステムの名前サービス情報の確認と結果が異なる場合があります。

よくある質問

dig結果とブラウザ接続結果が異なる理由は?

digは選択したDNSサーバーのレコード応答を見ますが、ブラウザはローカルキャッシュ、プロキシ、/etc/hosts または他の解決経路を使用する場合があります。

公式ドキュメント

オプションの正確な動作と実装ごとの差異は、dig関連の公式ドキュメントで確認できます。