偶然发现阿里官方说可以在 AdGuardHome 中设置 DoH 鉴权模式,然后我就被坑了

40 天前
 peasant

AdGuard Home 如何设置阿里公共 DNS 服务器

Imgur

按照官方文档中的说明,我生成了一个链接,但是当我把这个链接放到 AdGuard Home 里测试上游的时候无论如何都提示不能使用。

最初我以为是我生成链接的方法哪里设置错了,又或者官网里还有什么设置需要修改,折腾好一会儿没有结果,于是联系客服,客服表示需要专员来解释这个问题,就帮我提了个工单。

等待过程中又试了几次,然后发现测试的时候报错信息和别的上游报错信息不一样,填写生成的链接提示的是第几行无法使用,别的会提示服务器 xxx 无法使用。

于是我怀疑是不是生成的链接主机名部分太长了,有 63 位,删减一部分发现提示变了,再逐个增加长度,发现都加到一样长了提示还是和原来不一样,然后就注意到了生成链接绕不开的 AccessKeyID 有个下划线(_)。

然后我去问了下 chatgpt 域名里有下划线有没有什么影响,得到以下回答:

DNS 标准的限制
根据 RFC 1035 ,DNS 中的主机名(即标签)必须遵循以下规则:

只能包含字母( A-Z ,a-z )、数字( 0-9 )和连字符(-)。
连字符不能在标签的开头或结尾出现。
标签的长度必须在 1 到 63 个字符之间。
由于下划线 _ 不符合这些标准,所以它不能用于域名的主机名中。

又搜索了一下,IBM 网站里写了下面这段。
因特网标准要求域名符合因特网官方协议标准 RFC 952 和 RFC 1123 中描述的主机名要求。 域名必须仅包含字母(大写或小写)和数字。 域名中还可以包含短划线字符(-),但是它不得位于域名末尾。 不支持在主机名中使用下划线字符(_)。

这下貌似无解了,AdGuardHome 应该不会为了这个去改程序代码,阿里云这个 AccessKeyID 的下划线应该也不会改,这下没得玩了,除非阿里云修改生成鉴权链接的方式。

1041 次点击
所在节点    分享发现
8 条回复
totoro625
40 天前
配置文件是否有误?
控制台提示:AccessKey 是使用 SDK 和 JsonAPI 接入方式鉴权的密钥****( DoH/DoT 接入流量不支持鉴权)。
totoro625
40 天前
@totoro625 #1 PS:是产品文档是否有误?
peasant
40 天前
@totoro625 产品文档无误,通过浏览器直接访问生成的链接是可以查询域名的,改动主机名部分就查询不到,说明生成的结果是正确的,只是 AdGuardHome 不支持上游 DNS 主机名里带有下划线。
Puteulanus
40 天前
试了一下,AdguardTeam/dnsproxy 也不支持域名里有下划线的,那估计是无解了
硬要用可能只能自己中间搭个反代啥的
它这个时间戳有效期一天也挺麻烦
peasant
40 天前
@Puteulanus 阿里那边刚才说说 RFC2181 明确说明域名可以有下划线, 他们跟 AdGuardHome 提了 PR ,如果未来一周 AdGuardHome 没有修复这个问题,他们会修改 URL 。
peasant
40 天前
@Puteulanus 我刚看了下 AdGuardHome 的 api ,有获取 DNS 设置和修改 DNS 设置接口,一天有效期这个问题可以在装 AdGuardHome 的机器上弄个定时任务,每天夜里重新生成一个链接然后用 api 替换一下就行了。
Puteulanus
40 天前
@peasant 生成 label 试了一下,这个鉴权 DoH 居然可以在网页上的 DoH 开关关闭的情况下工作,感觉这应该是防盗刷的最佳实践了

刚开始怎么生成 label 都不解析,人都麻了,最后发现是 AccessKeyID 添加了但没启用,人更麻了。。
peasant
13 天前
@Puteulanus AdguardTeam/dnsproxy 更新了 0.73.0 支持主机名有下划线了 AdguardHome 的源代码 9 月 10 号更新了引用 dnsproxy 0.73.0 版本 但是还没有发布新版本,自己编译的已经可以正常使用了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1065562

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX