PowerDNS脚本 - 获取DNS查询的唯一标识符

我正在为PowerDNS编写lua脚本。

当我的脚本拦截DNS查询时,我希望获取某种唯一ID用于每个DNS查询。

我使用“preresolve”和“postresolve”函数拦截DNS查询,但它们没有任何唯一ID来表示当前处理的DNS查询。

我发现,当使用“ipfilter”函数时,可以使用GetID()函数获取DNS查询ID。 “preresolve”和“postresolve”函数缺少这种功能。

有什么想法吗?

点赞
用户2929627
用户2929627

在从PDNS Recursor 3.0升级到4.0版本后,我找到了答案。

在4.0版本中,“ preresolve”和“ postresolve”函数会获取dq(DNSQuestion)对象,dq对象包含两个字段,可以帮助查询ID。

一、您可以通过获取以下值来使用原始查询ID

dq:getDH():getID()

二、dq可能包含一个自定义的LUA对象引用,该引用在dq对象的整个生命周期内是持久的。

local data={}
data["domaindetails"]= dq.udpAnswer
dq.data=data

在他们的脚本手册中找到更多详细信息: https://doc.powerdns.com/md/recursor/scripting/#the-dnsquestion-dq-object

2017-11-13 10:49:25