PowerDNS 递归器中的 Lua CNAME 解析

PowerDNS 递归器提供了通过 Lua 实现后端的功能。当 Lua 脚本返回一个包含 CNAME 条目的记录集时,CNAME 将在未调用 Lua 脚本的情况下通过设置的外部 DNS 服务器进行解析,以解决记录。

以下是当前的处理过程:

  • 客户端:PowerDNS,请解析 example.com?
  • PowerDNS 调用 Lua 脚本,该脚本返回指向 anotherexample.com 的 CNAME。
  • PowerDNS 通过其配置的 DNS 服务器解析 anotherexample.com,而不再次调用 Lua 脚本。

在最后一步中,PowerDNS 理想情况下应在通过外部 DNS 服务器解析之前再次调用 Lua 脚本。

您可以使用以下 Lua 脚本重现此过程:

function postresolve(remoteip, domain, qtype, origrecords, origrcode)
    print("通过 Lua 解析。")
    return {content = "example.com", ttl = 60, qtype = 5 }
end

请注意,即使对于解析 example.com(即使这将导致无限循环),脚本也不会被再次调用。想法是能够重现问题。

是否可能通过 Lua 重新解析,如果可以,我缺少什么?

点赞