域名被DNS污染打不开怎么恢复:先分层确认,再决定清洗还是接反代

2026-09-10 4 0

域名突然在国内或部分地区打不开,而你自己(或海外同事)访问一切正常。这种时候第一件事不是换域名,也不是换服务器,而是把故障压到具体某一层:是解析被抢答,还是访问被阻断,或者干脆是源站自己出了问题。这三种表现很像,处理路径却完全不同,误判成 DNS 污染再去买清洗,钱花了问题还在。

下面按实际动手的顺序走:先用四个动作确认是不是污染,再分两条线恢复——你和团队能立刻用上的临时手段,以及让普通用户不做任何设置就能打开网站的业务侧方案。

四步确认:故障到底卡在解析、链路还是源站

第一步,绕开域名直连源站。 用真实 IP 发一次请求,带上 Host 头:

curl -sv -H "Host: 你的域名" https://源站IP/ --resolve 你的域名:443:源站IP
ping 源站IP
telnet 源站IP 443

如果直连能拿到正常响应,说明服务本身是好的,问题在域名到 IP 这一段。如果直连也不通,先去查防火墙、安全组和服务进程,别往 DNS 上想。

第二步,对比境内外解析结果。dig +trace 你的域名 看权威服务器返回什么,再用多地拨测工具看各省各运营商解析出的 IP。典型的污染特征是:权威解析和境外解析都返回真实入口 IP,而境内某些运营商的 LocalDNS 返回一个黑洞 IP、一个和你毫无关系的境外 IP,或者干脆是错误记录。

第三步,向一个不提供 DNS 服务的境外 IP 发查询。 这一步最能一锤定音:

nslookup 你的域名 <一个你确定没有运行 DNS 服务的境外 IP>

正常情况下这条查询应该超时、拿不到任何应答。如果它几乎秒回了一条 A 记录,那条记录不可能来自那个 IP——它来自链路上识别明文 UDP 53 查询并抢先伪造应答的设备。到这一步,链路级污染基本可以确认。

第四步,换网络复测。 不同运营商、不同城市、手机流量各测一遍。污染通常有明显的地域和运营商差异,只在一台机器上看到的异常,更可能是本地缓存问题。

DNS 污染四步分层排查流程与对应结论

定性之前,先排掉几种更常见的原因

  • 访问阻断,不是解析污染。 解析结果正确、TCP 也能建连,但 80/443 被 RST 或返回一个阻断提示页——这属于内容/备案层面的阻断,做 DNS 清洗没用。
  • 解析记录本身写错,或 TTL 还没过。 先登录 DNS 服务商核对权威记录;刚改过记录的话,按旧 TTL 的时长等一等再下结论。
  • 源站故障、端口没起、安全组误封。 IP 直连就不通,和 DNS 无关。
  • 只有个别用户打不开。 更可能是那几台机器或那个 LocalDNS 缓存了一条坏结果,刷一下缓存就好。

可用的判断口径:源站直连正常 + 权威解析正常 + 境内解析返回错误 IP + 存在伪造抢答,四项同时成立才按 DNS 污染处理。缺一项,回到上一步重新看。

临时手段:只够你和内部团队自救

确认是污染之后,最先能做的是让自己人恢复访问,方便继续排查和发版:

  • 清本地缓存。 Windows ipconfig /flushdns;Linux 视发行版重启 systemd-resolvednscd;macOS sudo dscacheutil -flushcache
  • 换公共 DNS(作用有限)。 换成 1.1.1.1、8.8.8.8 有时能解决 LocalDNS 缓存了脏记录的情况,但如果是针对你这个域名的链路级抢答,明文 UDP 53 走到哪都会被旁路劫持,换了往往照样错。
  • 用 DoH 或 DoT。 加密解析把查询包在 HTTPS/TLS 里,中间设备看不到你在查什么,也就无从抢答。这是客户端侧真正有效的一招。
  • hosts 绑定真实 IP。 应急可用,但要注意证书和 SNI 是否匹配,而且入口 IP 一变就得手动跟,不适合长期挂着。

把话说明白:这些都是自救,不是修复。 你不可能让成千上万的终端用户去改 hosts、配 DoH,App 里的请求也不会因为你自己能打开就恢复。所以这一段做完,就该转到业务侧。

业务侧恢复:让普通用户不改任何设置也能打开

在不更换域名的前提下,主流做法有两条,通常配合使用:

一是域名污染清洗/恢复。 由服务方针对被投毒的各级递归缓存做高频刷新纠正,配合智能路由和清洗节点,把递归解析结果拉回正确的入口 IP。适合品牌域名已经在用、外链和客户端里写死、换域名代价很大的业务。

这里有个必须提前说清的预期:生效时延不统一。不同运营商、不同层级的递归节点刷新速度差别很大,通常在几分钟到几小时之间,行业里并没有公开统一的 SLA。排上线计划时不要按"提交完立刻全网恢复"来安排,最好保留一个可用的备用入口过渡。

二是接反向代理 / 具备抗拦截能力的 CDN。 把域名入口指向清洗与加速节点,用户连节点、节点回源,源站 IP 不再直接对外。这一步的额外好处是顺手把源站从公网上摘下来了。

如果你现在就处在业务中断的状态,RockCloud 的域名拦截恢复走的就是不换域名这条路,加速和防护在同一条链路上完成,可以先用免费测试确认你的域名在目标地区能不能拉回正常解析,再谈接入;已经在掉线、需要人直接跟进的,走联系入口更快。

接完反代还有个容易漏的收尾:解析恢复了,但源站真实 IP 还散落在历史解析记录、邮件头、证书透明日志里,等于白接。这部分的核对清单可以看源站隐藏怎么做?暴露面到mTLS回源的5道关口

换域名之前,先想清楚三件事

换域名是最后手段,不是省事的捷径:外链和收录要重新积累,App 硬编码、支付回调白名单、第三方回调地址、邮件 SPF/DKIM 都得跟着改;更关键的是,新域名照样可能被污染——如果触发原因(内容、历史记录、共用 IP 段等)没查清,换过去只是把时间往后推。先把原因摸清楚,再评估换不换。

恢复之后怎么验收,以及会不会复发

  • 多地多运营商复测,确认各地解析出的都是正确入口 IP,而不是只看自己这台机器通了就收工。
  • 再跑一次第三步的抢答测试,看向无 DNS 服务的 IP 查询是否还会秒回伪造记录。这比看网页能不能打开更直接。
  • 观察 24 到 72 小时。污染有反复的可能,把域名解析结果和可用性放进监控告警,别等用户报障。
  • 留档。把故障期间的 dig 输出、拨测截图、错误 IP 存一份,下次复发时能立刻对比是不是同一回事。

还有一种组合情况值得提前知道:DNS 污染和 SNI 阻断同时发生。表现是解析已经纠正、也能建 TCP 连接,但 HTTPS 握手阶段被切断。这类需要在节点侧做 TLS 层的处理(例如 ECH 一类的方案),各平台的支持程度并不一致,遇到时以实际测试结果为准,不要默认"清洗完就一定通"。

把顺序记住就够了:先分层确认,再排除更常见的原因,临时手段自救,业务侧靠不换域名的清洗或反代恢复,最后多地复测并观察复发。 跳过确认那一步直接买方案,是这类故障里最常见也最贵的弯路。

相关文章

网站被DDoS攻击了怎么快速恢复访问:五步止血顺序
CN2线路加速怎么选:先测回程,再谈GT还是GIA
源站隐藏怎么做?暴露面到mTLS回源的5道关口
怎么判断是不是慢速CC攻击:别只看access.log
CDN安全加速怎么选?三层判定分工与核对要点
源站IP泄露后的应急处理与修复步骤:5步止血顺序

评论(0)

暂无评论

发布评论