序幕
小时候开始折腾电脑往往会因为访问不了国外网站处处受阻,然后再长大一点能零零散散找到一些临时能用的梯子,可能中间我们又结识了代理知道了墙的存在,再后来可能找到了稳定的梯子,可能甚至知道了几种加密协议,然后就会开始面对梯子总归是会要跑路的情况。那么,既然我们已经长大了,就该自己动手丰衣足食搭建自己的梯子了,我们会重新认识前面遇到过的东西。
材料
一台非大陆服务器,这篇博客
买一台服务器
我们可以直接从阿里云、腾讯云、百度云、华为云、七牛云,或者香港的htstack(这是我找到的相对便宜的了)直接买一台普通的海外服务器。
直接买轻量应用服务器就好了。和ECS有什么区别?我也不知道。
基本价格在¥30-¥300,000/月 不等,看你的喜好。1C1G即可,多多益善。
选择操作系统镜像
选Ubuntu,能选Ubuntu24.04最好。
安装docker
腾讯云有直装好的docker/ubuntu镜像,阿里云的docker镜像是ali自研的CentOS不推荐
Ubuntu装docker详见 http://readfrog.ltd/index.php/archives/23/
注意不需要配置国内源,因为服务器就在海外,回国慢
如果想一步到位,不想看碎碎念,请直接看 VLESS+RAW+Reality
snake:如果不想麻烦,可以直接使用squid
安装详见 http://readfrog.ltd/index.php/archives/22/ (还没写,先百度一下,或者问问deepseek老师)
squid是透明的http代理,如果你想访问civitai huggingface google youtube... ,那你就会喜提"该链接已被重置"。不出意料的,或者也许第一次遇到会很惊奇,种花家颇负盛名的长城防火墙(GFW,Great Wall FireWall)发力了。
不过意外的,X(推特)似乎可以。
废案:WireGuard
虽然叫WireGuard,但很遗憾,Guard不了一点,在GWF面前还是太小儿科了。虽然有基本的加密,但是特征还是很明显:
- 握手发起包永远是 148 字节
- 响应包永远是 92 字节
- 第一个字节固定是
0x01、0x02 - 没有任何伪装,裸奔的 UDP
GFW 的 DPI(深度包检测)扫到这种固定特征,自动就把它标记/干扰了。
典型的症状
典型的症状就是,能成功链接,但访问网站就是加载不出来,数据流量只有几b-几kb。
如果我们想检查是否是主机转发问题,并执行了这两个命令的话:docker exec -it wg-easy tcpdump -i wg0 -n 和另开一个 sudo tcpdump -i eth0 -n udp port 51820
如果我们没配置出错,大概率会看到两个命令的结果都是:
19:01:14.060841 IP 36.28.198.45.34469 > 172.17.25.152.51820: UDP, length 148
19:01:14.061053 IP 172.17.25.152.51820 > 36.28.198.45.34469: UDP, length 92
19:01:19.053162 IP 36.28.198.45.34469 > 172.17.25.152.51820: UDP, length 148
19:01:19.053397 IP 172.17.25.152.51820 > 36.28.198.45.34469: UDP, length 92解析
这就是 GFW 对 WireGuard 的一种典型打法
36.28.198.45.34469 > ...51820: UDP, length 148 ← 客户端发来的:148 字节
...51820 > 36.28.198.45.34469: UDP, length 92 ← 服务器回复的:92 字节- 每隔 ~5 秒重复一次,永远是 148 进 / 92 出
- 只有这两种固定长度的包,没有别的大小
这是 WireGuard 握手包的典型特征:
- 148 字节 = WireGuard 握手发起包(Handshake Initiation)
- 92 字节 = WireGuard 握手响应包(Handshake Response)
也就是说:客户端一直在重发握手请求,服务器每次都正常回应握手响应,但握手就是"完不成"——客户端发起→服务器响应→然后就没有下文了,每 5 秒(WireGuard 的重试间隔)又重来一遍。
而且你 eth0 上完全看不到任何数据包(transfer 数据包,长度会是各种大小),只有这两种固定的握手包。
这是 :
- 允许握手发起包(148)过去
- 允许握手响应包(92)回来
- 但破坏握手的"最终确认"环节,或者丢弃握手完成后的第一个数据包,导致握手永远无法真正建立
结论:GFW 正在干扰你的 WireGuard 握手
平时不以为然的信息对抗,在这种地方就能体现出来。如果你要问,为什么以前按月付费的梯子就没事?因为一般的商业梯子都起码会采用VLESS等的混淆措施,比如下面要讲的:
VLESS+RAW+Reality
安装3x-ui
创建数据目录
mkdir -p /opt/3x-ui/db
mkdir -p /opt/3x-ui/cert启动3x-ui
docker run -d \
--name 3x-ui \
--restart unless-stopped \
-p 2053:2053 \
-p 443:443 \
-v /opt/3x-ui/db:/etc/x-ui/ \
-v /opt/3x-ui/cert:/root/cert/ \
ghcr.io/mhsanaei/3x-ui:latest检查启动情况
docker ps | grep 3x-ui
docker logs --tail 50 3x-ui放行端口
sudo ufw allow 2053/tcp
sudo ufw allow 443/tcp云厂商的云防火墙也要注意放行2053和443
注意:443端口不能被占用!如果有nginx也只能放弃!
此时我们打开浏览器输入服务器IP:2053就能看到登录页面
配置3x-ui账号密码
docker exec -it 3x-ui sh
x-ui我们能看到一个主菜单
The OS release is: alpine
╔────────────────────────────────────────────────╗
│ 3X-UI Panel Management Script │
│ 0. Exit Script │
│────────────────────────────────────────────────│
│ 1. Install │
│ 2. Update │
│ 3. Update to Dev Channel (latest commit) │
│ 4. Update Menu │
│ 5. Legacy Version │
│ 6. Uninstall │
│────────────────────────────────────────────────│
│ 7. Reset Username & Password │
│ 8. Reset Web Base Path │
│ 9. Reset Settings │
│ 10. Change Port │
│ 11. View Current Settings │
│────────────────────────────────────────────────│
│ 12. Start │
│ 13. Stop │
│ 14. Restart │
| 15. Restart Xray │
│ 16. Check Status │
│ 17. Logs Management │
│────────────────────────────────────────────────│
│ 18. Enable Autostart │
│ 19. Disable Autostart │
│────────────────────────────────────────────────│
│ 20. SSL Certificate Management │
│ 21. Cloudflare SSL Certificate │
│ 22. IP Limit Management │
│ 23. Firewall Management │
│ 24. SSH Port Forwarding Management │
│ 25. PostgreSQL Management │
│────────────────────────────────────────────────│
│ 26. Enable BBR │
│ 27. Update Geo Files │
│ 28. Speedtest by Ookla │
╚────────────────────────────────────────────────╝
Panel state: Running
Start automatically: Managed by Docker
xray state: Running
Please enter your selection [0-28]: 输入7,然后输入你想要的账号密码。二次验证是否开启凭喜好,建议不要开启。
等xui重启后,打开登陆页面输入账号密码登陆
配置3x-ui
3x-ui主要有两个配置:入站,用户
有能力的可以看官方文档 https://docs.sanaei.dev/docs/config/reality/
但实际文档写错了,还是不要看了。
入站配置
我写累了,直接抄作业吧,原理下次再补。注意一点:选择的Dest/SNI必须是服务器和客户端都能访问的,这是个大坑,因为咱家能访问的只有Cloudflare,选其他的都不行!



没展示的就保持默认
客户端配置添加客户端
注意入站要选择前面配置好的入站!
下载V2Ray
直接从github下载:https://github.com/2dust/v2rayN/releases/tag/7.23.4
梯子的文档都是中文,不得不说中国在梯子研究这方面真是遥遥领先啊
讲一个关于梯子的笑话吧: 外国人说,中国人是我见过最注重网络安全的群体。因为他妈从不用自己的真实ip访问github
不过有一说一,配置好dns,Github偶尔还是可以访问的
配置V2Ray

选中我们配置好的入站规则,点击通用操作-导出链接,然后复制链接
运行V2Ray-点击配置项-点第一个从剪贴板导入分享链接
然后恭喜你就可以正常使用了,后面的操作网上都有。如果用过别的,应该也轻车熟路了。
值得一提的是,这个分享链接其实只是简单的配置装配出的字符串,所有必要信息都明文编码在里面
运行展示


这个速度还是很不错的
结语
在连续折腾3个小时之后,我觉得能写到这样已经很不错了,我今天累了,就不叨叨了。



































































































































