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

时间:2016-07-05 11:29:20

标签: lua dns powerdns

我正在为PowerDNS编写lua脚本。

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

我使用" preresolve "拦截DNS查询和" postresolve "功能,他们没有任何唯一的ID,将代表它正在处理的当前DNS查询。

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

有什么想法吗?

1 个答案:

答案 0 :(得分: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