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

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 条

qwerpron14

qwerpron14

谢谢!好人一生平安!

  回复

星光工作室

星光工作室

1111111

  回复

小呆

小呆

谢谢

  回复

iue

iue

Cloudflare怎么解决

  回复

kristielazarine

kristielazarine

Cloudflare怎么解决

  回复

kristielazarine

kristielazarine

想看一下接入cf怎么解决

  回复

baka

baka

学习一下如何设置,谢谢大佬分享的技术知识!

  回复

dsd

dsd

学习一下

  回复

sni

sni

学习一下

  回复

ChenMing

ChenMing

学习一下如何设置,谢谢大佬分享技术知识

  回复