MoinQ:

1. DNS/実装/ゾーンサーバ

1.1. 単独のゾーンをサービスする

ひとつだけのゾーンをサービスするゾーンサーバでも考えておく必要があることがたくさんある。

DNS/RFC/1912

参考:../リゾルバー ../リゾルバー計画 (長音記号の使い方が一貫していない。ごめん)

/zone.py

DNS/実装/python/dnslib/ゾーンサーバー と重複している。

1.2. ゾーンファイルの検査

DNS/実装/ゾーンファイルがRFCの制約に従っているかを検査しておく必要がある。/zone.py

1.3. queryの検査

python/dnslibを利用しての実装

qnameは自ドメイン管理下の名前であること。(それ以外には答えない)

1.4. 返答作成

ゾーンサーバの返す返答 (DJBの分類では5種類だ)

正当な形式のqueryに対しては、以下の場合の返答があり得る。

  1. 存在が確認できた名前
    1. qtypeが一致するレコードがある。(Answerあり)
      • Authority Section, Additional Sectionは付けない。(minimum responseの原則)
    2. qtypeと一致するレコードがない。
      1. CNAMEレコードがある。(qtype はCNAMEではない。)(CNAME 返答)
      1. CNAMEではない。名前の存在は確認できた。qtypeレコードは存在しない。(/NoData返答)

  2. delegation 検査
    • 問い合わせ名のsuffixを持つzone cutが存在する。(referral返答/delegation)
      • delegation返答 aa=0 (問い合わせ名の末尾に対応するNSレコードがある)
  3. wildcard 検査 (qnameに一致する名前はなかった)
    • 問い合わせ名のsuffixを持つwildcard名が存在するか。/wildcard

      • 面倒な割に益が小さいので、当面はこの程度でお茶を濁す。(自分では使わない)
  4. 存在しない名前である。(ENTでもない。/NXDomain返答

1.5. データ構造

これらの確認が簡単にできるようなデータ構造にするには?

1.5.1. ゾーンデータのためのデータ構造

名前が存在しないことを確認するのが意外に面倒だということです。(NXDomain)

1.6. 名前が存在しない

これが問題になるのはwild cardレコードが設定されている場合だが、

NXDomainを返答する必要がある。

-- ToshinoriMaeno 2016-07-29 04:43:53

../リゾルバー