0

我正在为 PowerDNS 编写 lua 脚本。

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

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

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

有任何想法吗?

4

1 回答 1

0

从 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

于 2017-11-13T10:49:25.337 回答