当 DNS 返回 2001::1:一次"网页打不开"的三层排查实录

举报
yd_297054392 发表于 2026/11/01 03:35:27 2026/11/01
【摘要】 服务器上 *.workers.dev 打不通、手机却正常?按三层排查:dig 发现 2001::1 哨兵记录即 DNS 污染;用 DoH 拿真实 IP 加 curl --resolve 验证链路;代理修好仍失败时,检查本机"私有地址校验"是否把 2001::1 和 fake-ip 段 198.18.0.0/16 误当内网拦截。附复盘清单。

现象

某天凌晨,服务器上一段抓取脚本报错超时,目标是一个 *.workers.dev 域名。同一域名在手机流量下秒开,服务器上却怎么都打不通——TCP 连不上,TLS 握手都进不去。这台服务器常年挂代理出站,理论上不该有"打不开"的问题。

第一层:先确认是不是 DNS 的问题

拿到"打不开"三个字,先别动代理配置,用 dig 看解析结果:

$ dig AAAA xxx.workers.dev +short
2001::1

2001::1 是一个很典型的哨兵地址。它属于 IETF 保留的协议分配段,正常业务绝不会用它。国内部分网络环境下,被污染的域名会收到这类固定假记录——类似的还有 face:b00c::(Facebook 段)之类的哨兵。看到它,基本可以断定问题出在解析层,而不是路由层。

第二层:用真实地址验证链路

怀疑 DNS 之后,验证方法很简单:跳过解析,直接指定真实 IP 访问。

先用 DoH 拿干净记录:

$ curl -s 'https://1.1.1.1/dns-query?name=xxx.workers.dev&type=AAAA' -H 'accept: application/dns-json'

然后 curl --resolve 强行绑定:

$ curl -v --resolve xxx.workers.dev:443:<真实IPv6> https://xxx.workers.dev/

能通,说明链路和证书都正常,问题确实只在"本地解析"这一层。

第三层:修了 DNS 还是打不开?检查本机的安全层

这是这次排查里最坑的一步:把代理出站配好后(本机跑 mihomo,全局走代理),访问依然失败。抓包看,请求根本没出去——被本机一个带"私有地址校验"的组件拦了。

原因在于:2001::1 属于保留段,198.18.0.0/16 是 mihomo fake-ip 模式的默认网段,这两类地址在严格的"内网/保留地址检查"里都会被当成私有地址拒绝。也就是说,安全组件把哨兵地址和 fake-ip 段当成了内网地址,于是所有命中它们的请求都被静默拦截。

解决办法是把这些哨兵段显式加进信任/白名单(以我的场景为例,在安全组件的配置里加了 2001::1/128 和 198.18.0.0/16),让它不再按私有地址处理。

复盘清单

遇到"服务器打不开、手机正常",按这三层走一遍,基本不会迷路:

  1. 看解析:dig AAAA 出现 2001::1、face:b00c:: 这类哨兵地址 → DNS 污染,别查路由。
  2. 验链路:DoH 拿真实 IP + curl --resolve,通了就确认只剩解析问题。
  3. 查本机:代理修好还失败时,检查有没有本地安全层在做"私有地址校验"——2001::1、198.18.0.0/16(fake-ip 段)都要放行。

最后一点体会:DNS 污染的表象是"网络不通",但根因常常叠了两层——上游污染是一层,本机防御策略误伤是另一层。只修第一层的人会觉得"问题反复",把两层都看见,才算真正闭环。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。