0、前言
泉州“试点”白名单到现在已经一年了,听说已经推广到了全省大部分地区以及中国移动覆盖部分地区,但是我目前使用福建移动无感。在拨测时发现福建泉州无法访问我的 CDN IP,于是进行了一番调查研究并做个记录。
最近(2023年8月12日前后)网传工信部要求 App 备案,如果你是通过类似关键词找到的这篇文章,建议移步本站文章:
《工信部移动程序备案通知》政策解读
https://blog.tsinbei.com/tw/archives/1354/
2024年4月23日更新:
根据群友反馈,使用备案域名+非白名单IP(Cloudflare Free 计划中,系统默认分配的 IP)无法在泉州等地访问,此现象可复现,与本文之前的结论冲突,因此可认为白名单部分规则已更新。
此次重新进行测试,添加了“白名单域名”的测试结果,修正部分测试结果。
根据大量反馈和测试结果,反诈劫持地区已从江苏扩散至多省。
1、现象
使用IT Dog拨测,泉州无法使用未备案域名访问白名单以外的IP。下面以 2 个域名和 IP 为例,描述实验现象:
备案域名:1.com(测试域名:www.visa.cn
)
未备案域名:2.com(测试域名:在看这篇文章的各位想必也正受白名单困扰吧,用你自己的域名测试就行 XD)
白名单域名:3.com(测试域名:www.who.int
)
各位可尝试使用上述域名重复测试以验证结果。
白名单 IP:6.6.6.6(测试 IP:104.26.13.31
)
非白名单 IP:8.8.8.8(测试 IP:104.16.104.218
)
拨测结果:
(备案域名 + 白名单 IP:全部正常)
- HTTP + 1.com + 6.6.6.6:正常
- ICMP + 1.com + 6.6.6.6:正常
- TCP + 1.com + 6.6.6.6:正常
(未备案域名 + 白名单 IP:全部正常)
- HTTP + 2.com + 6.6.6.6:正常
- ICMP + 2.com + 6.6.6.6:正常
- TCP + 2.com + 6.6.6.6:正常
(白名单域名 + 白名单 IP:全部正常)
- HTTP + 3.com + 6.6.6.6:正常
- ICMP + 3.com + 6.6.6.6:正常
- TCP + 3.com + 6.6.6.6:正常
(备案域名 + 非白名单 IP:部分正常)
- HTTP + 1.com + 8.8.8.8:阻断
- ICMP + 1.com + 8.8.8.8:正常
- TCP + 1.com + 8.8.8.8:正常
(未备案域名 + 非白名单 IP:部分正常)
- HTTP + 2.com + 8.8.8.8:阻断
- ICMP + 2.com + 8.8.8.8:正常
- TCP + 2.com + 8.8.8.8:正常
(白名单域名 + 白名单 IP:全部正常)
- HTTP + 3.com + 6.6.6.6:正常
- ICMP + 3.com + 6.6.6.6:正常
- TCP + 3.com + 6.6.6.6:正常
(直接访问 IP)
- HTTP + 6.6.6.6:正常
- ICMP + 6.6.6.6:正常
- TCP + 6.6.6.6:正常
- HTTP + 8.8.8.8:正常
- ICMP + 8.8.8.8:正常
- TCP + 8.8.8.8:正常
2、结论
早期结论:
根据结果,可以发现白名单的特征是:
- 非 HTTP(S) 方式不受影响;
- 不带域名访问不受影响;
- 未备案域名 + 非白名单 IP 无法连接,疑似是 SNI 阻断。
完整结论:(其中现象结论在早期测试时未出现,因此可能是更改了规则,为了减少误伤?)
泉州白名单特征包括:
- 仅阻断出境方向、基于 HTTP 协议的 HTTP(S) 请求:
1.1. HTTP 阻断方式为 Connection Reset;
1.2. HTTPS 阻断方式为 SNI 阻断。
1.3. 基于 IP 而非域名阻断,白名单域名可无视规则,是因为白名单域名不会被审查,否则白名单域名+非白名单 IP 也会被阻断。 - Vmess 等协议也显示出类似 HTTP 协议的特征,因此若发送的 SNI 不可通过白名单,则会被阻断。
- 仅阻断主流顶级域名,包括
.com
、.net
、.top
、.xyz
甚至.cn
(如果未备案)。 - 尚未发现对小众顶级域名的阻断,例如国别域名
.sb
、.al
和新顶级域名.moe
等。 - 针对非白名单 IP+非白名单域名的访问全端口阻断。
福建厦门、龙岩等地疑似有和泉州白名单不太相似的规则,而福州白名单目前可确认和泉州白名单基本一致,因此初步得出结论:目前仅福建福州、泉州存在严格的 IP 白名单。
另外,有一个有趣的现象:
- 有概率在测试时出现非白名单 IP+非白名单域名在福州/泉州可访问,然而多次测试后大部分结果为不可访问,因此同一组数据需要多测试几次。
白名单的出/入(有吗?)规则是:
- 最早所有 IP 段均被列入白名单;
- 已进入黑名单的 IP 仍不可访问,但不在白名单这一层被阻断;
- 如果有某种情况(触发原因未知),会导致一个 IP 甚至整段被移出白名单;
- 机房可向泉州相关部门申请将 IP 段加入白名单,但据我所知申请挺麻烦的,所以可以认为大部分被移出白名单的 IP 大概率无法再被列入白名单。
前段时间经过福建泉州,测试了一下,自己的网站确实全部打不开了。另外,自建的几个节点可能是因为有伪装域名(发送 SNI),也全部被阻断。
在测试期间,尚未发现国内云厂商白名单 IP 段,应该是都从白名单中移除了。
据说其他地区也开启了白名单,福州据我所知已经有了,经过厦门的时候测试并未出现类似现象,其他地方如三明也没有。
根据我的朋友给我反馈,他在河南的朋友们打不开他的网站。测试后发现他的网站在河南全省三网拨测不通。但是使用同样的 IP(Cloudflare 泛播 IP),访问本站可以正常连接,经进一步测试发现是基于域名的加强版 SNI 阻断,解决方法参考:
启用 TCP Timestamps 解决 SNI 阻断
https://blog.tsinbei.com/tw/archives/1361/
最近反诈阻断增多,已从江苏推广至重庆、湖南等地,被反诈阻断后表现为:
- HTTP 劫持至反诈警告页面;
- HTTPS 阻断;
- (有概率)域名被污染至 127.0.0.1 或 0.0.0.0 等局域网IP。
此外,传闻 “Cloudflare 的所有 IP 段都不在白名单中” 不实,经过测试大量 IP 段可以访问,可以修改 Hosts 文件或重写 DNS 至这些 IP 段中的任意 IP,以访问托管在 Cloudflare 上的网站。(这样不就又可以通过 Cloudflare 在泉州……)
3、解决方法
针对网站被阻断,解决方法是使用 DNS 服务商的分区解析,如果使用 DNSPod 专业版,可参考详细指南:
服务器集群(七)DNSPod专业版分区解析
https://blog.tsinbei.com/tw/archives/667/
也可使用华为云免费版 DNS。
按照官方文档添加自定义解析线路,线路内容填入泉州全段 IP(更新时间 2023/06/08):
1 | 27.148.169.0-27.148.169.255;(下省略) |
保存,如果使用 CNAME 方式自选 IP 接入 Cloudflare,可解析至如下 IP 段:
此处内容需要评论回复(自动审核)或加入 QQ 技术交流群(立即获得内容)后方可阅读。赞助(二维码在文章下方)后联系作者可一次性解锁所有(包括之后的新文章)。
目前由于国内 DNS 存在:
- 出口 IP 和用户 IP 地理位置有差异
- 不支持 EDNS
等问题,因此此方法目前有缺陷,效果不好。有效解决的方法等待进一步研究,如有思路可加群讨论。
探讨福建泉州白名单网络原理及应对方法
评论