2026年6月16日

2026年6月16日

kdig と DNSViz の違いと使い分け|DNSViz で見つけた問題を、kdig で1台ずつ再現して確かめる

DNSViz は、ルートから対象のゾーンまでの委任と DNSSEC の署名のつながりを、すべての権威サーバーに問い合わせて総点検し、図とエラーの一覧で示す診断ツールです。kdig は、指定した1台のサーバーに、指定した条件(IPv4 か IPv6 か、UDP か TCP か、暗号化するか、など)で1回だけ問い合わせ、応答をそのまま見せるコマンドです。「どこがおかしいか」を広く探すのが DNSViz、「その1台がその条件で本当にそう答えるか」を確かめて記録に残すのが kdig、という関係です。この記事では、2つのツールの違いと、DNSViz で見つけた問題を kdig で再現して原因を確定させ、DNS 事業者への連絡や修正後の確認につなげる流れを説明します。

2つのツールの違い

観点 kdig DNSViz
1回の実行で調べる範囲 指定した1台・1つの問い合わせ 委任の各段の権威サーバーすべて
DNSSEC 署名や DS を表示するだけで、検証はしない つながりを解析し、エラーと警告を出す
通信方式の指定 UDP・TCP・DoT・DoH・DoQ、IPv4・IPv6 を選べる 解析の中で各方式を試し、問題を報告する
結果の形 応答そのもの(テキスト、新しめの版では JSON も) 図、エラーと警告の一覧、JSON
実行する場所 手元の端末やサーバー Web 版(dnsviz.net)または CLI 版

kdig は Knot DNS に付属するコマンドで、Debian・Ubuntu では knot-dnsutils、RHEL 系では knot-utils などのパッケージで入れられます。DNSViz は Web 版のほか、オープンソースの CLI 版を Python のパッケージとして導入できます。どちらも対応する機能やオプションは版によって変わります(2026年10月現在)。

DNSViz が向いている場面

DNSViz の価値は、自分では思いつかない問い合わせまで含めて、まとめて試してくれる点にあります。次のような問題は、1台ずつ手で調べていると見落としやすいものです。

  • 親ゾーンに登録された NS と、ゾーンの中に書かれた NS が食い違っている
  • 権威サーバーのうち1台だけが、古い署名や古い鍵を配っている
  • 親ゾーンの DS が、子ゾーンに存在しない鍵を指している
  • 署名の有効期限が切れている、または近い
  • IPv6 や TCP で問い合わせたときだけ応答が無い

DNSSEC の有効化や DNS 事業者の移転の前後に1回ずつ解析し、結果を保存しておくと、変更で何が変わったかを比べられます。Web 版で解析した結果はサイト上で他の人も閲覧できる形で残るため、社内専用の名前や公開前のゾーンは CLI 版を自分の環境で使います。

# CLI 版の例:権威サーバーへの問い合わせ結果を保存し、エラーを一覧にする
dnsviz probe -A -a . example.com > example.json
dnsviz grok -r example.json

オプションの意味や書き方は版で変わることがあるため、dnsviz probe -h で確かめてください。

kdig が向いている場面

kdig の価値は、条件を1つずつ固定して再現できる点にあります。DNSViz のエラーは「どのサーバーに、どの方式で聞いたとき」の結果かが書かれていますが、それが一時的な不調なのか、いつでも起きるのかは、同じ条件で問い合わせ直してみないと分かりません。

# 特定の権威サーバーのアドレスに、IPv6・TCP で再帰なしに聞く
kdig -6 @2001:db8::53 example.com SOA +norec +tcp

# どの拠点が答えたかを確かめる(NSID に対応したサーバーのみ)
kdig @192.0.2.53 example.com SOA +norec +nsid

kdig の出力の末尾には、問い合わせた日時(Time)と、問い合わせ先のアドレス・ポート・通信方式(From)が出ます。この出力をそのまま保存しておけば、「いつ、どのサーバーに、どの方式で聞いたらこう返った」という記録になり、DNS 事業者に調査を頼むときの材料として使えます。エニーキャストで運用されているサーバーでは、+nsid で返る識別子があると、どの拠点の問題かを伝えやすくなります。

一方で、kdig は DNSSEC の検証を行いません。+dnssec を付ければ署名(RRSIG)や DS が表示されますが、それらが正しくつながっているかの判断は DNSViz(または delv)に任せます。kdig の結果だけを見て「DNSSEC は問題ない」と結論しないようにしてください。

DNSViz の指摘を kdig で確かめる

DNSViz が示す主な指摘と、それを kdig で再現するときの問い合わせの組み合わせです。アドレスや名前は例なので、DNSViz の結果に出ているものに置き換えます。

親と子で NS が食い違う

# 親ゾーン(.com の例)に登録されている委任
kdig @a.gtld-servers.net example.com NS +norec
# ゾーンの中に書かれている NS
kdig @ns1.example.net example.com NS +norec

親側の答えは AUTHORITY に、子側の答えは ANSWER に NS が並びます。両者の一覧を比べ、片方にしか無いネームサーバーがないかを見ます。親側を直すにはレジストラの管理画面、子側を直すには DNS 事業者の管理画面を使います。

1台だけシリアルや署名が古い

for a in 192.0.2.53 198.51.100.53; do
  kdig @"$a" example.com SOA +norec +short
done

+short の SOA は、3番目の値がシリアル番号です。1台だけ数字が小さければ、そのサーバーへのゾーンの転送が止まっている可能性があります。署名の期限を見たいときは、+dnssec +multiline を付けて RRSIG の有効期限(UTC の年月日時分秒)を確かめます。

DS と鍵が合わない

# 親ゾーンにある DS
kdig @a.gtld-servers.net example.com DS +norec
# 権威サーバーが公開している鍵
kdig @ns1.example.net example.com DNSKEY +norec +dnssec +multiline

DS の値の最初の数字は、指している鍵のタグです。DNSKEY 側のタグは、+multiline の注釈に表示される版もあります。表示されない場合は、DNSViz の図に出ている鍵のタグと照らし合わせます。DS が指す鍵がどの権威サーバーにも無ければ、検証を行うキャッシュサーバーでは名前が引けなくなっているはずです。

TCP や IPv6、大きな応答で失敗する

kdig @192.0.2.53 example.com DNSKEY +norec +dnssec +tcp
kdig -6 @2001:db8::53 example.com DNSKEY +norec +dnssec
kdig @192.0.2.53 example.com DNSKEY +norec +dnssec +bufsize=1232

UDP では答えるのに TCP では答えない、IPv4 では答えるのに IPv6 では答えない、といった差が出れば、サーバーかその手前のファイアウォールの設定の問題です。DNSSEC の鍵や署名を含む応答は大きくなりやすく、TCP で取り直せないと名前解決に失敗する環境があります。なお、手元のネットワーク側で IPv6 や TCP の DNS が使えないと、サーバーに問題が無くても同じ症状に見えます。別の回線からも試して、手元の事情でないことを確かめてください。

修正したあとの確認

  1. 指摘のあった条件で kdig を実行し直し、応答が変わったことを確かめます。
  2. DNSViz で再解析し、エラーが消えたことを確かめます。Web 版では、前回の解析結果が残っていることがあるので、新しく解析し直した結果であることを日時で確認します。
  3. 利用者側への影響は、キャッシュサーバーを経由した確認(delv など)で確かめます。キャッシュに失敗の結果や古い答えが残っている間は、修正後もしばらく症状が続くことがあります。

DNS の設定を変更する前には、DNS 事業者の管理画面で現在のレコードを書き出すか控えておき、元に戻せるようにしておきます。

まとめ

  • DNSViz は全権威サーバーと委任の各段をまとめて点検する診断ツール、kdig は1台・1条件の応答をそのまま見るコマンドです。
  • 問題を広く探すのは DNSViz、指摘された条件で再現して記録を残すのは kdig、と役割を分けます。
  • kdig は -6・+tcp・+nsid・+dnssec などで条件を固定でき、出力の Time と From の行が記録として役立ちます。
  • kdig は DNSSEC の検証をしないため、署名のつながりの判断は DNSViz や delv に任せます。
  • 修正後は kdig で再現が止まったこと、DNSViz でエラーが消えたことの両方を確かめます。

お気軽にご相談ください

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