当查询来自内部网络时,我试图让 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 不在上面指定的范围内。
任何人都知道为什么它没有按预期工作?
谢谢