= djbdns/tinydns/data-check = について、ここに記述してください。 djbdns (D. J. Bernstein作) tinydns-data checker python で書かれています。 == 機能の説明 == データ読みこみ時の検査、仕事 fqdn, IP アドレスの形式検査、整形 RR の重複 RR set 内のレコードの TTL が一致していること 読みこみ後の検査 SOA レコード一覧作成と検査 zone は NS レコードをもつこと ゾーンに所属しないラベルの指摘 (NS, MX, PTR, CNAME, A について) CNAME 関連の検査 CNAME とおなじラベルがないこと zone 内を指す CNAME はそのラベルを持つレコードが存在すること。 CNAME の値は CNAME ラベルでないこと (NS, MX, PTR の値は CNAME ラベルでないこと) NS レコード、MX レコード ゾーン内の名前を指す場合には additional A が存在すること NS, MX 値は CNAME ラベルではないこと レコードと additional A との TTL の整合性 TTL が短かすぎないこと(1 日未満は警告) PTR レコード ゾーン内の名前を指す場合には 対応する 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 前野年紀