我有一台服务器(Ubuntu 12.04),我运行powerdns-recursor。
我正在尝试向某些请求添加一些逻辑,并将我的目标设置为 powerdns 的 lua 脚本。
但我似乎无法让它工作。
我猜想/希望 ubuntu 存储库中提供的递归器版本已编译了 lua 支持。我发现情况很可能如此,因为 liblua5.1-0 是该软件包的必需项。此外,当我重新加载 lua 脚本时,我似乎得到了合理的输出:
$ sudo rec_control reload-lua-script
ok, reload/unload queued
我已经创建了一个 lua 文件并设置了我的配置来加载它:
$ grep lua /etc/powerdns/recursor.conf
# lua-dns-script Filename containing an optional 'lua' script that will be used to modify dns answers
lua-dns-script=/etc/powerdns/script.lua
我添加了一个例子脚本添加到文件并重新加载服务器。
示例脚本为:
$ cat /etc/powerdns/script.lua
function preresolve ( ip, destination, domain, qtype )
if domain == "the.time."
then
d=os.date("\"%c\"")
ret={
{qtype="16", ttl=1, place="1", content=d},
}
if qtype == pdns.TXT
then
return 0, ret
else
return -1, {}
end
end
return -1, {}
end
function nxdomain ( ip, destination, domain, qtype )
return -1, {}
end
但是当我请求“the.time”记录时,我没有得到想要的结果:
$ nslookup -type=TXT the.time. 1.2.3.4
Server: 1.2.3.4
Address: 1.2.3.4#53
** server can't find the.time.: NXDOMAIN
我错过了什么?
答案1
从函数参数中删除“目标”。
从https://doc.powerdns.com/md/recursor/scripting/,preresolve() 仅接受三个参数
预解析(remoteip,域,qtype)