【问题标题】:pdns-recursor lua preresolve script not working properlypdns-recursor lua preresolve 脚本无法正常工作
【发布时间】:2020-07-01 08:24:01
【问题描述】:

当查询来自内部网络时,我正在尝试让 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 不在上面指定的范围内。

有人知道为什么它没有按预期工作吗?

谢谢

【问题讨论】:

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

标签: lua powerdns


【解决方案1】:

好的,确实是这个选项

disable-packetcache=yes

recursor.conf 中成功了。以防万一其他人遇到类似问题。

【讨论】:

    猜你喜欢
    • 2014-12-07
    • 2015-04-04
    • 1970-01-01
    • 2017-09-03
    • 2017-04-08
    • 1970-01-01
    • 2015-07-27
    • 2011-06-13
    • 1970-01-01
    相关资源
    最近更新 更多