页面跳到陌生站,我先怀疑被黑

有用户反馈打开我的域名,跳到一个完全不认识的页面。我第一反应是服务器被入侵,查了文件、看了日志,什么都没发现。

后来用多个地区解析一看,部分节点返回的 IP 根本不是我的。服务器没事,解析先出了问题。那次排查花了大半天,方向从一开始就错了。

三种常见表现

返回陌生 IP:地址不属于你的服务商,也和你的 CDN 无关。这是最典型的一种。

返回保留地址:内网段、保留段,根本不可能提供公网服务。

部分地区解析失败:不是全部失败,而是某些运营商、某些省份直接查不到。这类最容易被误判成「线路问题」。

还有一种更隐蔽:返回的地址能打开页面,但打开的是别人的站。

DNS 污染检测:异常解析地址与地区分布

DNS 污染检测:异常解析地址与地区分布

和调度、劫持分开

正常调度也会给出不同 IP,但那些 IP 属于你的服务商,长期稳定,且每个都能访问。

劫持的范围更广,可能发生在连接阶段、内容阶段,表现为跳转或者内容被替换。

污染只发生在解析阶段:答案本身就是错的。调度是为了让用户就近访问,污染是让你去不了正确的地方。三者处置方式完全不同。

怎么取证

用宝塔拨测的 DNS 污染检测从多个地区的递归节点解析同一域名,比对返回结果。

看三件事:有没有和业务无关的地址、有没有保留地址、有没有节点直接失败。取证时记下节点、运营商、返回值和查询时间。

地域分布能说明很多问题:只有出境方向异常,往往是链路上的策略。

然后拿权威 DNS 的结果对照。权威对、递归错,是解析链路被污染;两边都错,是记录本身有问题。

确认之后能做什么

先修根因:检查解析商账号、NS 是否被改、记录是否被篡改。多个域名同时中招,先怀疑 NS 或者解析商账号。

再用加密解析缓解,DoH 或 DoT 能绕过一部分中间环节。换公共 DNS 或者换解析服务商,视污染发生在哪一层而定。

如果污染长期无法解决,换域名是最后手段,成本很高,别一上来就用。

复测和该警惕的

改完从同样的地区、同样的节点再查,看返回是否恢复一致。

连续查两三次,确认不是缓存过期造成的短暂现象。别在自己电脑上反复刷新,那只会一直命中同一层缓存。

污染不是你的服务器能修的,别在应用层折腾半天。

该警惕的是:多个子域同时出现陌生地址、同一地区不同运营商结果一致地错、NS 指向不认识的服务商。这几个凑在一起,按安全事件处理,别当成技术故障慢慢查。