按照官方文档中的说明,我生成了一个链接,但是当我把这个链接放到 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 的下划线应该也不会改,这下没得玩了,除非阿里云修改生成鉴权链接的方式。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.