1. DNS/返答/NoData返答
/cloudflare /上位参照返答 /理由 /疑似ENT /返答のばらつき /返答例 |
Contents
../否定返答として分類されるが、RCODEは0(NOERROR)であり、NoDataというRCODEはない。
問い合せ名、タイプに一致する資源レコードはなかった。
他のタイプの資源レコードは存在する可能性がある。(ENTかもしれない。)
2. 返答例
毒盛対策として../NXDOMAIN返答が利用できることを示すために 存在しないだろうドメイン名を問い合わせてみたところ、大部分はNXDOMAINを返すのだが、予想より noerror(NoData)返答を返すサーバが多い
ことに気づいた。(なんらかの/理由はあるのだろう)
- ゾーンに権威をもつサーバといえども、本来の意味のNXDOMAINを確認するのはひと手間かかる。
そこで、NoDataを返すのだろう。
このNoData返答にもSOAレコードがあるなら、NS返答の毒見に使えることは変わらない。
- RFCにはSOAを付けることが求められていうるのに、ないものもある。
3. 結論
DNS/RFC/2308 第3節にある。
- ゾーンに権威のあるサーバからの返答の場合(AA on)には:
NoData返答はAnswer Sectionが空で、Authority SectionにはSOAを含む。(MUST)
SOAがなくて、NSがあるものはreferral返答ということになるのだが。(形式的に判定)
その他については規定されていない。(Authority SectionにNSなど)
ここの形式に従っていない返答も見られるがそれらを分析する必要がある。
- NSなどSOA以外のものがあるかは今後の調査に。そして、それらを受けとった側がどう処理しているかも。
最近はIPv4/v6 dual stackホストで問題を起こすらしい。
NoDataとNXDOMAINをどう使い分けるのか、はっきり理解できていない。
- RCODEが異なることははっきりしているのだが、サーバーがどちらの意味で返答しているのか。
3.1. RFC 2308
DNS/RFC/2308 Abstract より
This document addresses issues raise in the light of experience and replaces [RFC1034 Section 4.3.4].
https://tools.ietf.org/html/rfc2308
3.2. 用語など
"NODATA" - a pseudo RCODE which indicates that the name is valid, for the given class, but are no records of the given type. A NODATA response has to be inferred from the answer.
(問い合せ)名は正当(ゾーン内に存在する)だが、問い合せタイプに合致するレコードは存在しないことを示す。
valid というのが、どういうものを指すのかは曖昧だ(-- ToshinoriMaeno 2015-05-06 09:05:12)
http://www.rfc-editor.org/rfc/rfc2308.txt
2.2 - No Data
- RCODE はNOERRORだ。 (この段階の説明では、ゾーンに権威のあるサーバーからの返事とは限らない。)
NODATA is indicated by an answer with the RCODE set to NOERROR and no relevant answers in the answer section. The authority section will contain an SOA record, or there will be no NS records there.
注意:
CNAME and SIG records may exist in the answer section.
tinydns で NODATA を返すべきときに NXDOMAIN を返すような気がする。 なぜだろう。
- 問い合せのsubdomainが存在するかどうかの検査をさぼったのか。
-- ToshinoriMaeno 2015-05-04 11:39:19
以下の部分がDJBが批判しているところか。
NODATA responses have to be algorithmically determined from the response's contents as there is no RCODE value to indicate NODATA. In some cases to determine with certainty that NODATA is the correct response it can be necessary to send another query.
3.3. NODATA返答の構成
NXDomainとはちがって、Authority sectionにはSOAは必須ではない。(権威ではない場合)
- NSレコードもないだろう。でも付けてもよさそうな書き方。
権威サーバからの返事は後述(NSなし、SOAをつけろ)
NODATA responses can be categorised into three types by the contents of the authority section. These are shown below along with a referral for comparison.
三種類もあるらしいが。(authority sectionの内容で区別)referral は含めないで。
TYPE 1
- SOA + NS
TYPE 2
- SOA だけ
TYPE 3 (すべて空の返事)はなんのつもりか。
REFERRAL
- NS だけ
answer sectionにCNAMEがあってもよい。(追認)
- in which case it would be the value of the last CNAME
- (the QNAME) for which NODATA would be concluded.
こういう記述があることで、このRFCが古いことが分かる。-- ToshinoriMaeno 2017-10-03 01:38:03
4. 権威サーバとしての返事
TYPE 2 NODATAを使え。
the authority section contains a SOA record and no NS records.
NSレコードがあるとreferralと混同するから、という理由らしいが、 それがよかったのだろうか。
4.1. NODATA の判別
DJBの批判はこちらかもしれない。
-- ToshinoriMaeno 2015-05-06 09:28:38
リゾルバーでの扱いもおかしいのかも。
2.2.1 - Special Handling of No Data There are a large number of resolvers currently in existence that fail to correctly detect and process all forms of NODATA response. Some resolvers treat a TYPE 1 NODATA response as a referral. To alleviate this problem it is recommended that servers that are authoritative for the NODATA response only send TYPE 2 NODATA responses, that is the authority section contains a SOA record and no NS records. Sending a TYPE 1 NODATA response from a non-authoritative server to one of these resolvers will only result in an unnecessary query. If a server is listed as a FORWARDER for another resolver it may also be necessary to disable the sending of TYPE 1 NODATA response for non-authoritative NODATA responses.
5. Authoritative Servers からの返答
3 - Negative Answers from Authoritative Servers
Name servers authoritative for a zone MUST include the SOA record of the zone in the authority section of the response when reporting an NXDOMAIN or indicating that no data of the requested type exists. This is required so that the response may be cached.
SOAレコードの他にNSレコードがあったら、どう扱うべきか。(毒見の観点から) -- ToshinoriMaeno 2017-10-02 14:15:02