[当查询来自内部网络时,我试图使pnds-recursor将主机名解析为另一个A记录(因为这将通过VPN进行路由)。
为此,我设置了一个实现预解析功能的LUA脚本:
pdnslog("pdns-recursor Lua script starting!", pdns.loglevels.Warning)
function preresolve(dq)
if dq.qtype == pdns.A
then
if dq.qname:equal("<host.to.resolve>")
then
dq.rcode=0 -- make it a normal answer
netMask = newNMG()
netMask:addMask("172.28.0.0/14")
netMask:addMask("xxxx:xxx:5:f1:0:0:0:0/64")
if netMask:match(dq.remoteaddr)
then
dq:addAnswer(pdns.A, "<internal IP>")
else
dq:addAnswer(pdns.A, "<public IP>")
end
return true
end
end
return false
end
现在很奇怪:对于来自192.168.23.x的某些客户端,它可以正常工作;对于其他客户端,它返回内部IP,尽管客户端的远程IP不在上述指定范围内。
任何人都有线索,为什么它没有按预期工作?
谢谢
确定,确实是选项
disable-packetcache=yes
在recursor.conf中做到了。以防万一别人有类似的问题。