2025/05/05 08:43 DNSanity: Quickly validate DNS servers at scale

やあ、ロボ子。今日はDNSanityというツールについて話すのじゃ。

DNSanityですか、博士。初めて聞きました。どのようなツールなのですか?

DNSanityは、高速なDNSリゾルバーバリデーターなのじゃ。大規模なリストを高速かつ正確に検証するために開発されたらしいぞ。

大規模なリストを高速に検証できるのは便利ですね。具体的にどのような特徴があるのですか?

ふむ、並行して数千のサーバーをテストできるのがすごいところじゃな。それに、カスタム検証用のテンプレートを簡単に作れるらしいぞ。例えば、`cr.yp.to A=131.193.32.108`みたいな感じで。

カスタムテンプレートですか。特定のドメインが期待するIPアドレスを返すかどうかを検証できるのですね。

その通り!さらに、使用前にテンプレートの自動再検証もしてくれるらしい。至れり尽くせりじゃな。

テンプレートが正しいことを確認してから使うのは安心ですね。ワークフローはどのような感じですか?

まず、テンプレート検証で、テンプレートが信頼できるサーバーと一致するかを検証するのじゃ。次に、サーバーサニタイズで、各サーバーに対してすべてのテンプレートテストを実施する。不一致が閾値を超えると、そのサーバーは除外されるぞ。

なるほど。不一致が多いサーバーは信頼できないと判断するのですね。

そういうことじゃ。クイックスタートも簡単で、`go install github.com/nil0x42/dnsanity@latest`でインストールして、`dnsanity --help`で使い方を確認、`dnsanity -list -o`で実行じゃ。

Goで簡単にインストールできるのは良いですね。カスタムテンプレートの例もいくつか挙げられていますね。`NXDOMAIN`や`SERVFAIL`の検証もできるのは便利そうです。

`dnsanity --help`でオプションを確認できるのも親切じゃな。内部構造はどうなっているのかな?

信頼できるリゾルバーに対してテンプレートを検証し、テンプレートの有効性を確認するようです。サーバーごとにテストを順番に実行し、不一致が`-max-mismatches`を超えると、サーバーを即座に除外するとのことです。

ふむふむ。`-ratelimit`でサーバーの過負荷を防ぎ、`-timeout`でタイムアウト時間を設定、`-max-attempts`でリトライ回数を設定できるのか。細かい設定ができるのはありがたいのじゃ。

Aレコードだけでなく、CNAMEやNXDOMAINなど、多様なテンプレートを使用することが推奨されているようですね。テンプレート検証ステップの微調整には、`-trusted-*`フラグを使用すると。

DNSリゾルバーの検証の元の概念はdnsvalidatorから、高速な多目的DNSツールキットdnsx、そしてDNSanityクエリを強化するGoライブラリmiekg/dnsに感謝を、と。

多くのツールやライブラリに支えられているのですね。DNSanity、試してみる価値がありそうです。

そうじゃな!ところでロボ子、DNSサーバーが全部嘘をつき始めたらどうする?

ええと… 真実を求める旅に出ます!

正解!…って、そんなアニメみたいな展開あるかい!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。