探讨福建泉州白名单网络原理及应对方法

0、前言

泉州“试点”白名单到现在已经一年了,听说已经推广到了全省大部分地区以及中国移动覆盖部分地区,但是我目前使用福建移动无感。在拨测时发现福建泉州无法访问我的 CDN IP,于是进行了一番调查研究并做个记录。

最近(2023年8月12日前后)网传工信部要求 App 备案,如果你是通过类似关键词找到的这篇文章,建议移步本站文章:

《工信部移动程序备案通知》政策解读
https://blog.tsinbei.com/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 启用白名单,因此测试 IP 均需要是非中国大陆机房,推荐使用备案且使用 Cloudflare 的域名,这样可以用大量 Cloudflare 泛播 IP(其中有一些在白名单中,大部分不在)测试并对比结果。供测试的备案域名和白名单域名均托管于 Cloudflare,因此可以自行使用

拨测结果:

(备案域名 + 白名单 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:正常

注意:
测试仅使用了常见 TLD(.com.net),据说对于部分垃圾内容泛滥的 TLD(.xyz.top)会进行无差别阻断,目前尚未亲自进行测试。

2、结论

早期结论:

根据结果,可以发现白名单的特征是:

  1. 非 HTTP(S) 方式不受影响;
  2. 不带域名访问不受影响;
  3. 未备案域名 + 非白名单 IP 无法连接,疑似是 SNI 阻断。

完整结论:(其中现象结论在早期测试时未出现,因此可能是更改了规则,为了减少误伤?

泉州白名单特征包括:

  1. 仅阻断出境方向、基于 HTTP 协议的 HTTP(S) 请求:
    1.1. HTTP 阻断方式为 Connection Reset;
    1.2. HTTPS 阻断方式为 SNI 阻断。
    1.3. 基于 IP 而非域名阻断,白名单域名可无视规则,是因为白名单域名不会被审查,否则白名单域名+非白名单 IP 也会被阻断。
  2. Vmess 等协议也显示出类似 HTTP 协议的特征,因此若发送的 SNI 不可通过白名单,则会被阻断。
  3. 仅阻断主流顶级域名,包括.com.net.top.xyz甚至.cn(如果未备案)。
  4. 尚未发现对小众顶级域名的阻断,例如国别域名.sb.al和新顶级域名.moe等。
  5. 针对非白名单 IP+非白名单域名的访问全端口阻断。

福建厦门、龙岩等地疑似有和泉州白名单不太相似的规则,而福州白名单目前可确认和泉州白名单基本一致,因此初步得出结论:目前仅福建福州、泉州存在严格的 IP 白名单

另外,有一个有趣的现象:

  1. 有概率在测试时出现非白名单 IP+非白名单域名在福州/泉州可访问,然而多次测试后大部分结果为不可访问,因此同一组数据需要多测试几次。

白名单的出/入(有吗?)规则是:

  • 最早所有 IP 段均被列入白名单;
  • 已进入黑名单的 IP 仍不可访问,但不在白名单这一层被阻断;
  • 如果有某种情况(触发原因未知),会导致一个 IP 甚至整段被移出白名单;
  • 机房可向泉州相关部门申请将 IP 段加入白名单,但据我所知申请挺麻烦的,所以可以认为大部分被移出白名单的 IP 大概率无法再被列入白名单。

前段时间经过福建泉州,测试了一下,自己的网站确实全部打不开了。另外,自建的几个节点可能是因为有伪装域名(发送 SNI),也全部被阻断。

在测试期间,尚未发现国内云厂商白名单 IP 段,应该是都从白名单中移除了。

福建泉州

据说其他地区也开启了白名单,福州据我所知已经有了,经过厦门的时候测试并未出现类似现象,其他地方如三明也没有。

福建三明

根据我的朋友给我反馈,他在河南的朋友们打不开他的网站。测试后发现他的网站在河南全省三网拨测不通。但是使用同样的 IP(Cloudflare 泛播 IP),访问本站可以正常连接,经进一步测试发现是基于域名的加强版 SNI 阻断,解决方法参考:

启用 TCP Timestamps 解决 SNI 阻断
https://blog.tsinbei.com/archives/1361/

最近反诈阻断增多,已从江苏推广至重庆湖南等地,被反诈阻断后表现为:

  1. HTTP 劫持至反诈警告页面;
  2. HTTPS 阻断;
  3. (有概率)域名被污染至 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/archives/667/

也可使用华为云免费版 DNS。

按照官方文档添加自定义解析线路,线路内容填入泉州全段 IP(更新时间 2023/06/08):

Text
1
27.148.169.0-27.148.169.255;(下省略)

保存,如果使用 CNAME 方式自选 IP 接入 Cloudflare,可解析至如下 IP 段:

此处内容需要评论回复(自动审核)或加入 QQ 技术交流群(立即获得内容)后方可阅读。赞助(二维码在文章下方)后联系作者可一次性解锁所有(包括之后的新文章)。

目前由于国内 DNS 存在:

  1. 出口 IP 和用户 IP 地理位置有差异
  2. 不支持 EDNS

等问题,因此此方法目前有缺陷,效果不好。有效解决的方法等待进一步研究,如有思路可加群讨论。

探讨福建泉州白名单网络原理及应对方法

https://blog.tsinbei.com/archives/1293/

文章作者
Hsukqi Lee
发布于

2023-06-09

修改于

2024-04-23

许可协议

CC BY-NC-ND 4.0

# 建站  HTTPS  网站  Linux  反向代理  HTTP  DNSPod  DNS  DoH  DoT  Cloudflare  CDN

评论

昵称
邮箱
网址
92 条

呜呜

呜呜

牛逼6666666666666

  回复

冰瞳

冰瞳

感谢感谢

  回复

Kimi2011

Kimi2011

感谢!

  回复

enderLuoxh

enderLuoxh

可以可以

  回复

xiaobai

xiaobai

学习学习

  回复

alli

alli

学习学习

  回复

ChenMing

ChenMing

学习一下

  回复

sadwa

sadwa

学习

  回复

i

i

学习

  回复

小安

小安

感谢

  回复