V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
peasant
V2EX  ›  分享发现

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

  •  1
     
  •   peasant · 40 天前 · 1040 次点击
    这是一个创建于 40 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 的下划线应该也不会改,这下没得玩了,除非阿里云修改生成鉴权链接的方式。

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

    刚开始怎么生成 label 都不解析,人都麻了,最后发现是 AccessKeyID 添加了但没启用,人更麻了。。
    peasant
        8
    peasant  
    OP
       13 天前   ❤️ 1
    @Puteulanus AdguardTeam/dnsproxy 更新了 0.73.0 支持主机名有下划线了 AdguardHome 的源代码 9 月 10 号更新了引用 dnsproxy 0.73.0 版本 但是还没有发布新版本,自己编译的已经可以正常使用了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1024 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 19:27 · PVG 03:27 · LAX 12:27 · JFK 15:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.