2026年6月17日
2026年6月17日
dig と doggo の違いと使い分け|出力形式・暗号化DNS・複数リゾルバの比較
dig は多くのサーバーで使える DNS 調査の標準ツールで、応答のフラグや各セクションまで細かく見られます。doggo は手元の端末で読みやすい表形式の出力や JSON 出力、DoH・DoT・DoQ への問い合わせ、複数のリゾルバの同時比較を手軽に行えるツールです。この記事では、両者の違いを具体的なコマンドで比べ、どの場面でどちらを使うかを整理します。
2つのツールの位置づけ
dig は ISC が開発する BIND に付属するコマンドです。Linux のサーバーにはパッケージ1つで入り、Debian・Ubuntu では bind9-dnsutils(または dnsutils)、RHEL 系では bind-utils に含まれます。長く使われてきたため、解説記事や障害報告の多くが dig の出力を前提に書かれており、他の人と結果を共有するときにも話が通じやすいのが強みです。
doggo は Go で書かれたオープンソースの DNS クライアントで、単一の実行ファイルとして配布されています。色分けされた表形式の出力、JSON 出力、暗号化 DNS への対応、複数のリゾルバへの同時問い合わせなどを特徴としています。OS に標準では入っていないため、使う環境ごとに導入が必要です。
違いを短くまとめると次のとおりです(2026年10月現在)。内容は各公式ドキュメントにもとづくもので、機能は版によって増えることがあります。
| 観点 | dig | doggo |
|---|---|---|
| 入手性 | サーバーのパッケージで広く提供 | 別途導入(配布バイナリ、各種パッケージ管理) |
| 既定の出力 | ヘッダー・フラグ・各セクションを詳細表示 | 回答を表形式で色分け表示 |
| 機械処理 | +short や +noall +answer を加工 |
--json で構造化された出力 |
| 暗号化 DNS | +tls、+https(BIND 9.18 以降) |
DoT、DoH、DoQ、DNSCrypt |
| 複数リゾルバ | ループで1台ずつ | 1回のコマンドで複数指定 |
同じ問い合わせを両方で書く
基本的な問い合わせは、どちらもほぼ同じ感覚で書けます。
# MX を引く
dig example.com MX
doggo MX example.com
# 問い合わせ先を指定して AAAA を引く
dig @1.1.1.1 example.com AAAA
doggo AAAA example.com @1.1.1.1
# 逆引き
dig -x 192.0.2.10
doggo --reverse 192.0.2.10
# 値だけを表示する
dig example.com A +short
doggo example.com --short
doggo は引数の順序に比較的寛容で、レコード種別、名前、@ で始まる問い合わせ先を並べて書けます。-t(種別)、-n(問い合わせ先)、-q(名前)のように明示する書き方もあります。また doggo A AAAA MX example.com のように、複数の種別を1回で問い合わせられます。dig でも1行に複数の問い合わせを並べることはできますが、出力は問い合わせごとに分かれて長くなります。
出力の違いと、どこを見るか
dig の既定の出力には、status(NOERROR、NXDOMAIN、SERVFAIL など)、flags(aa は権威サーバーの回答、ad は DNSSEC 検証済み、ra は再帰が使える、など)、ANSWER・AUTHORITY・ADDITIONAL の各セクション、問い合わせ先と応答時間が並びます。障害調査では、回答が無い理由が「名前が無い(NXDOMAIN)」のか「名前はあるが種別が無い」のか、権威サーバーの回答かキャッシュの回答か、といった情報が判断の決め手になるため、この詳しさが役に立ちます。
doggo の既定の出力は、名前、種別、クラス、TTL、値、問い合わせ先を表にしたもので、回答の中身をすばやく読むのに向いています。ヘッダーの細かな情報は既定では前面に出ないため、詳しく見たいときは --debug を付けるか、--json の出力で確認します。表の列や JSON の構造は版によって変わることがあるので、スクリプトで使う前に手元の版で実際の出力を確かめてください。
暗号化 DNS で問い合わせる
DoH や DoT を使うリゾルバの動作を確かめたいとき、doggo は問い合わせ先の書き方だけで方式を切り替えられます。
doggo example.com @tls://1.1.1.1
doggo example.com @https://cloudflare-dns.com/dns-query
doggo example.com @quic://dns.adguard-dns.com
dig も BIND 9.18 以降では DoT と DoH に対応しています。
dig @1.1.1.1 +tls example.com
dig @1.1.1.1 +https example.com
DoQ や DNSCrypt を試したい場合、dig は少なくとも広く使われている版では対応していないため、doggo(または kdig など他のツール)を使います。各事業者のエンドポイントの名前やパスは変更されることがあるので、利用するリゾルバの公式案内で確認してください。また、社内ネットワークでは暗号化 DNS の通信がファイアウォールで止められていることがあり、その場合はタイムアウトになります。ツールの不具合と取り違えないよう、通常の UDP の問い合わせが通るかを先に確かめると切り分けが早くなります。
複数のリゾルバを比べる
DNS の変更後に「どのリゾルバにはもう新しい値が届いているか」を見たい場面では、doggo の複数指定が便利です。
# doggo:1回で複数のリゾルバに問い合わせる
doggo example.com A @1.1.1.1 @8.8.8.8 @9.9.9.9
# dig:ループで1台ずつ問い合わせる
for s in 1.1.1.1 8.8.8.8 9.9.9.9; do
echo "$s: $(dig @"$s" example.com A +short | tr '\n' ' ')"
done
doggo の結果には問い合わせ先の列があるため、どのリゾルバがどの値と TTL を返したかを1つの表で比べられます。複数のリゾルバをどう使うか(すべてに聞くか、最初の1台か、無作為か)は --strategy で指定でき、既定の動きは版によって異なる可能性があるので、比較が目的なら明示しておくと安心です。
スクリプトで使う
監視やチェックのスクリプトに組み込む場合、dig は +short や +noall +answer で必要な行だけを出し、awk などで加工するのが定番です。サーバーに追加の導入が要らないのが利点です。
dig example.com A +noall +answer | awk '{print $2, $5}'
doggo は --json で構造化された出力を返すので、jq で値を取り出せます。
doggo example.com A --json | jq '.responses[0].answers[].address'
JSON のキー名は版で変わることがあり得るため、スクリプトを書く前に手元で --json の出力全体を確認し、バージョンを固定して運用するのが無難です。
dig を選ぶ場面、doggo を選ぶ場面
dig が向いているのは次のような場面です。
- 本番サーバー上での調査:追加のバイナリを入れずに使え、運用ルール上も扱いやすい
- 委任の追跡(
+trace)、権威サーバーへの再帰なしの問い合わせ(+norecurse)、ゾーン転送(AXFR)の確認 - DNSSEC の調査:
+dnssecで署名を表示し、adフラグで検証結果を確かめる - 他の人やサポート窓口と結果を共有するとき
doggo が向いているのは次のような場面です。
- 手元の端末で、回答を読みやすく確認したいとき
- DoH・DoT・DoQ・DNSCrypt のリゾルバを試したいとき
- 複数のリゾルバの答えを1回で比べたいとき
- JSON で受け取って別のツールに渡したいとき
なお doggo も、AA・AD・CD・DO などのフラグ指定や、NSID・Client Subnet といった EDNS のオプション、委任をたどる --trace などに対応してきています。ただし追加された時期は機能ごとに異なり、古い版には無いものもあります。doggo --help で手元の版の対応状況を確かめてから使ってください。また、search や ndots の扱いが dig と異なる点に注意が必要です。doggo は既定で resolv.conf の search リストを使うのに対し、dig は既定では使いません(+search で有効化)。短い名前を引いたときに両者の結果が食い違う場合は、この違いを疑います。
導入の方法
doggo は GitHub のリリースページで各 OS 向けのバイナリが配布されているほか、Homebrew、Scoop、Winget などのパッケージ管理や、go install github.com/mr-karan/doggo/cmd/doggo@latest でも導入できます。業務のサーバーに入れる場合は、配布元とチェックサムを確認し、社内の導入ルールに従ってください。手元に入れられない環境では、公式の Web 版を使う方法もあります。
まとめ
- dig はどこでも使える詳細な調査ツールで、委任の追跡や DNSSEC、権威サーバーへの直接の問い合わせに強みがあります。
- doggo は読みやすい表形式と JSON 出力、暗号化 DNS、複数リゾルバの同時比較が得意です。
- 短い名前で結果が食い違うときは、search リストの扱いの違いを疑います。
- スクリプトでは、dig は
+shortなどの加工、doggo は--jsonとjqを使い、版による出力の違いに備えます。 - 機能の有無は版によって異なるため、
--helpで手元の版を確かめてから使います。