DNS用ロードバランサのdnsdistを試してみた
自鯖のメール用サブドメインにgdnsdを使ってGSLB動作をさせているのだが、
gdnsdではDNSクエリを取れない為、
ロギング用として前段にnginxのUDPリバースプロキシを噛ます構成を取っている。
ちょっと前に「dnsdistならUDPリバプロ動作をさせつつDNSクエリを取れる」と聞いた為、
休みを使って少しだけテストしてみた。
………
まだ、機能評価レベルの事しか出来ていないのだが、
バックエンドに権威DNSを置いた状態で前段にdnsdistを噛ましてみた所、
dnsdist単体でDNSクエリログを取得ができた。
ただし、取得出来たのは問い合わせしたFQDNとレコードタイプのみだった。
Aレコードなどは取得出来ない為、使える所は限られるのだが、
管理外のDNSを聞きに来ているDNSクライアントの監査などには使う事が出来ると思う。
ちなみに、dnsdist単体でのログ取得は下記の様な設定で取得出来た。
newServer({address=”127.0.0.1:53″, pool=”local”) addACL(“0.0.0.0/0”) addAction(AllRule(), LogAction(“/var/log/dnsdist/query.log”, false, true, false)) |
※ うろ覚えなのと、セキュリティ度外視なのであしからず
この場合、次の様な簡単なログ取得となる。
このレベルのロギングで要件を満たせるなら、dnsdist単体でログ取得まで行うと構成がシンプルになる。
Packet from 127.0.0.1:53922 for www.ns-lab.org. A with id 26116 |
未検証の機能としては、dnstapによるログ出力にも対応しているので、
fstrmを使ってより詳細なログを取得出来る筈だが、まだ未検証なのでそのうちテストしたい所。
あと、dnsdist本来の使い方となるロードバランシングも細かい挙動を把握出来ていない (´・ω・`)
まだまだUDPリバプロには頑張って貰う必要があるが、今年中にはdnsdistへの入れ替えしたいと思う。