2026年6月17日
2026年6月17日
DNSViz と host の違いと使い分け|DNSSEC の導入や DNS 事業者の移転で、どの確認をどちらに任せるか
host は、1つの名前・1つの種別を1台のサーバーに問い合わせ、結果を短い文で返す軽いコマンドです。DNSViz は、ルートから対象のドメインまでの委任と DNSSEC の署名のつながりをまとめて検査し、図とエラーの一覧で示す診断ツールです。個々の値の確認や繰り返しの監視は host、鍵と DS の対応や委任全体の整合性の判断は DNSViz、と役割を分けると、DNSSEC の導入や DNS 事業者の移転を安全に進めやすくなります。この記事では、両者の違いを整理したうえで、作業の段階ごとにどちらで何を確かめるかを説明します。
2つのツールの違い
| 観点 | host | DNSViz |
|---|---|---|
| 調べる単位 | 1つの名前・1つの種別・1台のサーバー | 名前とその上位のゾーン全体 |
| DNSSEC | DS や DNSKEY を表示できるが、検証はしない | 署名・鍵・DS の対応を検証する |
| 出力 | 短い文(-v で詳しい形式) |
ゾーンのつながりの図、エラー・警告の一覧、JSON |
| 実行場所 | 手元の端末やサーバー | Web 版、または自分の環境で CLI 版 |
| 向いている使い方 | すばやい確認、スクリプトでの監視 | 変更作業の前後の診断、不具合の原因探し |
host は ISC の BIND に付属するコマンドで、dig と同じパッケージに入っています。DNSViz は Web 版(dnsviz.net)のほか、オープンソースのコマンドライン版があり、Python のパッケージとして導入できます。
大事なのは、host は「そのサーバーが何を返したか」しか教えてくれない、という点です。DS と DNSKEY を別々に表示できても、両者が正しく対応しているか、署名の期限が切れていないかは判断しません。逆に DNSViz は全体を検査できる反面、1回の解析に時間がかかり、短い間隔で何度も実行する用途には向きません。
host で確かめること
権威サーバーの間で内容がそろっているか
host -C example.com
-C を付けると、ドメインのすべての権威サーバーに SOA を問い合わせて並べます。シリアル番号がそろっていれば、同じ内容のゾーンが配られていると判断できます。DNS 事業者の移転中や、セカンダリサーバーを使っている構成で、1台だけ古いままになっていないかをすばやく確認できます。
親ゾーンに DS が登録されているか
host -t DS example.com
DS は親ゾーン(.com や .jp など)に置かれるレコードで、レジストラ経由で登録します。結果には、キータグ・アルゴリズム番号・ダイジェストの種類・ダイジェスト値が並びます。DNS 事業者の管理画面に表示されている DS の値と見比べ、登録漏れや古い DS の残りが無いかを確かめます。
各権威サーバーが同じ鍵を公開しているか
host -t DNSKEY example.com ns1.example.net
host -t DNSKEY example.com ns2.example.net
DNSKEY のフラグの値が 257 のものが鍵署名鍵(KSK)、256 のものがゾーン署名鍵(ZSK)として使われるのが一般的です。権威サーバーごとに公開している鍵が違うと、問い合わせが当たったサーバーによって検証が成功したり失敗したりします。鍵のキータグ(DS の先頭の数値と対応する番号)を見たいときは、dig DNSKEY example.com +multi を使うと、各鍵の横に番号が表示されます。
検証を行うキャッシュサーバーで失敗していないか
host www.example.com 1.1.1.1
DNSSEC の検証を行う公開 DNS に問い合わせて、SERVFAIL が返らないかを確かめます。host は検証の理由までは表示しないので、失敗していることがわかったら DNSViz に切り替えます。
DNSViz で確かめること
DNSViz では、host で個別に見ていた値がつながっているかを、まとめて判断します。
- 親ゾーンの DS が、子ゾーンに実在する DNSKEY を指しているか
- その鍵で、ゾーン内のレコードの署名(RRSIG)が検証できるか
- 署名の有効期間が切れていないか、切れそうになっていないか
- 存在しない名前への応答(NSEC や NSEC3 による否定の証明)が正しく作られているか
- すべての権威サーバーが応答し、同じ内容を返しているか
図ではゾーンが上から順に並び、親の DS と子の DNSKEY が線で結ばれます。検証に失敗する状態(bogus)が表示された場合は、DNSSEC を検証するキャッシュサーバーで名前解決ができなくなっている、深刻な状態です。警告は運用上の注意で、すぐに名前解決が止まるとは限りません。権威サーバーの応答の仕方(TCP や EDNS への対応など)について警告が出ることもあります。
画面の表示や凡例は更新で変わることがあります。ここでの説明は執筆時点(2026年10月現在)の一般的な構成にもとづきます。
作業の段階ごとの使い分け
DNSSEC を有効にするとき
- DNS 事業者の管理画面で署名を有効にしたら、host で各権威サーバーに DNSKEY を問い合わせ、すべてのサーバーが鍵を公開しているかを確かめます
- この段階で DNSViz を実行すると、ゾーンは署名されているものの、親に DS が無いため「署名していない状態(insecure)」として表示されます。これは想定どおりです
- レジストラで DS を登録したら、
host -t DSで親ゾーンに反映されたかを確かめます。キャッシュの影響で、反映が見えるまで時間がかかることがあります - 最後に DNSViz で解析し、DS から DNSKEY、署名までのつながりが検証できる状態になったことを確認します
DS の登録は、鍵が全権威サーバーで公開されてからにするのが基本です。順番を逆にすると、DS が指す鍵が見つからない状態になり、検証するキャッシュサーバーで名前解決が失敗します。
DNSSEC を使ったまま DNS 事業者を移転するとき
移転先の事業者では鍵が新しく作られるため、何もしないと親ゾーンの DS が古い鍵を指したままになります。進め方は事業者ごとに違い、いったん DS を削除して DNSSEC を外してから移る方法や、両方の事業者の鍵を一時的に公開して切り替える方法があります。どの方法を取るかは、移転元と移転先の事業者の案内で確認してください。
どの方法でも、各段階で次の確認を繰り返します。
host -Cで、親ゾーンが案内する権威サーバーがすべて応答し、SOA がそろっているかhost -t DSで、親ゾーンの DS が想定どおり(削除済み、または新しい鍵を含む)になっているか- DNSViz で、検証に失敗する状態になっていないか
作業前の DNSViz の結果を画像で保存しておくと、問題が起きたときに比較できます。
鍵の更新(ロールオーバー)のとき
KSK を更新するときは、新しい鍵の公開、DS の差し替え、古い鍵の削除という段階を踏みます。各段階で host -t DNSKEY と host -t DS で値を確かめ、DNSViz で新しい DS と鍵がつながっていることを確認してから次に進みます。各段階の間は TTL の分だけ待つ必要があるため、事業者の自動更新を使っている場合は、その案内に示された手順と時間に従います。
日常の監視には host を使う
変更作業のないときは、host をスクリプトに組み込んで、異常に早く気づけるようにしておくと安心です。
#!/bin/sh
# DS の有無と、全権威サーバーの SOA を記録する例(表示形式は版で確認)
zone=example.com
if host -t DS "$zone" | grep -q 'has DS record'; then
echo "$(date '+%F %T') DS: あり"
else
echo "$(date '+%F %T') DS: 見つからない"
fi
host -C "$zone" | grep 'SOA'
cron で実行してログに残しておけば、DS が意図せず消えた、1台の権威サーバーだけ古い、といった変化を追えます。異常が見つかったら、その時点で DNSViz を実行して原因を調べます。署名の期限切れを事前に見つけたい場合は、DNSViz の CLI 版を定期的に実行するか、DNSSEC に対応した外部の監視サービスの利用も検討してください。
まとめ
- host は個々の値を1行で確かめる道具、DNSViz は委任と DNSSEC のつながりを検査する道具です。
- host では
-Cで全権威サーバーの SOA、-t DSで親ゾーンの DS、-t DNSKEYで各サーバーの鍵を確認します。 - 鍵と DS の対応、署名の期限、否定の証明、サーバー間の食い違いの判断は DNSViz に任せます。
- DNSSEC の導入では、鍵の公開を確かめてから DS を登録し、最後に DNSViz でつながりを確認します。
- 移転や鍵の更新は事業者の案内に従い、各段階で host と DNSViz の確認を繰り返します。
- 日常の監視は host をスクリプトで実行し、異常があれば DNSViz で詳しく調べます。