改变翻墙历史的两个时间节点

来源: https://x.com/HiFrey/status/2088969248672735424

改变翻墙历史的两个时间节点,分别是2012年4月20号

@clowwindy

在V2EX上公开发布了shadowsocks,另外一个时间是2018年8月,Dreamacro 发布了Clash https://github.com/Dreamacro,这两个项目彻底改写了科学翻墙的进程,他们应该被所有人记住。

个人点评:

看了下评论,感觉发散出来的每个话题都能单独写长文

真要说时间点,自由门,同时期由于GFW还没升级SNI阻断所以可以改hosts、其实现在也能用在DNS污染没有SNI阻断的网站上,这一段是混沌时期;
编程随想也用过的赛风、tor,同时期的蓝灯,以及一堆“封端”的VPN软件出现,例如老王,能用就行呗,当然这个是一直出新然后跑路且未来也会是;
到ss的横空出世,然后是SSR,这里又是一大段故事;
再是v2ray 出现同时带来了vmess协议,再到R佬出走成立xray 搞了个vless ,闹挺大,这里又有一段故事,
同时期出了个trjon 普及很快,还有navieproxy;反倒是hy2 tuic 出现没那么轰动了

至于 clash 系一直是三天一个fofa扫端口被偷节点小漏洞五天一个路径穿越rce大漏洞,翻翻不良林的视频就知道了,但这里有一个哲学问题,被发现的漏洞越多系统越安全,还是越少系统越安全?
再就是sing-box 就不展开了,等以后再详细写

另一个话题就是
协议–核心—GUI 里,协议应该做到什么?核心应该完成什么?GUI应该承载什么?

举个例子 tun 原本可以由GUI 来完成,到底应不应该让核心来集成

另一点就是配置在不同平台的变化

在核心平台时配置是类似这样的json yaml文件

{
  "log": {
    "level": "debug"
  },
  "inbounds": [
    {
      "type": "mixed",
      "tag": "mixed-in",
      "listen": "::",
      "listen_port": 1080
    }
  ],
  "outbounds": [
    {
      "type": "anytls",
      "server": "127.0.0.1",
      "server_port": 8080,
      "tls": {
        "enabled": true,
        "server_name": "xi.jin.ping",
        "insecure":false,
        "certificate_path": "ca.crt"
      },
      "password": "password"

    }
  ]
}

到了GUI平台可以简化成一条链接,于是又要制定URI scheme
https://github.com/anytls/anytls-go/blob/main/docs/uri_scheme.md

anytls://[email protected]:8080/?sni=xi.jin.ping&insecure=1

而 URI scheme 的头部anytls:// 太过显眼继续进行 base64 编码

YW55dGxzOi8vcGFzc3dvcmRAMTI3LjAuMC4xOjgwODAvP3NuaT14aS5qaW4ucGluZyZpbnNlY3VyZT0x

最后连 base64 编码也觉得不安全,要进行非对称加密

我不反对加密配置本身,这要是能继续推动,成为未来的主要链接传播方式也不错

这里的问题是,如果密文、密钥、加密方式通过同一渠道传递给对方,那不是白加密了?这点就是那篇帖子里最后想写的

2 个赞

这不常识,又在转中推的屎了

改变翻墙历史的两个时间节点

建墙

拆墙

1 个赞

在核心平台时配置是类似这样的json yaml文件

  • 这是为了内核工作起来方便

URI 分享链接是为了传递关键信息方便.

  • 你可以理解为 一开头的 anytls 对应着 内核 使用的 json yaml 文件里的很多信息(或者理解为对应着一个配置文件模板), 再加上后面跟上的很多关键信息, 就可以生成 完整的 内核 使用的 json yaml 文件

至于对URI进行 base64 之类的, 没有本质上的作用.

而对 订阅链接加 非对称加密 这是另一层面 上的事情.

以前http年代,用base64编码可以理解,防DPI嘛。现在都HTTPS了,base64纯属脱裤子放屁,降低可读性。

观察到一个现象,翻墙圈有很多人是互联网民科,被害妄想症过强。

比如这个帖子:GFW能知道你看了什么Youtube视频吗?有可能 · Issue #42 · XTLS/BBS · GitHub 楼主似乎忘了什么是TLS哦,除非本地电脑被植入malware被mitm,这种情况下我建议你直接把电脑砸了哈哈。这些互联网民科特别喜欢黑OG翻墙协议比如shadowsocks。我就不明白了,就算你shadowsocks加密不安全,让GFW知道了你访问了什么SNI,又有什么危害呢?如果中国没有墙的话,大家不都是用HTTPS访问?全世界的网民都是直接用HTTPS访问的,怎么不怕NSA、mossad监控?

如果觉得GFW知道个SNI就能抓你,知道你访问个youtube twitter就派警哥抓你,只能说你这辈子没报过警,人家没那时间管你

@xijinping19530615 以前确实可以改host上被墙的网站,但是以前google根本就没被墙彻底,因为以前都是http访问,gfw直接检查网页里有无敏感词,比如江胡之类的,检测到就给你reset。

还有你上法轮功之类的网站,就算改了host也没用,gfw还会检查http header的,看到你访问的是法轮功直接reset

还有shabi在吹SS :clown_face:

我轻松掐断,现在不抓,等你肥了再抓 :sparkling_heart:

大概看了下,这篇帖子在说GFW获得youtube的https 流量不解密情况下,也可以通过流量分析访问了哪个频道,我无法验证可行性,但可以在假设可行性成立的情况下思考,GFW可以通过哪些途径来获得这些HTTPS流量:机场是粉红开的、方滨兴钓鱼节点、互联网基础设施被攻陷(VPS商家今年上半年服务器面板漏洞 https://t.me/vps_xhq/800 )呢?

sing-box 的配置里还真有应对malware植入ca的情况下,隧道流量还能不被mitm的方法,就是指定ca证书 "certificate_path": "ca.crt" ,对 anytls 协议进行mitm时发现的,而anytls原生核心没有这个功能,这个不怪它,协议实现核心与投入现实使用核心要求本来就不一样。
xray的 pinSHA256 好像也能做到,有时间会试试

让GFW 知道访问了什么SNI 的危害,一、会提高这条加密隧道被识别概率,被识别后无非三步递进,1 封sni、2 封端口、3 封IP ,GFW直接开始收集流量进行特征学习方便在特殊时间段识别断流

二、 对匿名化、安全性有害

全世界网民也有在用VPN,当然他们使用VPN是用来保护隐私的,而不是中共治下拿来绕过GFW访问无法访问的网站,中共、俄罗斯、伊朗以外的国家用tor甚至不需要前置代理门槛更低。

最重要的是习近平正在建立数字极权,NSA 、mossad 当然要提防,但那是在中共解体之后的事情了。斯诺登是英雄,即便基于现实他逃亡了更极权的俄罗斯,编程随想也是

要是真的觉得无所谓 ,《冲浪小本本儿》系列前几篇就是直连工具,还免费,还可以试试明文socks5代理直通外网(封了很多年了,请

至于翻墙会不会抓,你国法(习)治环境自己不清楚吗,习主席没想起来这茬就松点,年底抓KPI了紧点,案例本站搜“翻墙”自己看吧,而这些案例里也不知道有没有DNS查询泄露导致加密隧道被检测,还是加密隧道本身被检测,或者机场是粉红开的


顺便阐述一下行为指向的工具选择

风险程度低 | dns污染、没有sni阻断、没封IP | 通过doh 、修改hosts即可访问 |

风险程度中等 | dns污染、sni阻断、没封IP | 通过goodbyedpi 等tcp desync类工具访问、ECH/强制ECH前置、domain fronting、虚拟浏览器 |

风险程度高 | dns污染、sni阻断、被封IP | 通过加密隧道访问 |从这一级开始安全性、匿名化|

风险程度编程随想级|不考虑被封锁方式| 可信前置代理+tor+后置代理|

风险程度对抗习近平级 |不考虑被封锁方式| 可信前置代理+tor+后置代理+无需注册虚拟浏览器|

直连是最有意思的,大部分网站都可以直连,而且速度可以做到比翻墙还快。

GFW阻断的方式无非三个:

IP屏蔽 对于CDN IP被屏蔽的方式,大部分anycast CDN,使用其CDN任意未被墙IP访问即可。如果是网站的IP被屏蔽,并且该站没有使用CDN,那就完蛋了,不过IP封禁是顶格处理,一般只对Telegram、法轮功的IP使用。

DNS污染 对于不使用CF的网站,使用DoH即可。或者,如果该网站IP不频繁变动,本地固定IP即可。对于使用CF的网站,直接使用任意未被墙IP即可。这三种方法都能够避免产生明文的DNS查询。

SNI过滤 对于一些nginx配置不那么严格的网站,不传递SNI,或传递虚假的SNI,只要请求内部的http host指向正确的主机名,nginx就能够正常路由请求。对于使用CF的网站,一些大的网站的IP可能是no SNI IP,这种情况下可以使用虚假的SNI例如T1 T0这种,或者不带SNI?不过大多数情况,如果要连接使用CF的网站,建议使用DOH+ECH。当然,使用DOH只是为了拿到echconfig,而不是获得IP,因为上面讲过了,使用任意CF anycast IP即可,我们一般使用优选的IP。

举个例子:

  1. 客户端通过 DoH 查询 example.com 的 HTTPS/SVCB 记录
    拿到 ech=<ECHConfigList>

  2. 客户端访问的 URL 仍然是:
    https://example.com/

  3. 客户端不使用 DoH 返回的 A/AAAA 作为连接目标,
    而是把 TCP 连接目标覆盖成优选 IP,例如:
    1.1.1.1:443(自选IP)

  4. TLS 握手使用 ECH:
    外层 SNI = cloudflare-ech.com
    内层 SNI = example.com,加密

  5. Cloudflare 边缘收到连接后,解密 ECH,
    得到真实目标 example.com,
    然后选择 example.com 的证书和 zone 配置。

  6. TLS 建立后,HTTP 请求里的 Host/:authority 仍然是:
    example.com

这里的DoH服务器可以是你自己在CF上搭建的,或是v.recipes,总之,使用的DoH服务器如果也使用CF,也可以优选IP,速度很快。据我现在观察,v.recipes还没被墙,cloudflare-ech.com这个SNI也没被墙。很离谱,不过现在能用。

CF那边也没有阻止客户端优选,我们还是能够自选解析到路由更好的IP。还有,一些色情、博彩网站它们使用的是CF的BYOIP,CF目的是为了防止自己的边缘IP被国家政府屏蔽,但是这种网站你仍然可以在本地指向其它的边缘IP。

@xujunpeng 看看怎么样 :smiley:

1 个赞

直连也不是没有缺点的,任何有geo blocking的网站都无法使用,比如各类AI。除此之外,上上P站1080P视频还是很流畅的。

1 个赞

火星救援

人家在这里写的系列教程都不看吗

@xijinping19530615

是不是搬 :poop:太多,你的文章都被淹没了 :sweat_smile:

可以,已添加.

封IP是顶格处理没问题,但不是只对telegram 法轮功ip使用这么简单

提前写出来吧,不知道以后还有没有时间写了

之前提过方滨兴的DNS 污染是GFW里最绝妙的地方,绝妙在哪? 他先建立了一份IP黑名单,然后把DNS黑名单里的域名全部(污染)指向了IP黑名单里的IP ,一份名单,两处使用!当我第一次意识到这件事时直感叹到方教授太厉害了

IP 黑名单                 DNS 黑名单污染指向IP池               DNS 黑名单
|--------------|        |--------------|
|173.252.88.133|        |173.252.88.133|                      discord.com
|173.252.88.67 |        |173.252.88.67 |                    www.bbc.com 
|108.160.170.45|  =>    |108.160.170.45|                    www.twitch.tv
|157.240.10.32 |        |157.240.10.32 |          <=    www.wikipedia.org
|174.36.196.242|        |174.36.196.242|                  www.reddit.com
|199.59.149.204|        |199.59.149.204|                 www.instagram.com
|104.244.43.57 |        |104.244.43.57 |                   f-droid.org
|199.59.148.97 |        |199.59.148.97 |                  www.facebook.com
|....          |        |....          |                          ....
|--------------|        |--------------|

google IP
142.250.*.*

Telegram  IP 
...

以前DNS 污染黑名单指向的IP还要自己收集,现在可以在gfw.report 获取 https://gfw.report/publications/ndss25/zh/#app:a-an-example-ordered-pool-of-fake-ip-address

这里仅复制部分过来分析

173.252.88.133
173.252.88.67
108.160.170.45
157.240.10.32
174.36.196.242
199.59.149.204
104.244.43.57
199.59.148.97

然后通过 https://ipinfo.io/ 查询这些IP 的归属 ,可以发现dns污染指向的IP 就是facebook 、twitter 这些公司的IP

173.252.88.133 Facebook
173.252.88.67 Facebook
108.160.170.45 Dropbox
157.240.10.32 Facebook
174.36.196.242 Dallas
199.59.149.204 Twitter
104.244.43.57 Twitter
199.59.148.97 Twitter

再通过 ping.pe ping 一下,然后再tcp 一下443端口,如 https://tcp.ping.pe/104.244.43.57:443,发现这个IP 国内不通,国外通就能判定这个IP在IP黑名单里

(这里还有一种结果,就是国内不通,国外也不通,这时候不能直接判定这个IP在IP黑名单里,但也不能排除不在IP黑名单;因为即使这个IP 的服务器down了,也不代表这个IP不在GFW的IP黑名单里。)

当然google 家的IP , 如142.250.*.*这一段也在IP黑名单里,但没有成为DNS 黑名单污染指向IP,所以DNS 黑名单污染指向IP池 仅仅是IP黑名单中的一部分

到这里就可以得出结论了,先把绝对禁止访问的 Facebook Twitter 这类大公司的IP 列入IP黑名单,再把想要阻止访问的域名进行DNS抢答(污染)为IP黑名单里的IP,这样,DNS污染黑名单里的域名的数据包就变得和IP黑名单里域名(的数据包)一样永远无法到达

至于为什么是 Facebook Twitter Dropbox ?那就是另一个话题了


自己也可以测试

这里以discord.com域名为例用ping.pe来测试 https://dig.ping.pe/discord.com:A:8.8.8.8 ,作为公开测试只能用ping.pe ,也可以使用别的测试网站,请自行使用

Australia, Sydney NetActuate
discord.com. 300 IN A 162.159.137.232
discord.com. 300 IN A 162.159.136.232
discord.com. 300 IN A 162.159.128.233
discord.com. 300 IN A 162.159.138.232
discord.com. 300 IN A 162.159.135.232 [9 ms]
Mongolia, Ulaanbaatar EdgeNext
discord.com. 300 IN A 162.159.135.232
discord.com. 300 IN A 162.159.137.232
discord.com. 300 IN A 162.159.138.232
discord.com. 300 IN A 162.159.128.233
discord.com. 300 IN A 162.159.136.232 [58 ms]
Taiwan, Taichung Google
discord.com. 300 IN A 162.159.128.233
discord.com. 300 IN A 162.159.138.232
discord.com. 300 IN A 162.159.137.232
discord.com. 300 IN A 162.159.136.232
discord.com. 300 IN A 162.159.135.232 [6 ms]
China, Chengdu Tencent discord.com. 73 IN A 23.225.141.210 [29 ms]
China, Chongqing Tencent discord.com. 253 IN A 159.65.107.38 [27 ms]
China, Guangzhou Tencent discord.com. 157 IN A 157.240.0.18 [4 ms]
China, Nanjing Tencent discord.com. 85 IN A 199.59.148.201 [9 ms]
China, Jiangsu China Telecom discord.com. 150 IN A 108.160.165.53 [23 ms]
China, Jiangsu China Mobile discord.com. 240 IN A 157.240.2.36 [15 ms]
China, Jiangsu China Unicom discord.com. 108 IN A 199.59.148.15 [32 ms]
China, Lishui China Telecom discord.com. 140 IN A 69.63.176.143 [14 ms]
China, Lishui China Unicom discord.com. 126 IN A 128.121.146.109 [31 ms]
China, Lishui China Mobile discord.com. 68 IN A 128.242.245.125 [18 ms]
China, Qingdao Aliyun discord.com. 232 IN A 162.125.34.133 [21 ms]
China, Shanghai Aliyun discord.com. 215 IN A 128.242.240.157 [9 ms]
China, Shanghai Tencent discord.com. 249 IN A 202.160.129.6 [4 ms]

1 可以看到国外解析出的IP是 162.159.136.232 ,国内解析出的IP 与其不接近,那就肯定是污染了,这叫瞪眼判断,瞪眼判断多了对污染指向的IP熟悉了,瞪眼判断就会很准了

2 也可以进行把国内解析结果拿到 https://gfw.report/publications/ndss25/zh/#app:a-an-example-ordered-pool-of-fake-ip-address DNS 黑名单污染指向IP池里查询是否存在

3 用 https://ipinfo.io/ 查询这些IP 归属,再 ping 一下,tcp 一下443端口

23.225.141.210 CloudRadium
159.65.107.38 DigitalOcean
157.240.0.18 Facebook
199.59.148.201 Twitter
108.160.165.53 Dropbox
157.240.2.36 Facebook
199.59.148.15 Twitter
69.63.176.143 Facebook
162.125.34.133 Dropbox
202.160.129.6 Twitter

这一节也顺便解决了一个很古老的问题:怎么判断某个域名DNS污染了。

封IP怎么是顶格?是灵活度最低的方法

封IP有两种,一种是永封,一种是临时

只有部分永封的才会加入DNS污染的IP列表,列表不会经常更新

大型CDN的Anycast IP都在白名单

你猜猜为什么不污染到127.0.0.1

是的,DNS污染指向的IP列表(池) 基本就是 Facebook Twitter Dropbox,但是想不通的是Google 为什么没进列表,明明也是IP黑名单里基本不可能放出来的

为什么不污染到 127.0.0.1 ? 确实见过 应该不是GFW干的

pinSHA256 就是指定证书, 跟CA没关系了.

最初FB Twi的IP数量有限,Google的IP数量庞大且经常变动
墙对Google业务的封锁也不是一次完成,从搜索到Gmail被墙中间跨几年时间

现在FB有自建CDN而X套CF所以不再继续用IP黑名单,而是用SNI黑名单

DNS污染的IP池只是历史遗留物

改hosts去广告都知道要用回环,GFW是让你的请求能被路由到GFW先监控再丢弃

好的有时间试试

好的