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