DNS応答コード(RCODE)とは?NXDOMAIN・SERVFAIL・NOERRORの意味を理解する

目次
DNS応答コード(RCODE)とは?DNSエラーの意味を理解する
DNSを運用していると、名前解決に失敗することがあります。
その際、DNSサーバは単純に「失敗しました」と返すのではなく、失敗理由を応答コード(RCODE)として返しています。
例えば、存在しないドメインを問い合わせた場合と、DNSサーバ自身に障害が発生している場合では原因が異なります。
この違いを判断するために利用されるのがDNS応答コードです。
本記事では、DNS応答コードの種類や意味、トラブルシューティングでの活用方法について解説します。
DNS応答コードとは
DNS応答コード(Response Code:RCODE)とは、DNSサーバが問い合わせ結果を表すために返すステータスコードです。
DNSパケットのヘッダ内に含まれています。
クライアントはこの値を見て、問い合わせが成功したのか、失敗したのか、その理由は何なのかを判断します。
代表的なRCODE一覧
| コード | 名称 | 意味 |
|---|---|---|
| 0 | NOERROR | 正常終了 |
| 1 | FORMERR | 問い合わせ形式エラー |
| 2 | SERVFAIL | サーバ内部エラー |
| 3 | NXDOMAIN | ドメインが存在しない |
| 4 | NOTIMP | 未実装 |
| 5 | REFUSED | 問い合わせ拒否 |
NOERROR
NOERRORは最も一般的な応答です。
名前解決が正常に完了したことを意味します。
www.example.com
↓
93.184.216.34DNSサーバは正常なIPアドレスを返します。
NXDOMAIN
NXDOMAINは「そのドメインは存在しません」という意味です。
例えば次の問い合わせです。
aaaabbbbcccc.example.comDNSサーバに該当レコードが存在しない場合、NXDOMAINが返されます。
利用者の入力ミスやレコード未登録が原因で発生することが多いエラーです。
SERVFAIL
SERVFAILはDNSサーバ側で問題が発生したことを示します。
例えば次のようなケースです。
- 権威DNSサーバへ到達できない
- DNSSEC検証失敗
- ゾーン情報取得失敗
- 内部エラー
NXDOMAINと混同しやすいですが意味は大きく異なります。
SERVFAILは「存在するか分からない」、NXDOMAINは「存在しない」です。
REFUSED
REFUSEDはDNSサーバが問い合わせを拒否した場合に返されます。
例えばBINDで再帰問い合わせを許可していない場合です。
allow-recursion { none; };許可されていないクライアントから問い合わせるとREFUSEDになります。
FORMERR
FORMERRはDNSパケットの形式が不正な場合に返されます。
通常の運用ではあまり見かけません。
独自実装のDNSクライアントや古い機器との通信時に発生することがあります。
NOTIMP
NOTIMPは問い合わせ内容に対応していない場合に返されます。
例えばサーバが特定のDNS機能を実装していない場合です。
現代のDNSサーバではあまり見かけません。
NXDOMAINとSERVFAILの違い
実務ではこの2つを区別できることが重要です。
| 項目 | NXDOMAIN | SERVFAIL |
|---|---|---|
| 意味 | 存在しない | 確認できない |
| 原因 | 未登録 | DNS障害 |
| 対処 | レコード確認 | DNSサーバ調査 |
digコマンドで確認する
DNS応答コードはdigコマンドで確認できます。
dig www.example.com
結果の例です。
;; ->>HEADER<<- opcode: QUERY, status: NOERROR
statusの部分がRCODEです。NXDOMAINの例
dig aaaabbbbcccc.example.com
結果です。
status: NXDOMAIN
ドメインが存在しないことを示しています。Wiresharkで確認する
Wiresharkでも確認できます。
フィルタです。
dns
応答パケット内にRCODEが表示されます。
DNSトラブル調査時には非常に役立ちます。
DNSサーバ運用で重要な理由
DNS障害が発生した場合、RCODEを確認することで原因を絞り込めます。
例えば次のように判断できます。
- NXDOMAIN → レコード未登録
- SERVFAIL → DNS障害
- REFUSED → アクセス制御
応答コードを理解していると調査時間を大幅に短縮できます。
BINDログとの関係
BINDではログとRCODEを組み合わせて確認します。
特にSERVFAILが頻発している場合は、権威DNSサーバとの通信やDNSSEC関連を調査する必要があります。
クラウドDNSでも重要
Route53、Cloudflare DNS、Google Cloud DNSなどでも同様のRCODEが利用されています。
クラウド環境でもDNSトラブル調査の基本となる知識です。
まとめ
DNS応答コード(RCODE)は、DNS問い合わせ結果を示す重要な情報です。
特にNOERROR、NXDOMAIN、SERVFAIL、REFUSEDは実務で頻繁に遭遇します。
NXDOMAINは「存在しない」、SERVFAILは「障害により確認できない」という違いを理解しておくことが重要です。
digコマンドやWiresharkを利用してRCODEを確認できるようになると、DNSトラブルの切り分けが大幅に容易になります。






