1. kresd/lib/layer/iteration
Contents
1.1. 返答処理試案
DNS/返答の処理 : DNS/1/RCODE
DNS/返答/DJB RCODE NXDOMAINは分けて考えていい。
1.2. NXDomain (RCODE)
NXDOMAINが一種類、NoError返答が四種類だ。
- Authority Section にSOAレコードがひとつある。NSは無視する。
1.3. NoError aa off
NoError返答のうちのひとつはdelegationでaa offのはずだ。
- Authority Section にNSレコードがある。SOAはない。
hintsからの返事がここに含まれるのかもしれない。 -- ToshinoriMaeno 2016-05-02 23:13:16
仮の処置としてはaa on にしておいた。--> module/hints/hints.c
1.4. NoError aa on
Answer Section がない場合:NODATA と呼ばれる。--> Nagative Caching
- Authority Section にSOAレコードがひとつある。NSはないはず。
1.5. Answer Section
Answer Sectionがある場合: 二種類ある。(aa on ?)
- query name は CNAME であった。照会名を変えて、続行する必要がある。
- query name, query type に適合する返答があった。
- 適合する返答(RRSet)を受け取る。
Authoriy Sectionがついている(NSレコードなどがある)場合でも、無視すべきである。
- 毒の可能性がある。
2. resolve
answer section を処理する前にauthorityを調べている意味が分からない。
- authority section を見る理由がなにかあるらしいのだが。
aa==1でも返答の内容(NXDomain, NoError)によってはAuthorityを処理する必要がある。
DJBも言っているように、返答の種類を判別するのは面倒だ。
3. process_authority
process_authorityをちょっと書きなおしてみた。
NXDomain: AA offのときだけ、DNS/1/delegationを処理するのが正しい。
NoErrorではAA on を確認して、authority (SOA) を処理する。
4. delegation
検査不十分な気がする。 ownerが一致していることを見ていなかったので、追加してみた。
不整合を発見したら、その場で打ち切り。
-- ToshinoriMaeno 2016-04-29 02:57:11
- それにしても、ownerの検査などがupdate_cutにあるのは気持ち悪い。
- 入力パラメタは使う側で全部検査するという立場なのか。大変だな。
コンパイラの入力検査の話を思い出させる。-- ToshinoriMaeno 2016-04-30 05:46:27
どこでどういう検査をするかというのは、全体の構造が見えていないと、決めるのはむずかしい。
- つまり、このプログラムを書いたひとはそれが見えていないのだろうと想像してしまう。
NXDOMAINに付随するSOAの処理がおかしい。
- finalize_answerでAuthority Sectionをkr_rrarray_addしているのは 毒を飲んでいるようなもの。
-- ToshinoriMaeno 2016-04-29 05:05:44
5. co.jp
おかしな動き。
[plan] plan 'co.jp.' type 'A' kr_zonecut_find_cached cojp kr_zonecut_find_cached jp [resl] ns_fetch_cut ret 0 [resl] NT check; cojp cut jp [resl] peekpkt cojp ret -116 [resl] zone_cut_check -> ns_fetch_cut = 0 [resl] => querying: '203.119.40.1' score: 11 zone cut: 'jp.' m12n: 'Co.JP.' type: 'A' [iter] AA terminate resolution chain [iter] <= rcode: NOERROR [iter] <= finalize NXD/NODATA [ rc ] stash auth answer [ pc ] => pktcache_stash entry [ pc ] => pktcache_stash NXDOMAIN [ pc ] => pktcache_stash answer [ pc ] => answer cached for TTL=900 [resl] <= server: '203.119.40.1' rtt: 6 ms [resl] finished: 4, queries: 1, mempool: 32800 B [plan] plan 'co.jp.' type 'A' [ pc ] => satisfied from cache [iter] AA terminate resolution chain [iter] <= rcode: NOERROR [iter] <= finalize NXD/NODATA [ pc ] => pktcache_stash entry [resl] finished: 4, queries: 1, mempool: 32800 B