2026年6月14日
2026年6月14日
nslookup と DNSViz の違いと使い分け|名前解決の確認と DNSSEC・委任の診断
nslookup は「この名前を引くと何が返るか」をその場で確かめるコマンド、DNSViz は「ルートからそのドメインまでの委任と DNSSEC の署名のつながりが正しいか」を解析して図で見せるツールです。日常の名前解決の確認は nslookup、SERVFAIL や DNSSEC の不具合が疑われるときは DNSViz、と役割がはっきり分かれます。この記事では、両者が見ているものの違いと、症状ごとにどちらから使うかを説明します。
2つのツールは見ている範囲が違う
nslookup は、指定した1台の DNS サーバーに問い合わせ、返ってきた答えを表示します。Windows、macOS、多くの Linux で使えるため、手元の環境ですぐ確かめたいときの第一候補です。ただし、表示されるのは「そのサーバーの答え」だけで、その答えがどういう経路で得られたか、署名が正しいかは見えません。
DNSViz は、ルートゾーンから TLD(.com や .jp など)、そして対象のドメインへと委任を順にたどり、各段階の NS、DS、DNSKEY、署名(RRSIG)を取得して整合性を検査します。結果は、ゾーン同士のつながりと鍵の関係を描いた図と、エラー・警告の一覧で示されます。Web 版(dnsviz.net)のほか、オープンソースのコマンドライン版もあります。
両者の違いを短く比べると次のとおりです。
| 観点 | nslookup | DNSViz |
|---|---|---|
| 主な用途 | 名前解決の結果を確認する | 委任と DNSSEC の整合性を診断する |
| 問い合わせ先 | 指定した1台(既定は OS の設定) | ルートから権威サーバーまで順に |
| DNSSEC | 検証結果は表示しない | 署名・鍵・DS の関係を検査する |
| 実行場所 | 手元の PC やサーバー | Web 上、または CLI 版を自分の環境で |
| 内部 DNS | 社内の DNS サーバーにも聞ける | 公開されているゾーンが対象 |
nslookup の基本と読み方
# OS に設定された DNS サーバーで引く
nslookup www.example.com
# レコード種別と問い合わせ先を指定する
nslookup -type=MX example.com
nslookup -type=TXT example.com 1.1.1.1
最初に表示される Server と Address は、問い合わせに使った DNS サーバーです。続く「Non-authoritative answer」(日本語版 Windows では「権限のない回答」)は、権威サーバーではなくキャッシュサーバーが答えた、という意味で、エラーではありません。
権威サーバーの答えを確かめたいときは、NS を調べてから、そのサーバーを指定します。
nslookup -type=NS example.com
nslookup www.example.com ns1.example.net
対話モードを使うと、続けていくつも問い合わせられます。set debug を入れると、応答のヘッダーや TTL まで表示されるので、キャッシュの残り時間を見たいときに役立ちます。
> server 8.8.8.8
> set type=A
> set debug
> www.example.com
Windows の nslookup でつまずきやすい点
Windows では、名前の末尾に接続先 DNS サフィックス(社内ドメイン名など)が自動で付けられ、意図しない名前を問い合わせることがあります。www.example.com. のように末尾にドットを付けると、その名前そのものを問い合わせます。
また、最初に DNS request timed out や Server: UnKnown と表示されることがあります。これは nslookup が起動時に DNS サーバー自身の名前を逆引きし、それに失敗しただけの場合が多く、続く回答が正しく表示されていれば問題ありません。
nslookup は OS の DNS キャッシュを使わずに直接問い合わせます。nslookup では新しい値が返るのにブラウザでは古いサイトが開く、という場合は、OS やブラウザ側のキャッシュが残っています。
DNSViz の基本と読み方
Web 版では、ドメイン名を入力して解析を実行します。過去に誰かが解析した結果が表示されることもあるので、解析日時を確認し、古ければ最新の状態で解析し直してください。画面のボタン名や配色、凡例は更新で変わることがあります。ここでの説明は執筆時点(2026年10月現在)の一般的な構成にもとづきます。
図は上から下へ、ルート、TLD、対象ドメインの順にゾーンが並び、各ゾーンの中に DNSKEY、親ゾーンとの間に DS が描かれます。読み方の要点は次の3つです。
- 各ゾーンの状態:署名のつながりが正しく検証できる状態か、DNSSEC を使っていない状態か、検証に失敗する状態か、が区別されて表示されます。検証に失敗する状態(bogus)は、検証を行うキャッシュサーバーでは名前解決ができなくなる深刻な状態です。
- DS と DNSKEY の対応:親ゾーンの DS が、子ゾーンのどの DNSKEY を指しているかが線でつながれます。DS が指す鍵が子ゾーンに存在しない場合、そこでつながりが切れます。
- エラーと警告の一覧:署名の期限切れ、権威サーバー間での応答の食い違い、応答しない権威サーバーなどが文章で示されます。警告は運用上の注意で、すぐに名前解決が止まるとは限りません。
DNSViz は DNSSEC を使っていないドメインでも、委任の不整合や応答しない権威サーバーの検出に使えます。
コマンドライン版
自分の環境から解析したい場合は、コマンドライン版を導入できます。Python のパッケージとして配布されており、図の出力には Graphviz が必要です。導入方法や依存関係は版によって変わることがあるので、公式のリポジトリの説明を確認してください。
# 解析結果を JSON に保存し、テキストで表示する
dnsviz probe example.com > example.com.json
dnsviz print -r example.com.json
# 図を画像で出力する
dnsviz graph -r example.com.json -T png -O
症状ごとの使い分け
名前が引けない、古い値が返る
まず nslookup で、OS に設定された DNS サーバーと公開 DNS の両方に問い合わせて比べます。どちらも同じ新しい値ならキャッシュの問題は手元側、公開 DNS だけ新しいなら利用中のキャッシュサーバーの TTL 待ち、と切り分けられます。この段階では DNSViz は不要です。
一部の環境だけ名前解決に失敗する(SERVFAIL)
DNSSEC の検証を行うキャッシュサーバーでは失敗し、行わないサーバーでは成功する、という症状は DNSSEC の不具合の典型です。nslookup では「サーバーで障害が発生した」旨のメッセージになるだけで、原因まではわかりません。ここで DNSViz を使い、どのゾーンのどの段階でつながりが切れているかを確認します。
Windows では PowerShell の Resolve-DnsName で、検証を無効にする指定を付けた問い合わせと比べる方法もあります。
Resolve-DnsName www.example.com -Server 1.1.1.1
Resolve-DnsName www.example.com -Server 1.1.1.1 -DnssecCd
検証を無効にしたときだけ答えが返るなら、DNSSEC が原因である可能性が高いです。
DNS 事業者の移転や鍵の更新の前後
DNSSEC を有効にしたまま DNS 事業者を移る場合や、鍵を更新する場合は、作業の前後で DNSViz を実行して、DS と DNSKEY の対応がつながっているかを確認します。作業前の状態を画像で保存しておくと、問題が起きたときに比較できます。DS の登録や削除はレジストラ側の操作が絡み、反映にも時間がかかるため、手順は事前に DNS 事業者とレジストラの案内で確認してください。
まとめ
- nslookup は1台のサーバーの答えを見るツール、DNSViz は委任と DNSSEC のつながりを診断するツールです。
- 「Non-authoritative answer」はエラーではなく、キャッシュサーバーの回答という意味です。
- Windows の nslookup では DNS サフィックスの付加に注意し、末尾にドットを付けると意図した名前を問い合わせられます。
- 一部の環境だけ SERVFAIL になる場合は DNSSEC を疑い、DNSViz でつながりが切れた箇所を探します。
- DNSSEC を使ったまま移転・鍵更新をするときは、前後で DNSViz の結果を比べます。