pdns递归程序或lua预解析脚本工作不正常

pdns递归程序或lua预解析脚本工作不正常,lua,powerdns,Lua,Powerdns,当查询来自内部网络时,我试图使PND递归或将主机名解析为不同的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.reso

当查询来自内部网络时,我试图使PND递归或将主机名解析为不同的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
pdnslog(“pdns递归或Lua脚本启动!”,pdns.loglevels.Warning)
函数预分解(dq)
如果dq.qtype==pdns.A
然后
如果dq.qname:equal(“”)
然后
dq.rcode=0——将其作为正常答案
netMask=newNMG()
网络掩码:添加掩码(“172.28.0.0/14”)
网络掩码:添加掩码(“xxxx:xxx:5:f1:0:0:0/64”)
如果网络掩码:匹配(dq.remoteaddr)
然后
dq:addAnswer(pdns.A,“”)
其他的
dq:addAnswer(pdns.A,“”)
结束
返回真值
结束
结束
返回错误
结束
现在奇怪的事情是:对于来自192.168.23.x的一些客户机,这是可行的,对于其他客户机,它返回内部IP,尽管客户机的远程IP不在上面指定的范围内

有人知道为什么它不能按预期工作吗

谢谢

好的,确实是这个选项

disable-packetcache=yes

在recursor.conf中实现了这个技巧。以防万一其他人也有类似的问题。

我想我找到了解决办法。这可能是缓存问题,当内部客户端请求IP时,recursor会将结果缓存一段时间。也许关闭数据包缓存会有所帮助。我会尝试,当它起作用时,我会确认。