2026年6月8日

2026年6月8日

kdig と dig の違いと使い分け|dig の調査手順を kdig で再現するときのオプション対応と挙動の差

kdig と dig は書式がよく似ていますが、オプション名や既定の動作に細かな違いがあり、dig 前提の手順書をコマンド名だけ置き換えると、エラーになったり、結果の見え方が変わったりします。この記事では、dig でよく使う調査手順を kdig で再現するときのオプションの対応と、比較するときに注意したい挙動の差を整理し、調査の場面ごとにどちらを使うかを判断できるようにします。

両ツールの出自や導入方法、暗号化 DNS への対応の概要は別の記事で扱っているため、ここでは「すでに片方を使えて、もう片方に乗り換える・併用する」人向けに、つまずきやすい点に絞って説明します。

最初に版を確認する

kdig も dig も、版によって使えるオプションが変わります。手順を試す前に、手元の版を確かめておくと、存在しないオプションで悩む時間を減らせます。

dig -v      # BIND 9 の版が表示される
kdig -V     # Knot DNS の版が表示される
man kdig    # 手元の版で使えるオプションの一覧

ディストリビューションの標準パッケージは版が古いことがあります。たとえば長期サポート版の OS では、dig が暗号化 DNS 関連のオプションに対応していない版のまま、ということもあります。この記事のオプションは執筆時点(2026年10月現在)の各ツールのマニュアルを基準にしていますが、細部は手元の man の記載を優先してください。

よく使うオプションの対応

dig の手順書に出てくる主なオプションと、kdig での書き方の対応です。名前が同じでも意味が少し違うものがあるため、比較が必要な場面として表にまとめます。

目的 dig kdig
回答の値だけ表示 +short +short
回答セクションだけ表示 +noall +answer +noall +answer
再帰を要求しない +norecurse +norecurse
TCP で問い合わせ +tcp +tcp
DNSSEC の署名も要求 +dnssec +dnssec
検証を無効にして問い合わせ +cd +cdflag
応答したサーバーの識別子 +nsid +nsid
1回の待ち時間 +time=秒 +timeout=秒
再試行の回数 +tries=回 / +retry=回 +retry=回
委任をたどる +trace 対応なし
逆引き -x アドレス -x アドレス

注意したいのは待ち時間と再試行です。dig の +time は kdig では受け付けられず、+timeout を使います。監視スクリプトをコマンド名だけ差し替えると、ここで失敗しやすいです。また、dig の +tries は「最初の1回を含む試行回数」、+retry は「再試行の回数」と意味が分かれています。kdig の +retry は再試行の回数なので、dig の +tries=3 に相当するのは kdig の +retry=2 と考えると合わせやすくなります。

検証を無効にする CD フラグは、dig では +cd、kdig では +cdflag と名前が違います。DNSSEC の検証に失敗して SERVFAIL になっているのかを切り分けるときに使うオプションなので、名前の違いを覚えておくと便利です。

比較で食い違いやすい挙動の差

同じサーバーに同じ名前を問い合わせても、両ツールの結果の見え方が違うことがあります。DNS の応答が違うのではなく、問い合わせの組み立て方や表示の仕方が違うためです。

EDNS と DNS Cookie の付け方

最近の dig は、既定で EDNS を付け、DNS Cookie も送る動作になっています。kdig は、オプションの指定によって EDNS を付けるかどうかが変わる場合があります。古い権威サーバーやファイアウォールが EDNS 付きの問い合わせをうまく扱えないとき、片方のツールだけタイムアウトする、という現象が起きることがあります。

食い違いが出たら、両方の出力で OPT の疑似セクションが表示されているか、つまり EDNS が付いていたかを見比べてください。dig では +noedns、kdig では +noedns で EDNS を外して問い合わせられるので、外したときにだけ応答が返るなら、相手側の EDNS の扱いに問題がある可能性が高いです。

応答が切り詰められたときの扱い

UDP の応答が大きすぎると、サーバーは TC フラグを立てて切り詰めた応答を返します。dig も kdig も、既定ではこのとき TCP で問い合わせ直します。どちらも +ignore を付けると問い合わせ直しをしないので、「UDP だけだとどう見えるか」を確認したいときに使います。DNSSEC の署名付きの大きな応答や、TXT レコードを大量に持つドメインで、TCP の 53 番ポートが塞がれていないかを確かめるときに役立ちます。

設定ファイルと既定の問い合わせ先

dig は ~/.digrc に書いた既定のオプションを読みますが、kdig はこのファイルを読みません。~/.digrc に +noall +answer を書いている人が kdig を使うと、出力が急に長くなったように見えます。

どちらも @ で問い合わせ先を省くと、/etc/resolv.conf に書かれたサーバーへ問い合わせます。結果を比べるときは、@ で問い合わせ先を明示して、同じサーバーに聞いていることをはっきりさせてください。

終了コード

dig は、NXDOMAIN(名前が存在しない)や SERVFAIL の応答でも、応答を受け取れていれば終了コード 0 を返し、応答が無かったときに 0 以外を返します。kdig の終了コードの規則は dig と同じとは限りません。スクリプトで成功・失敗を判定するなら、終了コードだけに頼らず、出力のヘッダーにある status の値も確認する作りにしておくと、ツールを差し替えても判定がずれにくくなります。

調査の場面ごとの使い分け

ここまでの差を踏まえ、調査の場面ごとに向いているツールを整理します。

  • ネームサーバー変更が反映されない:委任をたどる +trace を使うため dig を選びます。kdig で同じことをするには、親ゾーンの権威サーバーに +norecurse で NS を問い合わせ、次の段階のサーバーに順に聞いていく手作業になります。
  • DNSSEC 導入後に一部の利用者だけ名前解決できない:dig と kdig のどちらでも調べられます。検証するリゾルバーに通常どおり問い合わせて SERVFAIL になり、CD フラグ付き(dig は +cd、kdig は +cdflag)なら答えが返る場合は、署名や DS レコードの問題が疑われます。
  • anycast の権威サーバーのどの拠点が答えたかを知りたい:両方とも +nsid が使えます。相手のサーバーが NSID に対応していれば、拠点の識別子が表示されます。
  • 暗号化 DNS のリゾルバーが応答するかを確かめたい:kdig のほうがオプションがそろっていて扱いやすいです。
  • サポート窓口や手順書とやり取りする:dig の出力を貼るほうが話が早く進みます。多くの手順書が dig を前提にしているためです。

迷ったら、普段は dig、暗号化 DNS や特定のオプションが必要なときだけ kdig、という分け方が現実的です。両方を入れておき、結果が食い違ったら上の「挙動の差」の順に確認すると、ツールの違いと DNS 側の問題を切り分けやすくなります。

WordPress サイトの運用で気をつけること

WordPress サイトの移転や DNS 事業者の変更では、作業前後で同じ問い合わせを繰り返して結果を比べます。このとき、作業前に dig で取った記録と、作業後に kdig で取った記録を比べると、上で説明した表示の差を「変化」と取り違えることがあります。比較する記録は、同じツール、同じオプション、同じ問い合わせ先で取るようにしてください。

また、レンタルサーバーの SSH 環境では dig しか使えないことが多く、kdig は手元の PC や VPS で使う、という分担になりがちです。手元とサーバー側では問い合わせ先のリゾルバーも違うため、結果を比べるときは @ で同じ公開 DNS や権威サーバーを指定して揃えます。

まとめ

  • kdig と dig は書式が似ていますが、待ち時間(+time と +timeout)、再試行、CD フラグ(+cd と +cdflag)などオプション名が違うものがあります。
  • 既定の EDNS や DNS Cookie の扱い、~/.digrc の有無、終了コードの規則が違うため、結果の比較は同じツール・同じオプション・同じ問い合わせ先で行います。
  • 委任の追跡は dig の +trace、暗号化 DNS の確認は kdig が向いています。
  • 片方だけ失敗するときは、EDNS の有無、TCP への切り替え、問い合わせ先の順に確かめます。
  • オプションは版で変わるため、手元の man の記載を優先します。

お気軽にご相談ください

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