Appearance
DNS 污染与假 IP 劫持排查指南:GFW 投毒原理与 Fake-IP 免疫实战
导读:当你没开代理或配置不当时,在终端中输入
ping twitter.com或nslookup youtube.com,会发现它竟然能解析出一个 IP,但这个 IP 往往归属于美国军方、韩国机房或甚至国内反诈拦截页面!这就是臭名昭著的 “DNS 污染 (DNS Poisoning / 投毒)”。
本文严格遵循【症状】 → 【原因】 → 【检查】 → 【解决方案】诊断框架,带你识别污染并一劳永逸建立免疫屏障。
一、症状 (Symptom)
- 表象 1:在没有开启代理的情况下,解析海外被封域名,返回了一个明显错误的国外随机 IP(如
127.0.0.1、37.61.54.158、93.46.8.89); - 表象 2:即便在客户端中开启了代理,打开网页依然瞬间跳转至“国家反诈中心”或本地运营商的“该域名无法访问”拦截提醒页;
- 表象 3:浏览器控制台提示
ERR_SSL_PROTOCOL_ERROR或安全证书域名不匹配警告(因为你拿到的假 IP 根本无法提供该网站的正规证书)。
二、原因 (Cause)
GFW 旁路镜像投毒机制
DNS 传统协议工作在无连接的 UDP 53 端口上,没有身份鉴别与防篡改验证:
mermaid
sequenceDiagram
autonumber
actor User as 用户电脑 (向 114.114.114.114 询问 twitter.com)
participant Edge as 国内运营商骨干路由器
participant GFW as GFW 旁路监控探针
participant TrueDNS as 真正的权威根服务器
User->>Edge: 发出明文 UDP 查询报文
Edge->>GFW: 流量镜像至 GFW 探针
GFW->>GFW: 深度模式匹配:命中黑名单!
GFW-->>User: ⚡ 毫秒级伪造应答!抢先下发假 IP (127.0.0.1)
Note over User: 用户的电脑信以为真,缓存下假 IP!
TrueDNS-->>User: 官方真实 IP 姗姗来迟,被操作系统当做重复包丢弃只要你的网络流量中包含了明文的 53 端口请求穿过防火墙,GFW 就会利用距离优势**“抢答投毒”**。
三、检查 (Inspection / 3步自测)
检查 1:使用已知被污染域名进行命令行探测
在终端运行:
cmd
nslookup facebook.com 114.114.114.114- 判定标准:若返回的 Address 列表中出现了早已被曝光的典型污染 IP 池(如
31.13.x.x或不合常理的欧洲/韩国 IP),100% 确认已遭受系统级 DNS 污染。
检查 2:在客户端内部检查解析日志
打开 Clash Verge Rev 的“日志 (Logs)”页面:
- 查看海外域名的 DNS 记录:
- 判定标准:如果域名解析出的 IP 不是以
198.18.x.x开头的虚拟 Fake-IP,说明你的 DNS 请求直接裸奔穿透到了国内公网!
四、解决方案 (Solution)
1. 唯一终极免疫方案:开启 Fake-IP 模式
在客户端内核中开启 enhanced-mode: fake-ip:
- 原理:本地客户端不再将 DNS 查询发给外部公网,而是在本地直接生成一个
198.18.x.x的保留假 IP 返回给浏览器; - 浏览器带着这个假 IP 发送数据包,客户端直接截获并转交给海外落地服务器去真正解析;
- GFW 的旁路投毒彻底失去了攻击目标,污染 100% 免疫失效!
2. 启用端到端加密 DNS (DoH / DoT)
在配置中配置 DNS over HTTPS (DoH):
yaml
dns:
enable: true
enhanced-mode: fake-ip
nameserver:
- https://doh.pub/dns-query
- https://dns.alidns.com/dns-queryDoH 将所有的 DNS 查询封包进带有 TLS 加密的 443 端口,GFW 无法从密文中看清你查询了什么域名,彻底杜绝抢答伪造。