穿越虚拟混凝土

云水遥

⚠️ 消歧义 本文的主题不是“翻墙”、“VPN 的使用”或“内网穿透”

🥳 精品 本文受北京邮电大学及数据跨境安全网关认可

SSH

SSH 是一种加密网络协议,用来在不安全的网络中提供安全的网络服务。典型的应用有远程登录命令行,但其实任何(基于 TCP/IP 的)网络服务皆可通过 SSH 加密传输。 – [Secure Shell] on Wikipedia

在命令行界面键入以下的指令可以让你立即获得一个可用的 socks5 代理(可能需要登录凭证):

ssh -D 1080 -CNq <username>@<host>

键入以下指令,查看你的 socks5 代理是否正常工作:

curl --proxy "socks5://localhost:1080" cip.cc

你也可以换成任意一个你喜欢的查 IP 服务。示例输出:

IP      : <redacted>
地址    : 中国  台湾  台北市
运营商  : 国立台湾大学

数据二  : 台湾省台北市 | 国立台湾大学

数据三  : 中国台湾台北

显然,当 SSH 进程退出,代理服务器就没了。下文假设读者了解如何使用 nohup ... & (或任何其他工具)将进程挂到后台

Socks5

以上的 SSH 在 PC 上用起来较为方便,对于不便进行命令行挂机的移动设备就不行了。因此你可以使用服务器搭建一个简单的 socks5 代理:

git clone https://github.com/rofl0r/microsocks
pushd microsocks
make
./microsocks -1 -p 8080 -u user -P 0d000721 -b 0.0.0.0

(这软件只能运行在 POSIX 系统)

当端口号 >= 1024(Linux),该方法既不需要 root 权限,也不需要可以登录到 ssh。

Shadowsocks

Finally the Good Old Shadowsocks

忘记关于依赖包、手动编译和一键脚本的一切,现在是 2021 年了。

直接前往 https://github.com/shadowsocks/shadowsocks-rust/releases/ 下载你服务器平台(uname -m)对应的 binary 并解压缩

该二进制需要 glibc >= 2.18,如果不幸你的 glibc 版本(ldd --version)不够 2.18,那么遗憾的通知你,你只能使用以前的解决方案了!

如果你成功解压缩了,你应该会看到以 ss 开头的几个可执行文件。键入以下指令,立即获得一个 shadowsocks 服务:

./ssserver --server-addr 0.0.0.0:443 --encrypt-method chacha20-ietf-poly1305 --password 0d000721

你可能觉得,每次启动都要输入这么一长串参数有点傻。你可以创建 config.json 配置文件,但我不建议你这么做,因为如果你创建了就会发现原本只需要输入三个参数,JSON 里要写四个参数显得更傻了。你可以写成 bash 脚本或者 systemd service

配完服务端后,你还需要一个客户端把 shadowsocks 服务变成能用的 socks5 或者 http 代理(PC),或者直接代理系统流量(移动平台)。以下给出各个平台 de facto 的客户端(个人偏好,仅供参考)

这种方法也不需要特殊的权限。

Wireguard

讲真 Wireguard 是用来组网的,并不适合用来穿越虚拟混凝土,因此略去。

有诸多基于此协议的 VPN 软件,如 Cloudflare WARP (迷之可用性)

Omake: myth busters

关于混凝土成精的传闻

三人成虎

搭建并使用某些协议的代理服务器(如:Telegram 的 MTProxy)可能在数小时内遭到封锁

关于“小孩召开法”导致虚拟混凝土变得难以逾越的传闻

实践使用 shadowsocks 方案不会出现该问题

关于切尔诺贝利石棺的传闻

Run Forrest Run!


Newer: Services

Older: PKU GeekGame 1st writeup

Back to: Listing G2R