判断境外网站是否被墙,什么方式被墙的指南

基于底层原理的办法是使用操作系统自带的一个路由器追踪的软件/命令,Windows 下是 tracert,而 Linux 下是 traceroute

输入命令加上网站域名就能显示经过的路由器呈现的路径,如果网站被 GFW 封锁了,那么路径会在某个地方无限超时,或者被解析到 FaceBook 的 IP。

如果要进一步确定是否有 DNS 污染,那么可以使用系统自带的查询DNS记录的软件/命令,全平台都能使用 nslookup,不过 Linux 更流行使用 dig

该命令能查询域名记录,如果没有解析,或者解析出的 IP 地址是错误的,那么就说明 DNS 被污染了。

一般解析错误的 IP 是 FaceBook 或者其他的科技公司。

如果使用未被污染的 DNS 能够登录该网站,那么说明没有封锁 IP,由于现在大多数网站都使用第三方 CDN,所以封锁 IP 有效性越来越少了。

关于 SNI 阻断,测试的方法是使用全平台均支持的 curl 命令,使用以下的两条命令,就能测试维基百科是否遭受到 SNI 阻断。

curl -v --connect-to ::www.kernel.org: https://www.wikipedia.org
curl -v --resolve 'www.wikipedia.org:443:91.198.174.192' --connect-to ::www.wikipedia.org: https://www.kernel.org

www.kernel.org 是一个未被封锁的网站,只要支持 https 且未被封锁的网站都能作为常量参与这个测试。

第一条命令的原理是连接到 www.kernel.org,但尝试使用维基百科的 SNI 进行 TLS 握手。

第二条命令的原理是与维基百科进行 TLS 握手时尝试使用 www.kernel.org 的 SNI,并且使用 --resolve 选项跳过 DNS 解析,以防止 DNS 污染的干扰,你也可以使用加密无污染的 DNS,如 DoH 等技术。

如果第一条命令未能完成握手,第二条命令完成了握手,那么就表明受测试的网站遭受到了 SNI 阻断。


参考资料

  1. 维基百科
  2. 判定域名是否被污染的几个方法供作者参考 · Issue #24 · wolf-joe/ts-dns
  3. 中国封锁了所有语言版本的维基百科 | OONI

如果该指南有任何遗漏、错误,请帮忙指出,我一定虚心接受并改正。

我的PGP公钥 ECFAD774868C9AD1A7FD726C06A8C9E815B31245

2021-01-23T00:00:00Z

PGP对全文签名

判断境外网站是否被墙,什么方式被墙的指南.txt

8 个赞

感觉Google打不开就是被墙了:sweat_smile::sweat_smile::sweat_smile:

1 个赞

也可以使用GreatFire测试,但是好像它不会告诉你很详细的被墙方式。

没准我哪天有时间写一个傻瓜式工具^_^

3 个赞

我记得一段时间移动墙signal,联通不墙

1 个赞

群主,联通fcm推送还墙着呜呜呜(┯_┯)

1 个赞

境外使用中國移動的漫遊服務,和大陸使用一樣,被牆的網站依然不能訪問。

1 个赞

据我测试好像是国行手机自动漫游回到国内再被墙。

因为我同一张卡港行手机正常…

1 个赞

漫游基本上都是连回原网络再上网,这不是中国移动的锅。比如美国电话卡到日本还是连回美国,是美国IP

2 个赞