PowerDNS 脚本 - 获取 DNS 查询的唯一 ID

PowerDNS Scripting - Getting the DNS Query's Unique ID

我正在为 PowerDNS 编写 lua 脚本。

我希望在我的脚本拦截 DNS 查询时为每个 DNS 查询获得某种唯一 ID。

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

我看到在使用函数“ipfilter”时,我可以使用GetID()函数来获取DNS查询ID。 "preresolve" 和 "postresolve" 函数中缺少此功能。

有什么想法吗?

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

在版本 4 中,'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