PowerDNS 递归器提供通过 Lua 实现后端的功能。当 Lua 脚本返回一组包含 CNAME 条目的记录时,CNAME 将由已设置的外部 DNS 服务器解析,而在解析记录时未调用 Lua 脚本。
这是现在发生的过程:
- 客户: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 ("Resolving through Lua.")
return {content = "example.com", ttl = 60, qtype = 5 }
end
请注意脚本不会再次被调用来解析 example.com(即使这会以无限循环结束。这个想法是能够重现问题)。
是否可以通过 Lua 重新解决,如果可以,我错过了什么?