2026年6月8日
2026年6月8日
delv コマンドで問い合わせる方法|DNSSEC の検証付きで答えを受け取る書き方と、問い合わせ先の選び方
delv は、dig と似た書き方で DNS に問い合わせ、受け取った答えを手元で DNSSEC の検証にかけてから表示するコマンドです。基本は delv @キャッシュサーバー 名前 種別 の形で、答えの前に「検証に通ったか」を示す1行が付きます。dig との大きな違いは、問い合わせ先に権威サーバーではなくキャッシュサーバー(フルリゾルバー)を指定するのが前提であることです。この記事では、delv の導入、基本の書き方、問い合わせ先の選び方、種別ごとの問い合わせ、よく使うオプションと注意点を説明します。
出力の各行の詳しい読み方や、検証の過程を追う方法は別の記事で扱っているため、ここでは「delv で目的の問い合わせを正しく行う」ことに絞ります。
delv の導入と確認
delv は BIND 9 に付属するコマンドで、dig と同じパッケージに入っています(2026年10月現在)。
# Debian / Ubuntu
sudo apt install bind9-dnsutils
# RHEL / AlmaLinux / Rocky Linux など
sudo dnf install bind-utils
# macOS(Homebrew)
brew install bind
delv -v で版を表示できます。delv は検証に使うルートのトラストアンカー(ルートゾーンの鍵の情報)を本体に組み込んでいるため、古い版のままだと正しく署名されたドメインでも検証に失敗するおそれがあります。ルートゾーンの鍵(KSK)は新しい鍵へ切り替える計画(ロールオーバー)が ICANN から案内されているため、切り替えの時期と内容は ICANN の最新の案内で確認してください。OS のパッケージを更新し、新しい鍵を含む版で使うのが無難です。
導入したら、署名されていることが分かっているドメインで動作を確かめます。
delv @1.1.1.1 isc.org SOA
答えの前に ; fully validated と出れば、delv の検証は手元で正しく動いています。
基本の書き方
# 種別を省くと A を問い合わせる
delv www.example.com
# 種別を指定する
delv www.example.com AAAA
# 問い合わせ先のキャッシュサーバーを指定する
delv @1.1.1.1 www.example.com A
# 名前や種別をオプションで明示する(名前が種別名と紛らわしいときなど)
delv @1.1.1.1 -q example.com -t MX
# 逆引き
delv @1.1.1.1 -x 203.0.113.10
問い合わせ先を省くと、/etc/resolv.conf に書かれた最初のサーバーに聞きます。出力は、検証結果を示すコメントの行、レコードの行、署名(RRSIG)の行の順に並びます。主なコメントは、検証に通った ; fully validated、ゾーンが署名されていない ; unsigned answer、否定の答えが検証に通った ; negative response, fully validated などです。DNSSEC を使っていないドメインで unsigned answer と出るのは正常です。
問い合わせ先の選び方
delv は、目的の答えだけでなく、検証に必要な DS や DNSKEY も同じ問い合わせ先から取得します。そのため、問い合わせ先にはどの名前でも引けるキャッシュサーバーを指定します。
- 公開 DNS(
1.1.1.1・8.8.8.8・9.9.9.9など):DNSSEC のレコードをそのまま中継するので、まず試す問い合わせ先として向いています。 - 社内や回線事業者のキャッシュサーバー:利用者が実際に使っている経路で検証に通るかを確かめたいときに指定します。
- **手元の中継役(
127.0.0.53など)**:Ubuntu の systemd-resolved のような中継役は、検証に必要なレコードを中継できず、正しいドメインでも失敗することがあります。失敗したら公開 DNS を指定して比べます。 - 権威サーバー:そのゾーン以外の名前(親ゾーンの DS やルートの鍵)を答えないため、通常の使い方では検証が完了しません。権威サーバーの生の値は dig や kdig で再帰なしに確かめます。
BIND 9.20 以降の delv には、キャッシュサーバーを使わず、delv 自身がルートから順に権威サーバーへ問い合わせて名前解決する +ns が加わっています。手元のキャッシュサーバーの影響を外して確かめたいときに使えますが、外向きの DNS 通信が制限された環境では使えません。対応の有無は手元の版の man delv で確かめてください。
# delv 自身が名前解決と検証を行う(対応する版のみ)
delv +ns www.example.com A
種別ごとの問い合わせ
delv で調べる価値が高いのは、DNSSEC の検証に通るかどうかが運用に関わる種別です。
# サイトの IP アドレスが検証に通るか
delv @1.1.1.1 www.example.com A
delv @1.1.1.1 www.example.com AAAA
# 親ゾーンに登録された DS(DNSSEC を有効にしたあとの確認)
delv @1.1.1.1 example.com DS
# ゾーンが公開している鍵
delv @1.1.1.1 example.com DNSKEY +multiline
# メールの受け取り先と、DANE を使う場合の TLSA
delv @1.1.1.1 example.com MX
delv @1.1.1.1 _25._tcp.mail.example.com TLSA
# 証明書を発行できる認証局の制限
delv @1.1.1.1 example.com CAA
それぞれの確認のポイントは次のとおりです。
- A・AAAA:CNAME で CDN などを指している場合、自分のゾーンの部分は
fully validatedでも、置き換え先のゾーンが署名されていなければ後半はunsigned answerになります。これは置き換え先の事業者の方針によるもので、自分の設定の誤りではありません。 - DS:レジストラに DS を登録したあと、親ゾーンに反映されて検証に通るかを確かめます。DS が無ければ否定の答えになり、そのドメインは署名されていないものとして扱われます。
- DNSKEY:
+multilineを付けると、鍵のタグなどの注釈を含めて折り返して表示されます。DS と鍵の対応を見るときの手がかりになります。 - TLSA:DANE は署名されたゾーンでないと意味を持たないため、
fully validatedで返ることが前提です。 - CAA:署名されたゾーンでは、認証局は CAA の確認の際に DNSSEC の検証を行うことがあります。検証に失敗すると、証明書の発行に失敗する原因になりえます。
よく使うオプション
# 値だけを表示する(コメントと署名を省く)
delv @1.1.1.1 www.example.com A +short
# 署名(RRSIG)の行を省く
delv @1.1.1.1 www.example.com A +nodnssec
# TCP で問い合わせる
delv @1.1.1.1 example.com DNSKEY +tcp
# IPv4 / IPv6 のどちらで問い合わせるかを固定する
delv -4 @1.1.1.1 www.example.com A
delv -6 @2606:4700:4700::1111 www.example.com A
# 検証をしないで答えを受け取る(切り分け用)
delv @1.1.1.1 www.example.com A -i
+short は便利ですが、検証結果のコメントも消えます。スクリプトで値だけを使う場合は、別の手段で検証に通ることを確かめてから使います。
-i は、検証に失敗するときの最初の切り分けに使います。-i を付けると答えが返り、付けないと失敗するなら、原因は名前解決そのものではなく DNSSEC の設定(DS と鍵の食い違い、署名の期限切れなど)にあります。失敗の理由を詳しく追うときは +vtrace などで検証の過程を表示します。
使うときの注意
- 表示される TTL はキャッシュの残り時間:キャッシュサーバー経由で受け取った値なので、ゾーンに設定した TTL そのものではありません。設定値は RRSIG の中の元の TTL で確かめます。
- キャッシュに古い答えが残ることがある:DNSSEC の設定を直した直後でも、キャッシュサーバーに失敗の結果や古い署名が残っている間は、同じ症状が見えることがあります。別のキャッシュサーバーを指定して比べます。
- 自分で検証を行わない環境と区別する:dig で
adフラグを見る方法は、キャッシュサーバーが検証した結果を信じる方法です。delv は手元で検証し直すので、キャッシュサーバーが検証をしていない環境でも結果を確かめられます。 - DNS の設定を変える前に控えを取る:DS の登録や鍵の変更は、誤ると名前解決が止まります。変更前に現在の値を delv や dig の出力として保存しておきます。
まとめ
- delv は
delv @キャッシュサーバー 名前 種別の形で使い、答えを手元で DNSSEC の検証にかけてから表示します。種別を省くと A を問い合わせます。 - 問い合わせ先は DNSSEC のレコードを中継できるキャッシュサーバーにします。権威サーバーや手元の中継役では検証が完了しないことがあります。BIND 9.20 以降では
+nsで delv 自身に名前解決させる方法もあります。 - A・DS・DNSKEY・TLSA・CAA など、検証に通るかが運用に関わる種別の確認に向いています。
+short・+nodnssec・+tcp・-4・-6・-iで問い合わせ方を変えられます。古い delv はルートの鍵の切り替えで失敗するおそれがあるため、パッケージを更新して使います。