跨境链路 · DNS 干扰 · 端口混淆

跨境 DNS 干扰
53/853 被重置的应对手册

国内直连海外 DNS 服务器,经常出现握手被 RST、查询超时、随机失败。本文讲清现象、判断、四种应对方案和地区选型。

53UDP 明文 · 干扰最严重
853DoT 专用口 · 易被识别
443DoH · 与网页混淆最隐蔽
4 招从国内中转到隧道
TL;DR · 核心结论

国内访问海外 DNS 服务器的干扰,按端口严重程度排序:53 端口 UDP 明文 DNS 最严重(查询被丢弃、返回伪造响应);853 端口 DoT 次之(TLS 握手被 RST);443 端口 DoH 最隐蔽(与正常 HTTPS 流量同端口,RFC 8484)。判断方法:用 dig +tcp、nslookup、tcpdump 对比干净 DoH 结果。应对优先级:① 在国内 VPS 上自建加密 DNS(用户不跨境)→ ② 海外服务器跑 DoH 443 混淆 → ③ 国内中转机+隧道转发到海外 → ④ 备用多地区节点故障切换。选服务器地区:香港/日本求低延迟,新加坡求稳定,美国西海岸求隐私。

Symptoms

跨境 DNS 干扰的典型现象

不是"网络不好",而是链路层对特定端口的针对性阻断

UDP 53 查询超时 最常见

发出去的 DNS 查询包收不到回复,反复重试均超时;但同一台服务器的 SSH/HTTPS 却正常。这是链路对 UDP 53 跨境包的典型丢弃行为。

TLS 握手被 RST DoT 853

DoT(RFC 7858)在 853 端口完成 TCP 握手后,ClientHello 发出后立刻收到 RST 包,连接被重置。

随机失败与结果污染 最难排查

同一域名第一次解析成功,第二次返回错误 IP;或者时好时坏,重启路由器又恢复几小时。这是链路对特定域名/特征的间歇性注入。

ICMP Port Unreachable 直接阻断

发查询后立刻收到 ICMP 类型 3 代码 3(目标端口不可达),说明链路中间节点直接丢弃并回包,根本没到你的海外服务器。

Diagnose

三步判断是不是被 DNS 干扰

不要凭感觉,用工具量化

第 1 步:对比干净 DoH 结果

  • 先用 dig @1.1.1.1 example.com 走普通链路
  • 再用 curl -s 'https://cloudflare-dns.com/dns-query?name=example.com&type=A' -H 'accept: application/dns-json' 走 DoH
  • 两次返回的 IP 不同,说明链路对明文 DNS 做了注入

第 2 步:tcpdump 抓 RST / ICMP

  • sudo tcpdump -i any port 853 or port 53 -nn
  • 观察是否有 RST 包紧随 ClientHello,或 ICMP type=3 code=3
  • 对比多试几次:稳定复现 = 针对性阻断;偶发 = 链路质量差

第 3 步:区分端口协议

  • dig +tcp @海外IP example.com -p 53 测 TCP 53
  • kdig -t @海外IP example.com -p 853 测 DoT
  • curl -k https://海外IP/dns-query -d '...' 测 DoH
  • 哪个端口失败,就针对性换哪个端口的方案
Fixes

四种应对方案(按推荐度排序)

从轻到重,从省钱到折腾

方案 1:国内 VPS 自建加密 DNS 推荐

在国内阿里云/腾讯云轻量服务器上跑 AdGuard Home / unbound,对外暴露 DoH/DoT。国内用户访问国内 IP 完全不跨境,链路无干扰;上游再用 DoH 指向 Cloudflare。成本最低、稳定性最高。

方案 2:DoH 443 混淆 海外节点

在香港/日本服务器上用 Caddy / Nginx 反代 DoH 端点,走 443 端口,配一个正常域名 + Let's Encrypt 证书。链路看起来就是普通 HTTPS 网站流量,Cloudflare DoT/DoH 文档可作参考。

方案 3:国内中转 + 隧道 进阶

国内中转机用 iptables DNAT / Gost / FRP 把 443 端口流量转发到海外源站。用户连的是国内 IP,实际解析发生在海外。适合需要海外出口又不想自己搭 DoH 的场景。

方案 4:多节点故障切换 兜底

同时维护香港、日本、新加坡三个 DoH 端点,本地用 systemd timer / healthcheck 脚本定时探测,哪个通就切哪个。DoQ(RFC 9250)基于 QUIC 走 UDP 853,可作为备用协议。

Region Selection

跨境 DNS 服务器地区选型决策表

延迟、稳定性、内容自由度三难,按场景选

地区典型延迟稳定性内容自由度适合场景
香港 30~60ms 中等(偶尔被针对性清理) 高 追求低延迟、个人小流量、做国内中转入口
日本(东京/大阪) 60~100ms 高 高 稳定做 DoH/DoT 出口、长期运营节点
新加坡 120~180ms 很高 高 亚太骨干节点、对稳定性要求极高的服务
美国西海岸 150~200ms 很高 极高 隐私敏感、需要访问完整海外内容、不介意延迟
国内(阿里云/腾讯云) 5~30ms 极高 受国内法规约束 只解决国内用户访问稳定性,不作为隐私出口

经验建议:主力节点放日本/新加坡(稳),香港节点做国内中转入口,美国节点做隐私兜底。不要把鸡蛋全放在香港一个篮子里——香港 IP 段偶尔会被整体限流。

FAQ

常见问题

为什么我连海外 DNS 服务器总是超时或重置?+
跨境链路对 53 端口明文 UDP DNS 干扰最严重,常见表现是查询发出去收不到回复、TCP 握手时收到 RST 包、或返回伪造响应。853 端口 DoT 也可能被针对性阻断。443 端口 DoH 因为与正常 HTTPS 流量同端口,最不容易被识别。
怎么判断自己是不是被 DNS 干扰了?+
用 dig 或 nslookup 对比:同一域名在国内直连解析 vs 通过已知干净的 DoH 解析,结果是否不同;用 tcpdump 抓包看是否收到 RST 或 ICMP port unreachable;多次查询是否出现随机失败。
最稳妥的跨境 DNS 方案是什么?+
把加密 DNS 服务部署在国内 VPS 上(国内用户访问国内 IP 不跨境),上游用 DoH 指向 Cloudflare/Google;或用 DoH 443 端口部署在香港/日本服务器,与网页流量混淆;再不行就用国内中转机+隧道转发到海外源站。
选香港、日本、还是美国的 DNS 服务器?+
追求延迟选香港/日本(30~80ms),追求稳定性选新加坡(120~180ms),追求隐私与内容自由选美国西海岸(150~200ms)。香港服务器虽近但容易被针对性清理,建议备一个日本/新加坡节点。
References

参考来源