[dnsdist] Handling auth and recursive queries

Chris lists at shthead.net
Mon Dec 12 03:42:47 UTC 2016


Hi all,

I am looking at using dnsdist in my environment.

Currently my environment in each location is:

3 physical servers
Each physical server runs 3 different PowerDNS auth instances (one is 
for our own domains, one is for customers with shared hosting and one is 
for customers with only dns hosting).
Each physical server also runs a PowerDNS recursor instance.

I currently manage distributing traffic using BGP - load balancing is 
taken care of by equal cost multipath and failover is provided by 
running a health check to ensure the servers are up and withdrawing 
routes if they are down.

This all works great but I would like to start using dnsdist. The setup 
I am planning for is:

3 physical servers running esxi
Each physical server running 3 VM's - dnsdist, PowerDNS auth and 
PowerDNS recursor
dnsdist has the public IP's on it, use BGP to manage load 
balancing/failover for traffic destined to dnsdist.
dnsdist to manage the load balancing/failover for traffic destined to 
PowerDNS auth and caching.

What I would like to to do is run an instance of dnsdist with a config 
like this:

newServer({address="10.254.1.10", pool="dnscache"})
newServer({address="10.254.1.11", pool="dnscache"})
newServer({address="10.254.1.12", pool="dnscache"})
newServer({address="10.254.1.20", pool="dnsauth-internal"})
newServer({address="10.254.1.21", pool="dnsauth-internal"})
newServer({address="10.254.1.22", pool="dnsauth-internal"})
newServer({address="10.254.1.30", pool="dnsauth-shared"})
newServer({address="10.254.1.31", pool="dnsauth-shared"})
newServer({address="10.254.1.32", pool="dnsauth-shared"})
newServer({address="10.254.1.40", pool="dnsauth-dnshosting"})
newServer({address="10.254.1.41", pool="dnsauth-dnshosting"})
newServer({address="10.254.1.42", pool="dnsauth-dnshosting"})

The part I am stuck on is it does not appear to be possible to direct 
queries to certain IP's to certain pools. As an example, my caching 
resolver IP's are 10.254.1.1, 10.254.1.2. I use addLocal like this:

addLocal("10.254.1.1:53")
addLocal("10.254.1.2:53")

I want to direct all queries destined to those two IP's to the dnscache 
pool. I want to do the same thing for the other "addLocal" IP's as well, 
queries to the IP's for our own domains should go to pool 
dnsauth-internal, queries for the IP's for shared hosting should go to 
pool dnsauth-shared etc. Is this possible with dnsdist? I can see how I 
can do it based on filtering the domains but at the scale I am using 
this it isn't really possible for me, the dnsauth-shared pool for 
example has over 2M domains, dnsauth-dnshosting has over 4M domains and 
there are very frequent changes to the domains for these.

If not my other option is running 4 seperate dnsdist instances, but I 
wanted to try and avoid that if possible to keep things simple.

Thanks


More information about the dnsdist mailing list