У меня есть сервер (Ubuntu 12.04), куда я выполняю powerdns-recursor.
Я пытаюсь добавить некоторую логику к определенным запросам и иметь мой целевой набор на lua, пишущем сценарий для powerdns.
Я, кажется, не могу заставить это работать все же.
Я предполагаю/надеюсь, что версии recursor, который доступен в репозиториях человечности, скомпилировали поддержку 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
Что я пропускаю?
Удалите "назначение" из функции аргументы.
Из https://doc.powerdns.com/md/recursor/scripting/ preresolve () принимает только три аргумента
preresolve (remoteip, domain, qtype)