> What I still need to test is if this script actually works and what will
> happen if the followupFunction also returns NXDOMAIN, if it hit the Lua
> script again then nothing else is needed, else I’ll need to add more logic to
> keep going with a chopOff() until the zone’s ‘root' wildcard record is found.
>> Otherwise, as you suggested yourself, dnsdist is very powerful. (You
>> definitely don't want to use a recursor as your authoritative server though)
>>
I’ve since tried dnsdist and it can only spoof requests, not answers. So now
I’m having a go at using a recursor in front of the authoritative server to see
if I can get things working that way and this seems promising, if it weren’t
for a weird error message I can’t make any sense of.
> Maybe if I add some examples:
>
> 1.2.3.4.5.6.e164.arpa. NAPTR “some text with sip call routing info: AAA”
> *.4.5.6.e164.arpa. NAPTR “some different sip call routing info: BBB”
>
> A query for 9.9.9.4.5.6.e164.arpa. will result in BBB
> A query for 1.2.3.4.5.6.e164.arpa. yields AAA
> A query for 3.3.3.4.5.6.e164.arpa. yields NXDOMAIN
>
> The above is all according to RFC and expected PowerDNS behaviour.
My pdns-recursor Lua script:
-- nxdomain runs after no result is found.
function nxdomain(dq)
dquery = newDN(dq.qname:toString())
pdnslog("nxdomain called for: "..dquery:toString())
if dq.qtype == pdns.NAPTR then
pdnslog("Search parent wildcard record")
if dquery:countLabels() == 12 then
dquery:chopOff()
end
if dquery:countLabels() > 9 then
dquery:chopOff()
end
cname = dquery:toString()
pdnslog("Returning CNAME for: "..cname)
dq.addAnswer(pdns.CNAME, cname)
dq.rcode = 0 -- make it a normal answer
dq.followupFunction = "followCNAMERecords"
return true
end
return false
end
The issue is the addAnswer line, it takes at least 2 parameters according to:
https://doc.powerdns.com/recursor/lua-scripting/dq.html
:addAnswer(type, content[, ttl, name])
But I keep getting this in the precursor logs, what on earth is the last line
on about?! I can’t find anything related to this online:
Jun 10 01:19:09 web08.ixbru.ipnexia.com pdns_recursor[1662087]: nxdomain called
for: 3.1.1.0.0.5.6.7.8.9.e164.arpa.
Jun 10 01:19:09 web08.ixbru.ipnexia.com pdns_recursor[1662087]: Search parent
wildcard record
Jun 10 01:19:09 web08.ixbru.ipnexia.com pdns_recursor[1662087]: Returning CNAME
for: 1.0.0.5.6.7.8.9.e164.arpa.
Jun 10 01:19:09 web08.ixbru.ipnexia.com pdns_recursor[1662087]: STL error
(3.1.1.0.0.5.6.7.8.9.e164.arpa/NAPTR from 10.*.*.*:46622): [string "chunk"]:27:
Unable to convert parameter from number to PN12RecursorLua411DNSQuestionE
Line 27 refers to `dq.addAnswer(pdns.CNAME, cname)`, is this a bug?
_______________________________________________
Pdns-users mailing list
Pdns-users@mailman.powerdns.com
https://mailman.powerdns.com/mailman/listinfo/pdns-users