web-dev-qa-db-ja.com

PowerDNSでのDNSクエリの追跡

数百のゾーンを処理するためにPowerDNSサーバーをセットアップすることを検討しています。各ゾーンの「使用状況」を追跡して記録したいと思います。つまり、各ゾーンに対する1日あたりのクエリ数です。

これを実現する方法について、ドキュメントやGoogleで詳細を見つけることができませんでした。私はPowerDNSに慣れていませんが、カスタムPipeBackendが必要だと思いますか? PipeBackendsは、未解決のクエリに加えて、または未解決のクエリに対してのみ、標準のMySQLバックエンドを置き換えますか?

2
Kevin

PowerDNSは現在これを行うことができません。 dsc のように、pcapを介して統計を実行できる外部ツールがあります。

このためのカスタム(パイプ)バックエンドを作成する場合は、mysql-backendを置き換える必要があります。powerdnsに、あるバックエンドから別のバックエンドに結果をフィードするように指示することはできません。 「パイプバックエンド」は、その意味で少し混乱しているかもしれません。

バックエンド(カスタムバックエンドであろうと、mysqlクエリログであろうと)から行う統計は、PowerDNS内の(オプションですが推奨される)パケットキャッシュとクエリキャッシュによって歪められることに注意してください。

したがって、今は dsc のようなものを使用することをお勧めします。

4
Habbie

パイプバックエンドの質問について:

すべてのバックエンドは、launchステートメントで指定された順序でクエリを実行します。バックエンドがクエリに一致するデータで応答するとすぐに、残りのすべてのバックエンドはそれ以上尋ねられなくなります。したがって、統計を生成するためだけで、事前に何も応答しないパイプバックエンドを配置すると、PowerDNSがパケットキャッシュとクエリキャッシュから応答できたものを除いて、ネームサーバーへのすべてのクエリをキャッチします。

2
ZaphodB

おそらく最良のオプションは、PowerDNSキャッシュオプション(パケットキャッシュとクエリキャッシュ)の前にLUAフックを追加することです。このようにして、ロギング用のLUAスクリプトを作成し、バックエンドにクエリに応答させることができます。このようにして、(優れたパフォーマンスのために)キャッシュを使用し、応答にテスト済みのバックエンド(gmysql)を使用できます。システムの速度が大幅に低下した場合にロギングを停止するコードを含めることもできます。

私が正しければ、キャッシュの直後にすでにLUAフックがあります。あなたが探しているもののためにそしてまたレート制限のために(それが必要なとき)。

1
MarkS