域名被解析成 2001::1 哨兵地址?排查思路与 curl --resolve 绕过实测

举报
yd_297054392 发表于 2026/10/29 03:26:51 2026/10/29
【摘要】 访问失败先别怀疑网站挂了:AAAA 记录返回 2001::1 这类哨兵地址,多半是本地 DNS 对应答做了替换。本文给出三步排查法,并用 curl --resolve 实测绕过。

现象

最近在一台 Linux 服务器上做自动化时遇到一个怪现象:访问某个站点一直失败,用 curl -v 一看,连接卡在 Trying 2001::1...,根本没到 IPv4 就超时了。用 dig +short AAAA 域名 验证,返回的赫然是 2001::1 ——一个看起来"合法"的 IPv6 地址。

更隐蔽的是,另一些域名返回的是 face:b00c::25de 这类地址。如果你认识 b00c 这个十六进制串,就知道它其实属于 Facebook 的地址段——明显不是目标网站的真实地址。

2001::1 是什么

2001::1 落在 IANA 保留的 IETF 协议分配段(2001::/23)内,不是可路由的全球单播地址。它和 0.0.0.1、127.0.0.1 一样属于特殊用途地址,正常情况下不可能是一个网站真实的服务地址。

这类"哨兵地址"通常是网络中间设备或本地 DNS 对特定域名应答时注入的:DNS 应答被替换成一个固定的黑洞地址,连接要么超时要么被重置。特点是 AAAA 查询有结果但必然连不通,而 A 记录查询可能正常或同样被污染。

排查三步

# 1. 确认拿到的是哨兵地址
dig +short AAAA example.com
# 返回 2001::1 / face:b00c::25de 等 → 被污染

# 2. 换可信 DNS 对比(DoH 走 443,不受 53 端口劫持影响)
curl -s "https://1.1.1.1/dns-query?name=example.com&type=A" \
  -H "accept: application/dns-json"

# 3. 用真实 IP 直连验证服务本身是否正常

绕过方法:curl --resolve

确认服务本身可达后,最快的方式是让 curl 跳过本地 DNS,直接把域名钉到真实 IP 上:

curl -sv --resolve workers.dev:443:104.18.26.90 https://workers.dev/

--resolve host:port:ip 的优先级高于系统 DNS,等价于临时的 /etc/hosts,不需要 root 改文件,也不会影响其它请求。程序化场景里(比如脚本要访问多个被污染域名),先通过 DoH 查出真实 A 记录,再逐个拼 --resolve 参数即可稳定复现"能通"的状态。

另一个思路是走代理出站(如 HTTPS_PROXY 指向本地代理),让域名解析发生在远端,本地污染自然失效。两种方法按场景选:单次请求用 --resolve 最轻量;长期访问走代理一劳永逸。

连带影响:安全工具的误判

还有个容易忽略的坑:一些安全校验逻辑会把保留地址段当作"私有地址"拦截(常见于 SSRF 防护),2001::1、face:b00c::/16 这类哨兵地址也会撞上同一规则,导致"解析成功了但被自己的防护拦下",报错却指向一个看似不相干的位置。如果你的工具支持白名单配置(比如 IP 段黑名单里加例外),需要把 2001::1/128 这类哨兵地址显式加入排除,否则它们会被当成攻击载荷拒绝。

小结

排查口诀:先看 AAAA 是不是特殊地址段 → DoH 拿真实 IP → curl --resolve 钉住直连验证服务。三个动作基本能在一分钟内分清"是网站挂了"还是"是 DNS 被做了手脚"。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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