1. djbdns/tinydns/data-check
について、ここに記述してください。
djbdns (D. J. Bernstein作)
tinydns-data checker python で書かれています。
1.1. 機能の説明
データ読みこみ時の検査、仕事
- fqdn, IP アドレスの形式検査、整形 RR の重複 RR set 内のレコードの TTL が一致していること
読みこみ後の検査
- SOA レコード一覧作成と検査 zone は NS レコードをもつこと ゾーンに所属しないラベルの指摘 (NS, MX, PTR, CNAME, A について) CNAME 関連の検査
- CNAME とおなじラベルがないこと zone 内を指す CNAME はそのラベルを持つレコードが存在すること。 CNAME の値は CNAME ラベルでないこと (NS, MX, PTR の値は CNAME ラベルでないこと)
- ゾーン内の名前を指す場合には additional A が存在すること NS, MX 値は CNAME ラベルではないこと レコードと additional A との TTL の整合性 TTL が短かすぎないこと(1 日未満は警告)
- ゾーン内の名前を指す場合には 対応する A が存在すること
参考のために出力する資源レコードの種類は引数で指定できます。 警告はつねに出力されます。 (ソースも保持しているので、警告と一緒に出力すべきでしょう。)
ゾーン外の名前を使っているものは [OB] マークがつきます。
NS レコード情報の出力指定があった場合、 NS レコードで使われる名前に対する A レコードは NS レコードと 一緒に出力して、A 単独では出力しない。
ゾーンはラベルに一番近い SOA を探しますので、 親子関係にあるゾーンを一台の tinydns で受けもつ場合の検査もできるはずです。 構造: tinydns-data checker は三つに分かれている。
- tdch.py は zone データを検査する部分 tdread.py は tinydns-data 用のファイルを読みこんで、zone にしまう部分 zone.py はデータを整形、保存する部分です。
zone データを取り出す部分は mapping type に直接アクセスしています。 bind データファイルや、DNS 検索して得たデータも zone に格納すれば tdch が使えるでしょう。
今後: 上位サーバとの整合性のチェックなども欲しいか。 別プログラムになるでしょうけど。
警告がでなくなったあとでよいが、整形した結果を出力する機能もほしい。
- A レコード出力時に逆引きレコードの存在を確認して、 同一行で出力する、など
2003-01-28 前野年紀