Сценарий pdns-recursor lua preresolve не работает должным образом - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь заставить pnds-recursor преобразовывать имя хоста в другую запись A, когда запрос поступает из внутренней сети (так как тогда он будет маршрутизироваться через VPN).

Для этого я ' Мы настроили скрипт LUA, который реализует функцию предварительного разрешения:

pdnslog("pdns-recursor Lua script starting!", pdns.loglevels.Warning)

function preresolve(dq)
    if dq.qtype == pdns.A
    then
        if dq.qname:equal("<host.to.resolve>")
        then
            dq.rcode=0 -- make it a normal answer
            netMask = newNMG()
            netMask:addMask("172.28.0.0/14")
            netMask:addMask("xxxx:xxx:5:f1:0:0:0:0/64")
            if netMask:match(dq.remoteaddr)
            then
                dq:addAnswer(pdns.A, "<internal IP>")
            else
                dq:addAnswer(pdns.A, "<public IP>")
            end
            return true
        end
  end
  return false
end

Теперь странная вещь: для некоторых клиентов, которые приходят из 192.168.23.x, это работает, для других он возвращает внутренний IP, хотя удаленный IP-адрес клиента не входит в указанные выше диапазоны.

Кто-нибудь знает, почему он не работает должным образом?

Спасибо

1 Ответ

0 голосов
/ 20 марта 2020

Хорошо, действительно, опция

disable-packetcache=yes

в recursor.conf добилась цели. На всякий случай, если у кого-то еще есть подобная проблема.

...