2026年6月16日

2026年6月16日

doggo と delv の違いと使い分け|暗号化 DNS と見やすさの doggo、DNSSEC 検証の delv

doggo は、見やすい表や JSON で答えを示し、DNS over HTTPS(DoH)や DNS over TLS(DoT)などの暗号化された DNS にも問い合わせられる、日常の確認向けのクライアントです。delv は、受け取った答えが DNSSEC の署名で正しく裏付けられているかを手元で検証するためのコマンドです。「何が返ってくるか」を手早く見るなら doggo、「返ってきた答えが本物か」を確かめるなら delv、と分けて使います。この記事では、2つのツールの違い、それぞれに任せる確認、場面ごとの組み合わせ方を説明します。

DNSSEC の検証を軸にした比較としては、別の記事で DNSViz と delv の使い分けも扱っています。こちらは、普段の名前解決の確認と検証の役割分担に重点を置きます。

2つのツールの違い

観点 doggo delv
主な目的 問い合わせ結果を見やすく表示する 答えを DNSSEC で検証する
DNSSEC 署名の検証は行わない ルートからのつながりを検証する
通信方式 UDP・TCP・DoT・DoH・DoQ・DNSCrypt 従来の DNS(UDP・TCP)が中心
出力 色付きの表、--short、--json ゾーンファイル形式と、検証結果のコメント
導入 Go で書かれた単体のプログラム BIND の付属ツール(dig と同じパッケージ)

doggo はオープンソースのプロジェクトとして開発されていて、各 OS 向けのビルド済みのファイルのほか、Homebrew などのパッケージ管理ツールや go install で導入できます。Windows でもそのまま動かせます。delv は Debian・Ubuntu では bind9-dnsutils、RHEL 系では bind-utils に含まれるのが一般的です(2026年10月現在)。BIND は Windows 向けの提供を終えているため、Windows で delv を使うなら WSL などの Linux 環境を用意します。

どちらも版によってオプションや表示が変わることがあるので、手元では doggo --help と delv -h の表示を優先してください。

doggo に任せる確認

複数のキャッシュサーバーの答えを並べる

doggo www.example.com A AAAA @1.1.1.1 @8.8.8.8

名前・種別・問い合わせ先を1行にまとめて書け、結果の表の NAMESERVER の列で、どのサーバーの答えかを見分けられます。レコードを変更したあとの切り替わりの確認に便利です。

暗号化 DNS 経由の答えを確かめる

# DoH
doggo www.example.com @https://cloudflare-dns.com/dns-query

# DoT
doggo www.example.com @tls://1.1.1.1

ブラウザや OS で DoH を有効にしていると、端末の resolv.conf に書かれたサーバーとは別の経路で名前解決が行われます。「ブラウザでは古いサイトが出るのに、コマンドでは新しいアドレスが返る」といった食い違いは、ブラウザが使っている DoH のサーバーに doggo で問い合わせると原因が見えてきます。delv にはこの用途は向きません。

スクリプトで値を使う

--short で値だけを、--json で項目ごとに分かれた形を出力できます。JSON の TTL は 300s のように s の付いた文字列になっている点に注意します。

キャッシュサーバーが失敗した理由を聞く

--ede を付けると、対応しているキャッシュサーバーから拡張エラー(Extended DNS Errors)を受け取れることがあります。SERVFAIL の理由として、DNSSEC の検証の失敗などが示される場合があります。ただし、理由を返すかどうかはキャッシュサーバー次第です。

delv に任せる確認

# 検証結果を見る
delv www.example.com A

# 問い合わせ先を指定する
delv @1.1.1.1 www.example.com A

# 検証を止めた結果と比べる
delv @1.1.1.1 www.example.com A -i

# 検証の過程を表示する
delv @1.1.1.1 www.example.com A +vtrace

出力の先頭に ; fully validated と出れば、ルートから署名のつながりをたどって検証できた答えです。; unsigned answer は署名されていないゾーンの答えで、DNSSEC を使っていなければ正常です。検証に失敗すると、その旨と理由が表示されます(文言は版によって少し異なります)。

-i を付けると答えが返り、付けないと失敗する場合は、DNSSEC の設定(親ゾーンの DS と鍵の不一致、署名の期限切れなど)が原因です。署名されたゾーンでは RRSIG も表示されるので、署名の有効期限が近すぎないかもあわせて確かめられます。

doggo の結果だけでは安心できない理由

doggo が表示するのは、問い合わせ先のサーバーが返した答えそのものです。

  • 問い合わせ先が DNSSEC を検証するキャッシュサーバーなら、検証に失敗した名前には SERVFAIL が返り、doggo でもエラーとして見えます。
  • 問い合わせ先が検証をしないサーバーなら、署名が壊れていても答えは普通に表示されます。

つまり、doggo で「引けた」ことは「署名が正しい」ことの証明になりません。DNSSEC を使っているドメインで、変更の作業をしたあとは、doggo で値を確かめたうえで、delv で検証が通るかも確かめます。

逆に、delv は検証には強いものの、出力は従来のゾーンファイル形式で、複数のサーバーの答えを並べたり、暗号化 DNS の経路を確かめたりする用途には向きません。

場面ごとの使い分け

レコードを変更したあとの確認

doggo で主な公開 DNS と社内のキャッシュサーバーを並べ、新しい値に切り替わっているかを見ます。DNSSEC を使っているドメインなら、最後に delv で fully validated になることを確かめます。

一部の利用者だけ名前解決に失敗する

  1. doggo で、利用者が使っていそうなキャッシュサーバー(公開 DNS、DoH のサーバー)に --ede を付けて問い合わせ、どこで失敗するかを探します。
  2. 検証を行うサーバーだけで失敗しているなら、DNSSEC が疑われます。delv で同じサーバーを指定し、-i の有無で結果を比べます。
  3. DNSSEC が原因と分かったら、DNSViz などで、どの権威サーバーや鍵が原因かを詳しく調べます。

DNSSEC を有効にする・DNS 事業者を移すとき

主役は delv です。DS を登録したあと、複数のキャッシュサーバーを指定して検証結果が変わっていく様子を確かめます。doggo は、DS や DNSKEY の値を見やすく確認する補助に使えます。

監視スクリプトに組み込むとき

値や TTL を記録するなら doggo の --json を jq で加工すると扱いやすく、検証の成否を記録するなら delv の出力の1行目を残すのが手軽です。

#!/bin/sh
# 値は doggo で、検証結果は delv で記録する例
name=www.example.com
doggo "$name" A @1.1.1.1 --short --color=false | sed "s/^/$(date '+%F %T') value /"
echo "$(date '+%F %T') dnssec $(delv @1.1.1.1 "$name" A 2>&1 | head -n 1)"

つまずきやすい点

  • doggo は既定で resolv.conf の search の設定を使うため、短い名前を渡すと社内のドメインが補われることがあります。名前を末尾のドットまで書くか、--search=false を付けると、意図した名前で問い合わせられます。
  • delv の問い合わせ先がローカルのスタブリゾルバ(127.0.0.53 など)だと、検証に必要なレコードを中継できず失敗することがあります。@1.1.1.1 などを指定して比べます。
  • 古い delv は、組み込みのルートのトラストアンカーが現在のものと合わず、検証に失敗することがあります。OS のパッケージを新しく保ちます。
  • 社内のプロキシや端末の管理ソフトが DoH・DoT の通信を止めていると、doggo の暗号化 DNS での問い合わせは時間切れになります。この場合は通常の DNS での結果と比べ、経路の問題かどうかを切り分けます。

まとめ

  • doggo は見やすさ・複数の問い合わせ先・暗号化 DNS・JSON に強い日常の確認向けのツールで、DNSSEC の検証は行いません。
  • delv は答えを DNSSEC で検証し、fully validated などの結果と、-i・+vtrace による切り分けを提供します。
  • doggo で「引けた」ことは署名が正しい証明にならないため、DNSSEC を使うドメインでは delv で検証を確かめます。
  • 失敗の調査は、doggo(--ede)で失敗するサーバーを探し、delv で DNSSEC が原因かを切り分ける順に進めます。
  • 監視では、値の記録に doggo の JSON、検証の記録に delv の出力の1行目を使います。

お気軽にご相談ください

お見積りへ お問い合わせへ
▲