obfs4 网桥适合于没有突破封锁工具的人,一旦无法自动获得网桥,选择手动获得的方式还是需要翻墙,这也是吊诡的地方。实话说,自己并不使用 obfs4,Mac 访问「深网」最主要的方式是直连翻墙路由;在外则配合 ShadowsocksX 使用。

路由直连

相比于 GfwList 或 RedSocks,ChnRoute / ChinaDNS 方案结合中国 IP 段列表,通过 iptables 规则判断,同时用 ChinaDNS 解决 DNS 污染。所有中国 IP 段的访问全部直连,使用国内 DNS 服务。非中国 IP 段的访问用 Shadowsocks 的 ss-redir 做 TCP 转发,DNS 使用墙外公共解析。具体可以参考这里,说得不能再详细了。

选择 ChnRoute / ChinaDNS 很明确是为了 Chromecast 投屏观看 Youtube / BBC / Fox / CBS / TED。RedSocks 连接实在太慢,每个 Request 都要 Attemp Direct Connection,撞南墙后才转发代理。视频网站的连接请求很杂,有 Akami 这种 CDN 加速,也有 edgesuite 和 scorecardresearch 这种对观看行为做数据采样的统计脚本,还有一些能记录你暂停观看的时点,恢复后从停止的地方开始播放。这些请求如果全部使用 RedSocks,速度可想而知。GfwList 就更不可能使用 Chromecast 了,GfwList 是照顾多数人的,无法为我定制更新,不能指望。自己维护 PAC 会产生本能抵触,一旦某个电视台更换 CDN 或后台收视统计服务,还得手动逐条添加,拉倒吧。

路由上部署 ChnRoute / ChinaDNS 另外一个好处是 Tor 可以直连,不用做任何设置。只要是非中国 IP 的 TCP 请求 (其实也没有中国的) 全部转发 ss-redir 走代理,从 VPS 连第一跳,握手完马上建立链路。可能是上海电信国际出口升级了,速度比以前快太多。

Open Settings 里选择没有 ISP 拦截和审查,因为这时路由与 VPS 之间已构建起一条 proxy tunnel。

然后也不使用本地代理,代理在路由上,不在本地,无需设置。

通过路由直接连接

所有数据都经路由端的 Shadowsocks 加密,通过 iptables 判断 IP,转发去 VPS,再由 VPS 负责接下去的 Tor 握手连接。只要那个 VPS 是自己独有的,并禁用 root、强口令或者直接私钥管理,那整个过程是安全的,仿佛置身墙外。查看了下,本次连接的出口节点在罗马尼亚。

这是节点的链路

Surge for Mac

在没有路由翻墙的条件下,Surge for Mac 并不能使用。它无法代理 Tor 发出的 TCP 请求,也无法区分流量。我试过指定 GeoIP,把用户与节点活跃的美国加拿大和中西欧北欧国家用 GeoIP 规则写入.surge.conf ,还是不行,Surge for Mac 只能代理 http/https 所致吧。

ShadowsocksX Works

同样没有路由翻墙的条件下,比如公共场合或外出,TorBrowser 可以配合 ShadowsocksX 使用,Global ModeAuto Proxy Mode 两种模式下都行。Open Settings 里选择 ISP 过滤或审查 Tor

获得 obfs4 网桥的步骤一样

选择使用本地代理

本地代理设置中对应 ShadowsocksX,选择 SOCKS 5,本地地址 127.0.0.1:1080,于是 TorBrowser 又能使用了。

这次出口是英国


无论是使用路由翻墙直连还是 ShadowsocksX 作为本地代理,整个过程嵌套了两个加密,一个是 Shadowsocks 的加密,从本机/路由到 VPS 就结束了,用来对抗网络封锁;另一个是 Tor 加密,从本地运行 Tor 的计算机到出口节点,用来进行匿名访问。出口节点以后的访问是明文还是加密就要看目标服务器有没有 SSL,最好不要在 Tor 里面进行登录操作,同时禁用 TorBrowser Cookies。