我正在为PowerDNS编写lua脚本。
当我的脚本拦截DNS查询时,我希望为每个DNS查询获取某种唯一ID。
我使用" preresolve "拦截DNS查询和" postresolve "功能,他们没有任何唯一的ID,将代表它正在处理的当前DNS查询。
我看到使用函数" ipfilter "时,我可以使用GetID()函数来获取DNS查询ID。 " preresolve"中缺少此功能。和" postresolve"功能
有什么想法吗?
答案 0 :(得分:0)
从PDNS Recursor版本3.0升级到4.0后,我找到了答案。
在版本4中,'preresolve'和'postresolve'函数获取dq(DNSQuestion)对象, dq对象包含两个可以帮助查询ID的字段。
一,您可以通过从
获取值来使用原始查询IDdq: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