Сценарии 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/.

Другие вопросы по тегам