[Pdns-users] Version 4.x split horizon
Daniel Miller
dmiller at amfes.com
Mon Aug 7 20:37:47 UTC 2017
I've had a long-running v3 recursor that I just migrated to v4.0. I was
using a Lua script, specifically the preresolve function, to implement
split-horizon functionality. This worked great - but the new syntax for
v4.x threw me for a bit.
I've got it working now - and in a far simpler and more elegant script
which I really appreciate. My whole script is now:
lanDomains = newDS()
lanDomains:add(dofile("/etc/powerdns/lanDomains"))
function preresolve(dq)
if(dq.qtype==pdns.A and lanDomains:check(dq.qname)) then
dq:addAnswer(pdns.A,"192.168.0.4")
return true
end
return false
end
and the "lanDomains" file looks like:
return{
"internaldomain1",
"internaldomain2",
<...>
}
I love it - simple, and an easy way to update with any changes. It so
happens that I'm re-directing everything to the same address - but I
could easily adapt to handle multiple internal servers. This works
because all internal clients use this recursor and have no need to know
the external IP - and any external queries go to the authoritative
server and aren't affected by the recursor. As far as I know - this is
the correct PowerDNS way to implement this. But...
Logically - it seems to me I could/should accomplish the same thing by
using the preoutquery() function. Functionally - that turns out not to
be the case (I tried using identical code, just changed the name from
preresolve()). So - am I misunderstanding the role of preoutquery()?
--
Daniel
More information about the Pdns-users
mailing list