1. DNS/リゾルバー/動作

リゾルバーの動作はバラバラ: /dnscache

/cf1111.tcpreplay.net /tkix.net

ひとつのリゾルバーの動作を理解(それも無理かと思うが)したところでDNSを分かったつもりになっても、 別のリゾルバーを使ってみれば別の動作をすることのに気付くだろう。

例えば、どういうNSがキャッシュされるか、など。

/qname-minimisation により、リゾルバーの動作は変わる。

DNS/gTLD/sharp/jp.sharp をどう扱うのがいいか。

Route53 のように乗取が実行しやすいサービスは注意が必要だ。

DNS/Cloudflare/リゾルバーでの対処

2. メッセージ

3. query

どこになにを問い合わせるか。それが問題だ。 qname minimisation

3.1. 受け入れ

基本はどんな問い合わせ(query)も受け入れる。(open resolverでなければ)

3.2. 送出

受け取った問い合わせに対して、返答するのに必要な情報はなにか。

/サーバへの問い合わせ 毒盛を困難にするための工夫も検討されている。

3.3. 返答

/サーバからの返答の受け入れ 検査するのはtransaction ID だけではない。

3.4. キャッシュ

/サーバからの返答のキャッシュ 原則は answer section のRRsetだけ, TTLの扱い

否定返答なども記録される。

3.5. 返答

/返答 キャッシュサーバが返すもの

/yatzの扱い

4. 基礎になる概念

/RRSetsの扱い 資源レコード集合

/RRSet中の資源レコードのTTL RFC2181 5.2.

/付加節のレコード

5. 毒盛対策

現在に実装は以下の原則を守っていない。

NXDomain/NoData返答中のSOAレコードから得られるzone cuts不在情報を使う。/委譲毒 排除

delegation返答を除いて、Authority/Additionl Sectionは信用しない。/移転毒 排除

delegation返答を得た場合には、Nonce付きの問い合わせ直しを行って、確認する。

-- ToshinoriMaeno 2017-02-08 19:40:08


6. 実装例

/実装例

MoinQ: DNS/リゾルバー/動作 (last edited 2021-06-05 01:26:28 by ToshinoriMaeno)