自建 VPS 代理:我的小鸡从出生到 VLESS + REALITY

写作时间:2024年4月2日
本来只是想搭一个自己的 VPS 代理,结果一不小心就从“买台小鸡玩玩”发展成了“顺便写篇文章记录一下”。经典的只改一行配置,最后开了一个新副本 w
本文记录我在自己的服务器上进行远程访问、网络测试和个人设备连接的过程。不讨论批量代理、扫描、攻击或绕过平台限制,大家把自己的服务器当成自己的服务器用就好,不要突然开始扮演反派角色。
使用 VPS 和代理服务时,请遵守服务器提供商的服务条款以及所在地区的法律法规。不要把它用于攻击、批量注册、垃圾邮件、恶意爬取或其他未经授权的活动。
一、先简单理解 VPS 代理
VPS 可以理解成一台放在远程机房里的虚拟服务器。它不是魔法少女变身器,也不会自动发放“绝对匿名”成就。搭建代理后,设备的大致访问路径会变成:
本地设备 → VPS 服务器 → 目标网站或服务这样做通常有几个用途:
- 在外出或公共网络环境下,通过自己的服务器访问个人服务;
- 给多个设备提供统一的网络出口;
- 学习 Linux、SSH、网络协议和服务器运维;
- 为开发、测试和远程访问环境提供一个固定入口。
但 VPS 代理并不等于匿名,千万不要看到“代理”两个字就脑补成隐身斗篷:
- VPS 服务商可以看到服务器的网络使用情况;
- 目标网站通常能看到 VPS 的出口 IP;
- 代理节点不会替代 HTTPS,也不会自动保护设备上的恶意软件;
- 密码、私钥、UUID、订阅链接和配置文件泄露后,别人可能直接使用你的服务器。
所以,自建代理真正的意义是拥有一个自己可以管理、审计和关闭的网络出口,而不是从此消失在互联网里。想完全隐身的话,建议先从关闭显示器开始,虽然效果也很有限(´・ω・`)
二、准备服务器
我使用的是手里的 DMIT 服务器,具体是控制台里购买的 64 相关方案,下面就拿这只小鸡当实验对象。不同套餐的 CPU、内存、磁盘、流量和网络线路可能不同,最终还是以控制台显示为准。
购买服务器后,一般需要在服务商后台完成这些操作:
- 选择机房和网络方案;
- 选择操作系统镜像;
- 设置 SSH 密钥或临时密码;
- 确认服务器的 IPv4、IPv6、登录用户名和 SSH 端口;
- 等待系统安装完成。
新手建议选择自己熟悉的发行版,例如 Debian 或 Ubuntu。系统版本不必盲目追新,稳定、文档多、自己能排错才是王道。毕竟服务器不是抽卡,版本号越大不代表战斗力越高 w

三、为什么推荐使用 SSH 密钥
SSH 登录可以使用密码,也可以使用密钥。对于长期运行的 VPS,我更推荐使用 Ed25519 SSH 密钥。
密钥登录的基本原理并不复杂:
- 私钥保存在自己的电脑上,不能上传给任何人;
- 公钥放在服务器的
~/.ssh/authorized_keys中; - 登录时,服务器验证你是否持有对应的私钥;
- 私钥本身不会通过网络发送。
可以把它想象成一把钥匙:公钥放在门上,私钥留在自己手里。私钥一旦发出去,就相当于把家门钥匙贴到了电线杆上,下一秒就可能进入“为什么服务器流量突然爆炸了”的剧情。
相比密码,密钥的优点是:
- 更不容易被暴力猜测;
- 不需要在服务器上保存可直接输入的登录密码;
- 可以为不同设备创建不同密钥,单独撤销某台设备的访问权限;
- 配合密码短语后,即使私钥文件被复制,也增加了一层保护。
在本地生成密钥:
ssh-keygen -t ed25519 -C "daisheng-vps"生成后通常会得到:
~/.ssh/id_ed25519 # 私钥,只能自己保存~/.ssh/id_ed25519.pub # 公钥,可以上传到服务器私钥不要上传到网盘、公开仓库或聊天群,也不要把包含私钥的整个 .ssh 目录打包发送。公钥可以给服务器,私钥请和它保持安全距离,像对待银行卡密码一样对待它。
如果服务商后台支持直接填写 SSH 公钥,推荐在安装系统时直接粘贴 id_ed25519.pub 的内容。连接命令通常类似:
ssh -i ~/.ssh/id_ed25519 root@服务器IP如果服务商修改了 SSH 端口,则使用:
ssh -i ~/.ssh/id_ed25519 -p SSH端口 root@服务器IP第一次连接时,SSH 会显示服务器指纹。确认指纹来自服务商控制台或服务器控制台后,再接受它,不要对陌生指纹无脑输入 yes。这一步虽然没有战斗动画,但很重要(`・ω・´)
四、通过 SSH 登录服务器
我在本地终端中使用 SSH 连接服务器:
ssh -i ~/.ssh/id_ed25519 root@服务器IP登录成功后,会看到类似下面的终端界面:

看到服务器主机名、系统信息或 root 提示符,说明这只小鸡已经成功孵化,可以开始下一阶段任务了。
连接成功后,不建议马上关闭当前终端。后面的防火墙和 SSH 配置如果操作错误,当前会话可能是重新登录服务器的最后机会。更稳妥的做法是:
- 保留当前 SSH 会话;
- 另开一个终端测试新配置;
- 确认新密钥和新端口可以登录;
- 最后再关闭旧的密码登录或旧端口。
不要在唯一的 SSH 会话里一边改配置,一边祈祷网络女神保佑。真的断掉之后,剧情通常不会自动回档。
五、先做基础系统维护
登录后先更新系统软件包:
apt updateapt full-upgrade -y这一步相当于给刚出生的小鸡打补丁。虽然看起来没有什么爽感,但不打补丁就直接开始跑服务,很容易进入“旧系统突然给我上强度”的支线。
如果使用的是其他发行版,应使用对应的包管理器。执行升级前,最好确认服务器没有正在运行的重要服务,并在服务商后台创建快照或备份。
基础安全建议:
- 使用 SSH 密钥,不长期使用 root 密码登录;
- 创建一个普通管理员账号,并确认
sudo可用; - 修改 SSH 配置前,先确认新配置没有语法错误;
- 防火墙只开放 SSH 端口、代理服务端口和确实需要的服务端口;
- 删除或停用不需要的服务;
- 不在文章、截图和公开仓库中展示私钥、密码、UUID、订阅链接和 REALITY 私钥;
- 定期查看流量、登录记录和系统日志。
不要为了“看起来更安全”就直接关闭 SSH 密码登录或修改端口。先确认密钥登录和新端口可用,再进行收紧配置,否则很容易把自己锁在服务器外面,然后对着控制台陷入沉思 w
六、拿到 VPS 后先测试质量
服务器能登录,不代表线路、IP 和磁盘性能就适合长期使用。正式安装代理之前,我会先给这只小鸡做一次入职体检,主要进行三类测试。
1. 融合怪测试
融合怪脚本通常会综合测试 CPU、内存、磁盘、系统信息和部分网络性能。原本的快捷用法是:
curl -L https://gitlab.com/spiritysdx/za/-/raw/main/ecs.sh -o ecs.sh && chmod +x ecs.sh && bash ecs.sh由于这会下载并执行远程脚本,比较稳妥的做法是先查看脚本内容。不要看到“一键”两个字就闭着眼冲,现实世界没有自动存档:
curl -fL https://gitlab.com/spiritysdx/za/-/raw/main/ecs.sh -o ecs.shless ecs.shchmod +x ecs.shbash ecs.shrm -f ecs.sh它的结果主要用于判断:
- CPU 和内存是否符合套餐描述;
- 磁盘读写性能是否异常;
- 系统版本和虚拟化环境是否正确;
- 网络基础指标是否值得继续测试。
测试脚本会更新,输出格式也可能变化。因此我会把它作为购买后的参考,而不是绝对结论。跑分很好看不等于所有网站都对你一见钟情,别被某一个漂亮数字骗婚 w

2. 网络质量测试
测试 IPv4 网络质量:
bash <(curl -Ls Net.Check.Place) -4这里的 -4 表示强制测试 IPv4。测试结果可以帮助判断延迟、丢包、线路质量和不同方向的连接情况。
需要注意:
- 一次测试只能代表当前时间段;
- 晚高峰和非高峰的结果可能不同;
- 单个测试脚本不能代表所有网站的实际体验;
- 如果服务器同时提供 IPv6,应另外测试 IPv6,不要用 IPv4 结果代替。
3. IP 质量测试
测试服务器公网 IP 的基础质量:
bash <(curl -Ls IP.Check.Place)IP 质量测试通常用于了解 IP 的归属、机房属性、历史风险和公开数据库中的基础评分。它可以作为选机参考,但不能保证某个网站一定能访问,也不能代替服务商的线路说明。

执行这类命令前,也应该确认脚本来源可信。远程脚本可能随时改变,重要服务器不要在不了解内容的情况下直接执行陌生的一键命令。测试是为了了解小鸡,不是为了给未知脚本举办欢迎会。
七、安装代理管理脚本
测试完成后,我使用 233boy 的 sing-box 安装脚本进行管理:
bash <(wget -qO- -o- https://github.com/233boy/sing-box/raw/main/install.sh)一键梭哈确实很爽,终端刷过一堆文字的时候,仿佛自己已经成为了 Linux 大魔法师。但脚本毕竟来自第三方仓库,不是 sing-box 官方项目本身,所以不要把它当成完全透明的魔法书。
使用前应注意:
- 先阅读项目说明和脚本内容;
- 关注脚本的更新时间、发布说明和变更记录;
- 不要把脚本当作完全透明的黑盒;
- 在重要服务器上执行前先创建快照;
- 安装完成后检查实际开放的端口和运行的服务。
如果不想直接通过管道执行,也可以先下载:
wget -O install.sh https://github.com/233boy/sing-box/raw/main/install.shless install.shbash install.shrm -f install.sh安装结束后,可以在终端输入:
sb
进入管理菜单。具体菜单名称会随脚本版本变化,一般可以用于:
- 查看已有节点;
- 添加节点;
- 删除节点;
- 更新 sing-box 或管理脚本;
- 查看配置和连接信息;
- 输出客户端需要的链接或二维码。
配置修改后,不要只看脚本提示“完成”。应该同时检查服务状态、监听端口和日志。否则很容易出现“菜单里显示成功,客户端却完全不认识它”的名场面。
八、为什么选择 VLESS + REALITY
我目前更倾向于使用 VLESS + REALITY,主要是因为它的配置结构比较适合个人自建节点,并且客户端生态相对完善。
简单理解:
- VLESS:一种轻量的代理协议,通常使用 UUID 进行客户端认证;
- REALITY:一种基于 TLS 握手行为的传输方案,负责建立更接近正常 TLS 流量的连接;
- 两者组合后,VLESS 负责协议和身份,REALITY 负责传输层连接方式。
REALITY 并不等于匿名,也不代表服务器一定不会被识别或封禁。它仍然依赖客户端兼容性、服务器配置、IP 质量、端口可达性和服务商网络环境。
协议不是卡牌游戏,不是名字越酷、稀有度越高就一定越强。能理解、能备份、能排错,才是适合自己的配置( ̄▽ ̄)b
常见协议对比
| 协议或组合 | 特点 | 优点 | 注意事项 |
|---|---|---|---|
| Shadowsocks | 轻量加密代理 | 配置简单、客户端多 | 具体表现依赖加密方式和网络环境 |
| VMess | 较早期的代理协议 | 历史客户端支持较多 | 新部署通常不作为首选,配置相对复杂 |
| Trojan | 基于 TLS 的代理 | HTTPS 兼容性较好 | 通常需要域名和证书,证书维护要做好 |
| VLESS + TLS | VLESS 配合标准 TLS | 结构清晰、生态成熟 | 一般需要域名和有效证书 |
| VLESS + REALITY | VLESS 配合 REALITY 传输 | 常用于个人自建,通常不需要自己申请证书 | 客户端兼容性、参数匹配和网络质量要求较高 |
| Hysteria2 / TUIC | 偏向高性能或 UDP 场景 | 某些网络环境下速度表现较好 | 对 UDP、客户端和网络环境依赖更明显 |
这个表格只是选型参考,不代表某个协议在所有地区、运营商和设备上都一定更快或更稳定。对个人服务器来说,优先选择自己能理解、能备份、能排查的方案,比盲目追求协议名称更重要。
九、创建和使用节点
通过 sb 管理菜单添加节点时,重点记录以下参数:
- 服务器地址;
- 监听端口;
- UUID;
- REALITY 公钥;
- short ID;
- SNI 或服务器名称;
- 传输方式和流控参数;
- 客户端使用的安全选项。
这些参数必须一一对应。只要其中一个参数写错,客户端就可能表现为超时、握手失败或连接后无法访问网络。这个阶段最常见的 Boss 不是高深算法,而是多打了一个空格。
不要手工把真实节点信息写进公开文章。文章中只应使用类似下面的占位符:
服务器地址:YOUR_SERVER_IP端口:YOUR_PORTUUID:YOUR_UUIDREALITY 公钥:YOUR_PUBLIC_KEYshort ID:YOUR_SHORT_ID节点链接、订阅地址和二维码都属于敏感信息。不要发布到公开仓库,也不要随意转发给不认识的人。如果怀疑泄露,应立即在服务器上删除旧节点并重新生成凭据。公开订阅链接就像把家门钥匙做成二维码贴到公告栏,观众确实会很多,但大概率不是你想要的那种观众。
十、安装完成后的验证
1. 检查监听端口
ss -lntup确认代理服务确实监听了预期端口,并且监听地址不是一个完全错误的本地地址。
2. 检查服务状态
如果脚本将 sing-box 注册为 systemd 服务,可以查看对应服务状态:
systemctl status sing-box --no-pager如果服务名称因脚本版本不同而变化,以 sb 菜单显示的服务名称为准。
3. 查看日志
journalctl -u sing-box -e --no-pager重点关注:
- 配置文件解析失败;
- 端口被占用;
- 权限不足;
- TLS 或 REALITY 参数不匹配;
- 时间不同步;
- 网络连接被拒绝。
4. 从客户端测试
客户端导入节点后,先测试最基本的连通性,再测试网页、软件包管理器和自己的业务服务。不要只根据“节点能导入”就判断部署成功。导入成功只是拿到了入场券,不代表 Boss 已经倒下。
如果无法连接,可以按这个顺序排查:
- 服务器 IP 是否填写正确;
- 服务是否正在运行;
- 端口是否监听;
- 服务商后台防火墙是否放行;
- 系统防火墙是否放行;
- UUID、REALITY 公钥、short ID、SNI 是否完全一致;
- 客户端时间是否准确;
- 服务器网络质量是否发生变化。
十一、日常维护
自建服务器不是安装完成后就可以完全不管。它更像一只需要定期投喂的电子宠物,至少需要做这些事情:
- 关注 VPS 到期时间和流量使用情况;
- 定期更新系统安全补丁;
- 更新 sing-box 或管理脚本前先创建快照;
- 只保留正在使用的节点和端口;
- 定期检查登录记录和异常流量;
- 节点凭据泄露后立即轮换;
- 不使用来源不明的配置文件;
- 不把服务器当成公共代理出售或转发给大量陌生用户;
- 记录每次修改过的端口、配置和服务版本。
可以给自己保留一份不包含敏感值的运维记录,例如:
服务器:DMIT 某 VPS系统:Debian / UbuntuSSH 端口:已记录在密码管理器代理端口:已记录在密码管理器安装日期:YYYY-MM-DD最近备份:YYYY-MM-DD最近更新:YYYY-MM-DD真实 IP、私钥、UUID、订阅链接和密码应放在密码管理器中,而不是放在这篇公开文章里。安全这件事平时像空气,出问题时就会突然变成主线剧情,所以还是提前留意比较好。
十二、总结
整个过程可以概括为:
购买 VPS→ 安装稳定系统→ 使用 SSH 密钥登录→ 更新系统并完成基础加固→ 运行融合怪、网络质量和 IP 质量测试→ 安装 sing-box 管理脚本→ 使用 sb 创建和管理节点→ 选择 VLESS + REALITY→ 导入客户端并逐项验证→ 定期更新、备份和检查日志对我来说,这次实践的重点不只是“把代理跑起来”,还包括:
- 学会使用 SSH 密钥管理服务器;
- 了解 VPS 的 CPU、磁盘和线路质量;
- 理解不同代理协议的适用场景;
- 掌握 sing-box 节点的基本管理方式;
- 养成备份凭据、检查日志和限制暴露面的习惯。
最终目标不是追求一条永远不变的“神线路”,而是搭建一个自己理解、自己维护、出现问题时能够定位和恢复的服务器环境。
至此,小鸡完成从“刚买回来的一台 VPS”到“可以正常管理的个人网络工具”的转职。接下来就好好维护,不要把它养成每天半夜报警的电子宠物就行了 w
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!



