我们都知道,在中国大陆访问 Google 等国外网站面临无法访问的问题,这是因为存在网络审查制度,也就是大家所熟知的“墙”(以下称为 GFW )。
一、科学上网原理
简单来说,你在大陆的主机无法直接访问 Google ,但如果你使用一个境外的主机去访问 Google 就不存在被封锁的可能。那么我只要让境外的这个主机代替我去访问 Google ,并将数据传输给我在大陆的主机就行。
二、突破方法的发展历史
从 GFW 诞生至今,约有将近 30 年的历史。期间,各种绕过 GFW 的方法层出不穷
1998-2008
这一时段的 GFW 拦截手段相对单一,以 IP 封锁、 DNS 污染、 关键字过滤为主要拦截手段。
这个时候的对抗方法也很简单,修改 Hosts 文件,加密访问数据流量,基本就可以欺骗 GFW 的检测
2009-2014
大约在 2009 年后, GFW 引入了一个全新的技术:深度包检测( DPI )。也就是说,GFW 可以检测你的数据包特征,并进行匹配。如果有匹配上的特征就立即封锁。
此外,还有一个技术叫主动探测。 GFW 会向服务器发送测试数据包,如果服务器做出了响应,立刻封禁该 IP 。
这个时候,诞生了一个足以撼动整个业界的对抗技术:Shadowsocks。
Shadowsocks 是由 clowwindy 开发。工作原理也很简单:讲数据包全部加密,表现为无固定特征的随机流。这让 GFW 的 DPI 检测无法匹配,因此可以欺骗过审查。
此外,后人也在 Shadowsocks 的基础上进行改进,发明了 ShadowsocksR 。他可以将加密流量模拟成正常的 HTTP 或 TLS 流量。
2015-2021
Shadowsocks 虽然能加密数据包,呈现无固定特征的随机流。但“加密”和“完全随机”其实本身就是一种不正常的特征,毕竟正常访问一个网站的数据包是有特地特征的(如访问普通网页和看视屏网页的数据包大小分布和结构是不同的),如果展现的数据包是无特征的,那就能说明这个流量很可疑。
GFW 察觉到这一点,引入了机器学习和统计学行为分析,直接干掉了 Shadowsocks 的核心思路。
这个时候,反制的人们想到:既然加密数据包会被干掉,那我不如融入大刘,伪装成最常见的 HTTPS 网站。
这个时候就诞生了这样一个思路:
-
我自己买一个域名,并申请合法的 SSL/TLS 证书。
-
我在服务器上搭建一个真实的网页。入站时,从外部看是一个 100% 的合法 TLS 握手, GFW 来扫描的时候也只会看到一个普通网页。然而我带有正确秘钥的客户端去连接时才会切入代理逻辑。这样就算是 DPI 检测也不会有任何问题。
这就是 Trojan 和 VLESS + TLS + WebSocket + Web 。
2022-至今
GFW 很快就发现,我去看你这个域名时是个空白的页面,而且IP地址还在海外,并且流量很大,那这个域名和流量是有问题的。这样就把 Trojan 这一类的东西给干掉了。
2023 年,有位天才开发者也意识到了这一点。他想:既然自己搞一个域名网页,如果还要花费大量精力让 GFW 认识到这是个正常访问流量非常困难,那我不如借用已有的网站的证书和 TLS 握手特征,藏在大伞底下偷渡不就好了吗?因为一般情况下不可能完全封锁国外所有的网站。
这个非常前卫的设计思维诞生了目前最流行、最安全、最稳定的协议————REALITY。就算是 GFW 去查看时,REALITY 只会返回真正的服务器信息, GFW 只会看到你是真正合法的海外网站,且响应真实,完全就是瞒天过海。并且省去了自己搭建服务器等精力。
三、什么是 REALITY
REALITY 是一种针对 TLS 握手特征的反审查与伪装传输协议。其主要设计思路和核心非常的暴力:不再伪装成一个网站,而是直接‘借用’一个真实的第三方大厂网站。
目前, REALITY 是最为流行、最为安全且最为稳定的方案。
四、什么是 VLESS
简单来说,VLESS 是一种“轻量化、无额外加密”的代理协议。
VLESS 是 VMess 的进化版本。 VMess 有一个问题,就是我已经用 TLS 加密了,但 VMess自带加密,他还会把内部再加密一层,这就导致了有额外的 CPU 开销以及握手延迟。
VLESS 抛弃了自己内部的加密,只使用外层的 TLS 进行加密,内部只做极简的身份验证。
五、 VPS 的选择
现在的 VPS 提供商很多,著名的有 搬瓦工、DMIT、V.PS 。
针对大陆用户,我认为选择 VPS 时需要注意一下:
-
是否有三网优化线路(如 CN2GIA )。骨干网和优化线路在速度上的差距非常大,尤其注意晚高峰时段的延迟。
-
每个月可用的流量。一般来说至少有每月 100GB 的可用流量。
-
价格。当然越贵的越好,但是作为节点搭建,你只需要注意优化线路里性价比最高的那个就行,没必要一股脑追求最高配置。
-
支付手段。我上面给出的三家 VPS 提供商都支持支付宝。如果选择其他的 VPS 提供商需要注意是否支持中国大陆的支付方式。当然你有 Paypay 或者信用卡之类的就不需要注意这些。
六、 VLESS + REALITY 节点搭建过程
我以在 V.PS 上购买的 VPS 和 Windows 下操作作为演示。
1. 准备工作
首先你需要一个已经购买了的 VPS (建议系统选择 Debian 12 )。
其次你需要一个 SSH 工具(我使用的是 FinalShell )。
最后你的客户端要有代理工具(我是用的是 v2rayN )。
2. SSH 连接
在你购买了 VPS 后,厂商会给你的邮箱发送 Username、 Password 、 Main IP 。
建议使用 CMD ping 一下 Main IP 。如果没有丢包说明连接很正常。
打开 FinalShell ,添加连接。先填写名称(这个根据你自己来写)、主机( Main IP )、然后端口(默认 22 ,如果你没有更改端口就保持 22 )。在下方认证处,方法选择密码,填写用户名( Username )和密码 ( Password )。建议关掉智能加速。
完成上面后,开始连接。如果命令行出现了主机名,且下方文件处出现了文件内容,说明连接成功。
3. 环境配置
1)更新系统软件包与安装常见工具
这一步的重点是安装 curl 。
apt update -y && apt upgrade -y
apt install -y curl wget sudo socat git
2)完全取消防火墙限制(允许所有端口流量通过)
防止 iptables/nftables 或 ufw 拦截 3X-UI 面板及节点端口
# 如果安装了 ufw 则禁用
ufw disable 2>/dev/null
# 清空 iptables 规则
iptables -F
iptables -X
iptables -Z
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
3)开启 Linux TCP BBR 加速
Debian 12 默认内核已支持原生 BBR。
# 写入 BBR 配置
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
# 使配置生效
sysctl -p
验证:
sysctl net.ipv4.tcp_congestion_control
如果返回 net.ipv4.tcp_congestion_control = bbr 则表示配置成功。
4)安装并配置 3X-UI 面板
这里推荐使用维护最活跃、支持 Xray-core 原生最新特性的 MHSanaei 版本的 3X-UI。
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)
这里可能出现一些问题,全部选默认。如果出现让你选择端口,请填写 10000-65000 之间的一个数就行。
最后会提供 Username 、 Password 、 Port 、 WebBasePath 、 Database 、 Access URL 、 API Token 。
4. 设置入站
根据提供的 Access URL 进入3X-UI面板,输入 Username和 Password 登录。
登录后,在左侧栏里打开 入站 ,点击 添加入站 。
基础配置里,首先打开 启用, 备注里填自己想写的名字,下面协议里选 vless , 地址不填,端口填 443 。
协议里,生成密钥保持默认,右边点击生成,自动生成解密和加密。
传输不管
安全里,安全选择 Reality , uTLS 选择 chrome ,目标里,点击右侧查找目标,跳出来的窗口选一个可用的目标,点击使用,他会自动填充。
以上完成后,点击保存更改。
5. 配置到代理软件
注意,如果不进行下面步骤,此时直接导出链接或导出订阅链接,内容是空的!!!
点击左侧客户端,添加客户端。
跳出来的界面里,填写自己的邮箱,在下面关联入站时添加自己的入站,最后设置启用,点击保存。
此时再回到入站,导出的链接或导出的订阅链接就有内容了。
我一般是复制订阅链接。
在 v2rayN 中,点击订阅分组,然后点解订阅分组设置,点击添加。
跳出来的窗口里,别名自己填,可选链接里填入订阅链接。点击确定后退出。
回到 v2rayN 主界面,在订阅分组里点击更新全部订阅(不使用代理),随后稍等片刻,就可以看到代理追加了。