※ 2022 年 6 月 2 日現在の情報をもとに作成しています
1. はじめに
本記事では、Umbrella の DNS サーバー (208.67.222.222/208.67.220.220) における Extended DNS Errors の対応状況について紹介します。
2. Extended DNS Errors とは
Extended DNS Errors とは、以下の公開文書で規定されている DNS のエラーに関する追加情報を返す新しい方法です。
Extended DNS Errors
https://datatracker.ietf.org/doc/html/rfc8914
これまでの DNS では、名前解決などに失敗した際、DNS レスポンスに含まれる Response Code (RCODE) を見て、どのような問題が発生したかを推測していました。
具体的には、RCODE には SERVFAIL (Server Failure) や REFUSED (Query Refused) といった問い合わせの失敗を示す値があり、SEVFAIL の場合、DNSSEC 検証に問題があったのか?または問い合わせ先のサーバーに他の問題があったのか?などと推量することしかできませんでした。
このような状況を改善すべく、DNS レスポンスに追加情報を含めるための方法として Extended DNS Errors が登場しました。
Extended DNS Errors は RCODE の種類に関係なく用いられ、各種 DNS サーバーが DNS レスポンスの EDNS0 拡張領域に「エラーの種類を示すコードやエラーの内容を示すテキスト情報」などを必要に応じて追記します。
実際にどのようなコードが用意されているかについては、前述の RFC を参照してください。
3. Umbrella の対応状況
以下のサポート文書の Supported Error Codes の表に記載があるとおり、Extended DNS Errors の一部のコードについて対応しています。
Support for Extended DNS Errors
https://support.umbrella.com/hc/en-us/articles/360048060772-Support-for-Extended-DNS-Errors
例えば、dig コマンドで DNSSEC 検証に失敗する架空のドメイン (dnssec-failed.example.com) の名前解決を Umbrella の DNSサーバーに対して行った例を見てみると、OPT=15: 00 06 ("..") という記載が見られます。
$ dig dnssec-failed.example.com @208.67.222.222
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 30119
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; OPT=15: 00 06 ("..")
;; QUESTION SECTION:
;dnssec-failed.example.com. IN A
;; Query time: 1239 msec
;; SERVER: 208.67.222.222#53(208.67.222.222)
;; WHEN: Thu Jun 02 19:10:52 JST 2022
;; MSG SIZE rcvd: 52
この OPT=15 の「15」というコードは、ENDS0 拡張領域で Extended DNS Errors 用に使われるものです。
(参考) Domain Name System (DNS) Parameters - DNS EDNS0 Option Codes (OPT)
https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-11
また、「06」は Extended DNS Errors のコードで、DNSSEC Bogus (DNSSEC 検証エラー) を意味します。なお、現時点においては、その後にエラー内容を示すテキスト情報は含まれません。