1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

#0251(2025/10/02)実務で使い倒すdig入門

Posted at

実務で使い倒すdig入門

digとはDNSを対話的に調べるための多機能クライアントである。

まずは最短コマンド

dig example.com

最も基本の使い方。デフォルトのレコード種別(A)を、OSのリゾルバ設定で指定されたDNSサーバに問い合わせます。余計な出力を抑えるなら:

dig +short example.com

IPv6を見たい:

dig AAAA example.com +short

出力の読み方(どこを見るべきか)

digの出力は大きく「ヘッダ」「QUESTION」「ANSWER」「AUTHORITY」「ADDITIONAL」「統計」に分かれます。現場でまず確認するのは以下です。

セクション 何が分かるか 重要ポイント
HEADER フラグ(rcode, aa, rd, ra 等)、EDNS、応答サイズ NXDOMAIN や SERVFAIL、aa(権威)の有無
QUESTION 問い合わせたFQDNと種別 思っていた名前/種別かの再確認
ANSWER 実際の回答レコード TTL、CNAMEのチェーン、A/AAAAの値
AUTHORITY どのNSが権威か 委譲先の確認、SOAでのゾーン情報
ADDITIONAL 追加情報(多くはNSのA/AAAA) 次の問い合わせ先直行用のヒント
Query time/Server 往復時間と応答したDNS 遅延・キャッシュの有無の当たりを付ける

最短チェックの型:

dig example.com | sed -n '1,10p'
dig +nocmd example.com +noall +answer
dig +nocomments +noquestion +nostats +answer example.com

よく使うレコード種別

種別 用途
A IPv4アドレス dig A example.com
AAAA IPv6アドレス dig AAAA example.com
CNAME 別名(名前の転送) dig CNAME www.example.com
MX メール交換サーバ dig MX example.com +short
NS ゾーンの権威ネームサーバ dig NS example.com
TXT テキスト(SPF, DKIM, 認証等) dig TXT example.com
SOA ゾーンの開始情報 dig SOA example.com
PTR 逆引き(IP→名前) dig -x 8.8.8.8
SRV サービスディスカバリ dig SRV _sip._tcp.example.com

サーバの指定・経路の見極め

特定のDNSを使って結果差分を比較するのが運用の基本です。

dig @1.1.1.1 example.com
dig @8.8.8.8 AAAA example.com +short

社内DNSや権威に直当てする場合も同様です。応答が権威かどうかはHEADERのaaフラグで判別できます。

最小出力モード(短く、速く)

目的 コマンド 補足
値だけ欲しい dig +short name CNAMEがあると最終解決値のみにはならない点に注意
答えだけ dig +noall +answer name セクションを限定
統計だけ dig +nosearch +nocmd name +noall +stats 遅延調査
コメント削除 dig +nocomments name 余白を減らす

タイムアウト・再試行・TCP/UDP

DNSは通常UDPで通信します。パケット断片化やEDNS周りで詰まる場合はTCPへ切替、また待ち時間を調整します。

dig +time=2 +tries=1 example.com
dig +tcp example.com
dig +vc example.com   # +tcp と同義の実装が多い

権威が大きなDNSSEC応答を返す場合や途中FWでEDNSが壊される場合に+tcpが解決策になることがあります。

キャッシュとの差分を見る

同じ名前でも、問い合わせ先が違うとTTLや値が変わることがあります。以下を比べると傾向が見えます。

dig @resolver-of-your-os example.com
dig @8.8.8.8 example.com
dig @1.1.1.1 example.com

ANSWERのTTLが小さければ、更新直後やキャッシュエントリの残存を示唆します。

逆引き(PTR)

IPから名前を辿るには -x フラグを使います。

dig -x 1.2.3.4 +short

逆引きゾーンはin-addr.arpa(IPv4)やip6.arpa(IPv6)に委譲されているため、権威の都合で結果が出ないこともあります。

委譲の追跡(+trace)

委譲やDNSSECの途中で詰まるときは、ルートからの経路を追います。

dig +trace example.com

ルート→TLD→ゾーンと辿るので、どこで応答が失われるか、どのNSが遅いかを把握できます。権威のA/AAAAが足りない、グルーが古い、といった事故を発見しやすいです。

DNSSEC関連の手がかり

DNSSECの有無や検証可否をざっくり掴むにはフラグとレコード種別を見ます。

dig DNSKEY example.com
dig RRSIG example.com

HEADERのad(Authenticated Data)が立っていれば、問い合わせたリゾルバで検証済みです(cdで検証を抑止する実装もあります)。

EDNSと応答サイズ

近年のDNSはEDNS拡張で大きな応答を扱います。FWやロードバランサで断片化が落ちるとSERVFAILになりがちです。

dig +bufsize=4096 example.com

+bufsizeでEDNSの受信バッファを調整し、問題切り分けに使います。

名前解決の落とし穴チェックリスト

  • 名前がFQDNか(末尾のドットの扱いに注意: example.com.)
  • 検索サフィックスで意図しないドメインに問い合わせていないか(+nosearch)
  • CNAMEの多段でTTLや応答サイズが膨らんでいないか
  • 権威のNSが片系断になっていないか(AUTHORITYとADDITIONALの整合)
  • MX/TXTはクォートや;を含むため +short だけでは欠落しないか

スクリプトでの使い方の型

CIや監視での最小例。0/1の成否だけ見たい場合。

dig +time=2 +tries=1 +nocomments +noquestion +nostats +answer example.com A | grep -qE '[0-9]+.[0-9]+.[0-9]+.[0-9]+'

複数レコードをJSON化したい場合はjqなどと組み合わせるか、ANSWERを正規化してパースします。

実践レシピ

  • 新旧の値を同時比較: dig old.example.com A +short; dig new.example.com A +short
  • 権威直撃で伝播確認: dig @ns1.example.com www.example.com A +noall +answer
  • メール系トラブル: dig MX example.com +noall +answer; dig TXT example.com +noall +answer

digと他ツールの使い分け

ツール 強み 弱み 使いどころ
dig 出力が詳細・制御自在 慣れるまで冗長 検証・トラブルシュート本命
host 簡潔・人間向け オプションが少ない 単発確認
nslookup 歴史が長い 実装差が大きい レガシー環境で互換目的

実務でのコツは、目的に応じて出力を最小化し、問い合わせ先を固定して差分を見ること。迷ったら +trace と +noall +answer をまず試す、が覚えやすい指針です。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?