Назад | Перейти на главную страницу

Не могу понять, как начать работу со сценарием lua powerdns-recursor

У меня есть сервер (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)