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
我正在为 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 的字段。
一,您可以通过从
中获取值来使用原始查询 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