DNSトラブルシューティングにおいて dig コマンドは最も役立つ分析ツールの1つです。しかし、DNS障害の現場では「dig の応答をどう読むか」で問題の特定スピードが大きく変わります。
本記事では、dig の主要応答パターンをすべて解説し、原因・対処法・実務例まで一気に理解できる内容としてまとめました。この記事だけで、DNSの切り分けが圧倒的に早くなります。
■ dig の基本構造
まず、dig の応答は以下の4つを中心に読みます。
- status(応答ステータス)
- ANSWER SECTION(答え)
- AUTHORITY SECTION(権威DNS)
- ADDITIONAL SECTION(追加情報)
特に status は DNS の異常を判断する重要な要素です。
■ dig の主要ステータス一覧(必ず覚えるべき)
dig のステータスは DNS 障害の入口です。ここを見れば「どこに原因があるのか」が瞬時にわかります。
| ステータス | 意味 | 原因 | 対処法 |
|---|---|---|---|
| NOERROR | 正常(名前解決成功) | 特になし | ANSWER SECTION を確認する |
| NXDOMAIN | ドメインが存在しない | ゾーンなし/名前の typo/DNS不整合 | ゾーン・レコードの存在確認、スペル修正 |
| SERVFAIL | DNSサーバ内部エラー | フォワーダ障害/権威DNSが応答しない | フォワーダ確認/権威DNSの疎通確認 |
| REFUSED | DNSサーバが拒否 | ACL/recursion off/FWによる制限 | DNSの allow-query / recursion の設定確認 |
| FORMERR | フォーマットエラー | DNS問い合わせが不正 | クライアントの問い合わせ形式をチェック |
| NOTAUTH | 権威を持っていないゾーンに問い合わせた | ゾーン設定ミス | ゾーン委任設定を修正 |
| NOTZONE | ゾーン外の更新要求 | 更新対象がゾーン外 | 更新対象のゾーンを確認 |
■ ステータス別:実務で最も多いパターンと原因・解決方法
1. NOERROR(正常)
status: NOERROR
ANSWER SECTION に IP が返っていれば成功です。
ただし「NOERROR だが ANSWER が空」パターンがあるので注意。
;; ANSWER: 0
これは NODATA(レコードなし) と呼ばれ、以下の可能性があります。
- Aレコードが登録されていない
- 他のレコード(TXT, MX)はあるが A が無い
対処:DNSにレコードを追加する
2. NXDOMAIN(ドメインが存在しない)
実務で最も多い DNS のエラーです。
status: NXDOMAIN
主な原因
- ドメインのスペルミス
- ゾーンが消えている
- 権威DNSの設定ミス
- DNSSEC 失敗
対処
- ドメイン名のスペル再確認
- ゾーンファイルの存在確認
- DNSSEC を使用している場合は DSレコード確認
3. SERVFAIL(DNS内部エラー)
status: SERVFAIL
現場で非常に厄介なステータスです。原因は多岐にわたりますが、ほぼ以下のどれかです。
- フォワーダへの問い合わせ失敗
- 権威DNSが応答していない
- recursive DNS が内部エラー
- DNSSEC の失敗
チェックすべき順番(実務手順)
- 8.8.8.8 へ直接 dig → 成功する?
- 内部DNS への dig → 失敗する?
- 内部DNS のフォワーダ先を確認
- 権威DNS(NS)の疎通を確認
対処例
- フォワーダ設定を修正
- DNSSEC offにして切り分け
- named / bind のログ確認
4. REFUSED(問い合わせ拒否)
status: REFUSED
DNSサーバ側が 「その問い合わせには答えません」 と返す状態です。
主な原因
- allow-query が制限されている
- recursion off の DNS に外部から問い合わせしている
- ファイアウォールで拒否されている
対処
- DNSサーバ側の ACL を修正
- 内部向け recursive DNS を明確に分ける
- 53番の通信制御を確認
5. FORMERR(フォーマットエラー)
status: FORMERR
DNS問い合わせの形式がおかしいと判断された状態です。
原因
- クライアントの DNS ライブラリ不具合
- EDNSサイズの不整合
- 古いDNSサーバとの相性問題
対処
dig +noedns www.example.com
EDNSを無効化して症状が消える場合、DNSサーバ側の問題です。
6. NOTAUTH(権威を持たない)
status: NOTAUTH
権威を持っていない DNS に問い合わせた場合に発生します。
原因
- ゾーンの委任ミス
- 権威DNSの設定漏れ
対処:
- NSレコードの委任先が正しいか確認
- 権威DNSにゾーンが設定されているかチェック
7. その他の rare パターン(簡易まとめ)
- NOTZONE → ゾーン外のデータ更新要求
- YXDOMAIN → 既存ドメインに対する不正な要求
- YXRRSET → レコードの重複
これらはゾーン更新時に発生し、実務ではそれほど多くありません。
■ dig を使った実務的な切り分け手順
① 外部 DNS(GoogleDNS)で確認
dig www.google.com @8.8.8.8
これで成功する → 内部DNSが怪しい
② 内部DNSで確認
dig www.google.com @内部DNS
これが失敗 → フォワーダか DNSサーバ内部障害
③ 権威DNSへ直接問い合わせ
dig www.example.com @ns1.example.com
権威DNSが応答しない → SERVFAIL に直結
④ DNSSEC有無を確認
dig www.example.com +dnssec
DNSSEC失敗は NXDOMAIN や SERVFAIL として現れます。
■ 一覧でわかる:dig の応答 → 原因 → 対処の完全チャート
| dig応答 | 原因 | 対処 |
|---|---|---|
| NOERROR | 正常 | ANSWERを確認 |
| NXDOMAIN | ドメイン未登録/typo | レコード・ゾーン確認 |
| SERVFAIL | フォワーダ障害/権威DNS障害 | フォワーダ・権威DNSを確認 |
| REFUSED | ACLで拒否/recursion off | allow-query修正 |
| FORMERR | EDNS不具合/フォーマット不正 | +noednsで確認 |
| NOTAUTH | 権限のないDNSへ問い合わせ | NS委任修正 |
■ まとめ:digを理解すればDNSトラブルの90%は解決できる
- NXDOMAIN → ドメインが存在しない
- SERVFAIL → フォワーダ/権威DNS障害
- REFUSED → DNSサーバのポリシー拒否
- FORMERR → EDNSや問い合わせ形式の問題
- NOERROR(NODATA含む) → 答えが空かどうか確認
dig の応答パターンさえ理解すれば、DNS障害は最速で切り分けできるようになります。ぜひ現場で活用してください。


