Сценарии PowerDNS - получение уникального идентификатора DNS-запроса
Я пишу сценарии lua для PowerDNS.
Я хочу получить какой-то уникальный идентификатор для каждого DNS-запроса, когда мой скрипт перехватывает DNS-запрос.
Я перехватываю DNS-запросы с функциями " preresolve " и " postresolve ", и у них нет уникального идентификатора, который будет символизировать текущий DNS-запрос, который он обрабатывает.
Я видел, что при использовании функции " ipfilter " я могу использовать функцию GetID(), чтобы получить идентификатор запроса DNS. Эта способность отсутствует в функциях "preresolve" и "postresolve".
Есть идеи?
1 ответ
После обновления с PDNS Recursor версии 3.0 до 4.0 я нашел свой ответ.
В версии 4 функции preresolve и postresolve получают объект dq (DNSQuestion), а объект dq содержит два поля, которые могут помочь с идентификатором запроса.
Во-первых, вы можете использовать исходный идентификатор запроса, получив значение из
dq:getDH():getID()
Во-вторых, dq может содержать пользовательскую ссылку на объект LUA, которая является постоянной в течение всего времени существования объекта dq.
local data={}
data["domaindetails"]= dq.udpAnswer
dq.data=data
Более подробную информацию можно найти в их руководстве по созданию сценариев: https://doc.powerdns.com/md/recursor/scripting/.