== DNS/毒盛/対策/SOA/キャッシュ == <> NXDomainあるいはNoData返答を前提にしている。  Authority SectionにSOAレコードがひとつある。 == SOAから分かること == ownerは問い合わせた名前qname(ドメイン名)にたいするqtypeレコードが 存在しないことを保証するzoneの根元のノード名である。 (例) a.b.c.d.jp を JP NSに問い合わせて、NXDomain返答が返り、 JP SOA ... というレコードがあったとする。 これにより、d.jp というゾーンはjp下には存在しないことが分かる。  同様にa.b.c.d.jp, b.c.d.jp, c.d.jp も存在しない。   なぜなら、d.jpがゾーンでなくて、c.d.jpがゾーンであれば、    NXDOMAIN返答ではなく、c.d.jpへの委譲返答が返るはずだから。 -- ToshinoriMaeno <> == SOA レコードを毒見に利用する == SOAレコードをキャッシュするときに、否定返答を返した問い合わせ名も一緒に 保存しておく。 委譲返答が得られた場合には、その返答を返したzone cutのSOAレコードを調べる。 1. SOAがなければ、毒ではないとする。(問い合わせ直すのがよい) 2. SOAを返したときのquery name と委譲返答を返しているquery nameを比較する。 {{{     NXDOMAIN SOAのqname : nonexist.co.jp     referral返答のqname : jprs.co.jp }}} この場合は毒ではないと判定する。 {{{     NXDOMAIN SOAのqname : nonexist.co.jp     referral返答のqname : co.jp }}}  この場合は毒である。 -- ToshinoriMaeno <> == キャッシュ容量 == Kaminsky流攻撃を考慮すると、問い合わせ名をそのまま残した形で保存するのでは、 キャッシュ容量を簡単に越えてしまいそうだ。圧縮のための工夫が必要だ。  qname minimisationと組み合わせるといいか。label数次第か。 -- ToshinoriMaeno <> 毒盛被害の大きさを考えるとownerの直下のサブドメインのゾーン不在を記録するだけでも いいかもしれない。とすると、qname minimisation型で十分か。w  ゾーン不在が記録されているドメイン名に対するdelegation毒を排除する機能は追加する。 なんだか、PSLに似てきていないか。 :-) https://publicsuffix.org/list/