当前,当查询失败时,我们返回一个 "server misbehaving" 错误。RFC 8914 允许解析器包含有关 DNS 查询失败的详细错误信息。在纯 Go 解析器中支持它是很好的。我们已经支持了 EDNS(0) ,所以添加它应该相当容易。唯一让我不确定的是 EDE 选项中的可选 EXTRA-TEXT 字段,将其包含在错误中是很好的,但它可以是任意的 UTF-8 字符串。我们可能不应该在错误字符串中包含任意字符。不确定这一点。CC @mjl- (#63116 (评论))
"server misbehaving"
EDNS(0)
EXTRA-TEXT
uajslkp61#
要查看此操作的效果,请尝试 dig dnssec-failed.org @1.1.1.1 、 dig dnssec-failed.org @8.8.8.8 或 dig dnssec-failed.org @127.0.0.1 与启用了 ede 的本地安装的 unbound 进行对抗:
dig dnssec-failed.org @1.1.1.1
dig dnssec-failed.org @8.8.8.8
dig dnssec-failed.org @127.0.0.1
# cat /etc/unbound/unbound.conf.d/ede.conf server: ede: yes val-log-level: 2
我对这个很感兴趣,因为这是需要一个支持 dnssec 的非验证存根解析器包的一部分。也许 #13279 也应该参与其中。至于错误信息,它可以以 "error from remote: ..." 为前缀,如果认为是危险的,我们可以仅显示非控制字符和纯文本字符串。
vs91vp4v2#
也许可以使用自定义错误类型与errors.As一起使用,并将额外的文本作为不包含在默认Error()字符串中的字段?
errors.As
Error()
ibps3vxo3#
我对这个很感兴趣,因为需要一个支持DNSSEC的非验证存根解析器包。也许#13279应该参与其中。您能详细说明一下您的使用场景吗?对于导出的扩展DNS错误类型,您的使用场景是什么?为什么需要#13279?您对AD位访问感兴趣吗?
1tuwyuhd4#
你能详细说明一下你在这个场景下的用例吗?对于导出的扩展DNS错误类型,你的用例是什么?为什么需要#13279,你对AD位访问感兴趣吗?
我正在为我的邮件服务器(mox)添加对(出站)DANE和TLS-RPT的支持。对于TLS报告,我需要能够解释为什么通过SMTP的投递尝试失败。其中一个原因就是:"dnssec-invalid":这表示递归解析器没有返回有效的记录。
参考:https://datatracker.ietf.org/doc/html/rfc8460#section-4.3.2.1 我认为这种情况是来自没有AD位的解析器的响应。同时,也适用于一些EDE代码(关于失败的dnssec)的servfail,但不是全部(错误代码的最后三分之一)。所以,我也需要"authentic data"位。我还需要一个LookupTLSA函数(其他人可能还需要更多的查找函数,例如sshfp、smimea等)。
我已经开始根据github.com/miekg/dns原型化一个解析器,该解析器在每个Lookup函数中添加一个"authentic data"布尔返回值。虽然我开始认为将其更改为结构体可能会更好,以便在未来添加额外的结果字段。在某个时候,我希望对解析器有更多的控制权(但这已经偏离了主题,所以请忽略):
pvabu6sv5#
我正在为我的邮件服务器(mox)添加对(出站)DANE和TLS-RPT的支持。对于TLS报告,我需要能够说明为什么通过SMTP的投递尝试失败。其中一个原因是:"dnssec-invalid":这表示递归解析器没有返回有效的记录。当dnssec-invalid应该在DNSSEC上返回时?在LookupHost(A/AAAA)、LookupMX或TLSA记录查询失败时。所以是的,我还需要"authentic data"位。我还需要一个LookupTLSA函数(其他人还会想要更多的查找功能,例如sshfp、smimea等)。我开始根据github.com/miekg/dns原型化一个解析器,该解析器为每个Lookup函数添加一个"authentic data"布尔返回值。尽管我开始认为将其更改为结构体可能更好,以便将来可以添加其他结果字段。.我认为我们永远不会添加LookupTLSA(参见#35061)。
dnssec-invalid
DNSSEC
这可以通过适当的DNS解析器和查询A/AAAA资源来解决。LookupHost需要支持主机文件,因为我们模拟getaddrinfo。
另外请注意,现在#59943已经损坏了。我也希望有一个完整的dnssec验证缓存递归解析器作为Go包。
vfh0ocws6#
https://go.dev/cl/530876提到了这个问题:net: report detailed DNS errors with Extended DNS Errors
net: report detailed DNS errors with Extended DNS Errors
ruoxqz4g7#
@ianlancetaylor@neild
7条答案
按热度按时间uajslkp61#
要查看此操作的效果,请尝试
dig dnssec-failed.org @1.1.1.1
、dig dnssec-failed.org @8.8.8.8
或dig dnssec-failed.org @127.0.0.1
与启用了 ede 的本地安装的 unbound 进行对抗:我对这个很感兴趣,因为这是需要一个支持 dnssec 的非验证存根解析器包的一部分。也许 #13279 也应该参与其中。
至于错误信息,它可以以 "error from remote: ..." 为前缀,如果认为是危险的,我们可以仅显示非控制字符和纯文本字符串。
vs91vp4v2#
也许可以使用自定义错误类型与
errors.As
一起使用,并将额外的文本作为不包含在默认Error()
字符串中的字段?ibps3vxo3#
我对这个很感兴趣,因为需要一个支持DNSSEC的非验证存根解析器包。也许#13279应该参与其中。
您能详细说明一下您的使用场景吗?对于导出的扩展DNS错误类型,您的使用场景是什么?为什么需要#13279?您对AD位访问感兴趣吗?
1tuwyuhd4#
你能详细说明一下你在这个场景下的用例吗?对于导出的扩展DNS错误类型,你的用例是什么?为什么需要#13279,你对AD位访问感兴趣吗?
我正在为我的邮件服务器(mox)添加对(出站)DANE和TLS-RPT的支持。对于TLS报告,我需要能够解释为什么通过SMTP的投递尝试失败。其中一个原因就是:"dnssec-invalid":这表示递归解析器没有返回有效的记录。
参考:https://datatracker.ietf.org/doc/html/rfc8460#section-4.3.2.1 我认为这种情况是来自没有AD位的解析器的响应。同时,也适用于一些EDE代码(关于失败的dnssec)的servfail,但不是全部(错误代码的最后三分之一)。所以,我也需要"authentic data"位。我还需要一个LookupTLSA函数(其他人可能还需要更多的查找函数,例如sshfp、smimea等)。
我已经开始根据github.com/miekg/dns原型化一个解析器,该解析器在每个Lookup函数中添加一个"authentic data"布尔返回值。虽然我开始认为将其更改为结构体可能会更好,以便在未来添加额外的结果字段。在某个时候,我希望对解析器有更多的控制权(但这已经偏离了主题,所以请忽略):
pvabu6sv5#
我正在为我的邮件服务器(mox)添加对(出站)DANE和TLS-RPT的支持。对于TLS报告,我需要能够说明为什么通过SMTP的投递尝试失败。其中一个原因是:
"dnssec-invalid":这表示递归解析器没有返回有效的记录。
当
dnssec-invalid
应该在DNSSEC
上返回时?在LookupHost(A/AAAA)、LookupMX或TLSA记录查询失败时。所以是的,我还需要"authentic data"位。我还需要一个LookupTLSA函数(其他人还会想要更多的查找功能,例如sshfp、smimea等)。我开始根据github.com/miekg/dns原型化一个解析器,该解析器为每个Lookup函数添加一个"authentic data"布尔返回值。尽管我开始认为将其更改为结构体可能更好,以便将来可以添加其他结果字段。.
我认为我们永远不会添加LookupTLSA(参见#35061)。
这可以通过适当的DNS解析器和查询A/AAAA资源来解决。LookupHost需要支持主机文件,因为我们模拟getaddrinfo。
另外请注意,现在#59943已经损坏了。
我也希望有一个完整的dnssec验证缓存递归解析器作为Go包。
13279(评论)
vfh0ocws6#
https://go.dev/cl/530876提到了这个问题:
net: report detailed DNS errors with Extended DNS Errors
ruoxqz4g7#
@ianlancetaylor@neild