DigiLoog

PC関係の事なら何でもいけるそんな処

DNS用ロードバランサのdnsdistを試してみた

2019年03月02日(土) - 22:45 | カテゴリ: Linux

自鯖のメール用サブドメインに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”)
local = newNMG()
local:addMask(“127.0.0.1/32”)

addACL(“0.0.0.0/0”)
addLocal(“127.0.0.1:10053”)

addAction(AllRule(), LogAction(“/var/log/dnsdist/query.log”, false, true, false))
addAction(NetmaskGroupRule(local), PoolAction(“local”))
addAction(AllRule(), RCodeAction(dnsdist.REFUSED))

※ うろ覚えなのと、セキュリティ度外視なのであしからず

この場合、次の様な簡単なログ取得となる。
このレベルのロギングで要件を満たせるなら、dnsdist単体でログ取得まで行うと構成がシンプルになる。

Packet from 127.0.0.1:53922 for www.ns-lab.org. A with id 26116

未検証の機能としては、dnstapによるログ出力にも対応しているので、
fstrmを使ってより詳細なログを取得出来る筈だが、まだ未検証なのでそのうちテストしたい所。
あと、dnsdist本来の使い方となるロードバランシングも細かい挙動を把握出来ていない (´・ω・`)

まだまだUDPリバプロには頑張って貰う必要があるが、今年中にはdnsdistへの入れ替えしたいと思う。





  • 応援中

    はじめるセカイの理想論 -goodbye world index-