裸 VPS 使用 sing-box 搭建 VMess 代理教程
本文档适用于裸 VPS 手动部署 sing-box,不使用面板、不使用域名、不使用 TLS、不使用 Reality。
配置方案:
1 | VMess + TCP + none + alterId 0 + 端口 18080 |
不过这个vps需要找那种有国内线路的,一般很多国外服务器国内无法直连,网速也偏慢.
注意:VMess 明文 TCP 不适合长期高强度使用。长期使用建议改成 VLESS + Reality 或其他带 TLS/伪装的方案。
一、准备条件
推荐系统:
1 | Debian 11 |
需要放行端口:
1 | TCP 18080 |
需要客户端:
1 | v2rayN |
二、登录 VPS
本地电脑执行:
1 | ssh root@你的VPS_IP |
例如:
1 | ssh root@154.44.1.72 |
如果遇到 SSH 指纹变更警告:
1 | WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! |
可以先删除旧指纹:
1 | ssh-keygen -f ~/.ssh/known_hosts -R '你的VPS_IP' |
然后重新连接:
1 | ssh root@你的VPS_IP |
三、更新系统并安装基础工具
1 | apt update |
如果是 Debian 10 buster,apt update 可能出现 404。可以临时切换到 archive 源:
1 | cp /etc/apt/sources.list /etc/apt/sources.list.bak |
如果是新 VPS,更推荐直接在服务商后台重装:
1 | Debian 12 |
四、安装 sing-box
添加 sing-box 官方 APT 源:
1 | mkdir -p /etc/apt/keyrings |
更新并安装:
1 | apt update |
检查版本:
1 | sing-box version |
五、生成 UUID
VMess 需要一个 UUID。
执行:
1 | cat /proc/sys/kernel/random/uuid |
示例输出:
1 | 6ed43346-b4bc-4761-bf80-2fc0be4e8950 |
后面的配置里需要用这个 UUID。
六、写入 sing-box 配置
创建配置目录:
1 | mkdir -p /etc/sing-box |
编辑配置文件:
1 | nano /etc/sing-box/config.json |
粘贴下面配置:
1 | { |
需要修改的地方:
1 | uuid:改成你自己生成的 UUID |
保存退出:
1 | Ctrl + O |
七、检查配置并启动 sing-box
检查配置:
1 | sing-box check -c /etc/sing-box/config.json |
如果没有报错,启动服务:
1 | systemctl enable sing-box |
如果看到:
1 | active (running) |
说明 sing-box 已经启动成功。
查看实时日志:
1 | journalctl -u sing-box --output cat -f |
退出日志查看:
1 | Ctrl + C |
八、确认端口是否监听
执行:
1 | ss -tulnp | grep 18080 |
正常应看到类似:
1 | tcp LISTEN 0 4096 0.0.0.0:18080 0.0.0.0:* users:(("sing-box",pid=xxxx,fd=xx)) |
重点确认:
1 | LISTEN |
如果没有输出,说明 sing-box 没有监听成功,需要检查配置和日志。
九、放行防火墙端口
如果 VPS 使用 ufw:
1 | ufw allow 18080/tcp |
如果显示:
1 | Status: inactive |
说明 ufw 没有启用,不一定是问题。
但还需要去 VPS 服务商后台检查安全组或防火墙。
添加入站规则:
1 | 协议:TCP |
常见后台入口名称:
1 | Firewall |
十、本地测试端口是否开放
需要在本地电脑测试,不是在 VPS 上测试。
macOS / Linux
1 | nc -vz 你的VPS_IP 18080 |
例如:
1 | nc -vz 154.44.1.72 18080 |
成功结果:
1 | Connection to 154.44.1.72 18080 port [tcp/*] succeeded! |
Windows PowerShell
1 | Test-NetConnection 你的VPS_IP -Port 18080 |
成功结果:
1 | TcpTestSucceeded : True |
十一、v2rayN 客户端配置
添加服务器,协议选择:
1 | VMess |
填写参数:
1 | 别名:my-vps |
示例:
1 | 地址:154.44.1.72 |
十二、VMess 导入链接示例
如果你的配置是:
1 | IP:154.44.1.72 |
可以使用下面的导入链接:
1 | vmess://eyJ2IjoiMiIsInBzIjoibXktdnBzIiwiYWRkIjoiMTU0LjQ0LjEuNzIiLCJwb3J0IjoiMTgwODAiLCJpZCI6IjZlZDQzMzQ2LWI0YmMtNDc2MS1iZjgwLTJmYzBiZTRlODk1MCIsImFpZCI6IjAiLCJzY3kiOiJhdXRvIiwibmV0IjoidGNwIiwidHlwZSI6Im5vbmUiLCJob3N0IjoiIiwicGF0aCI6IiIsInRscyI6IiJ9 |
如果 IP、端口或 UUID 不同,需要重新生成 VMess 链接。
十三、测试代理是否生效
v2rayN 中操作:
1 | 1. 选择节点 |
本地电脑测试出口 IP:
1 | curl ipinfo.io |
如果显示的是 VPS IP,例如:
1 | { |
说明本地流量已经走 VPS。
十四、常见排障命令
查看服务状态
1 | systemctl status sing-box |
查看最近日志
1 | journalctl -u sing-box --output cat -e |
查看实时日志
1 | journalctl -u sing-box --output cat -f |
检查端口监听
1 | ss -tulnp | grep 18080 |
检查配置文件
1 | sing-box check -c /etc/sing-box/config.json |
查看 sing-box 实际读取哪个配置文件
1 | systemctl cat sing-box |
如果看到:
1 | ExecStart=... sing-box run -c /etc/sing-box/config.json |
说明服务读取的是:
1 | /etc/sing-box/config.json |
如果看到:
1 | ExecStart=... sing-box run -c /etc/sing-box.json |
说明服务读取的是:
1 | /etc/sing-box.json |
此时需要把配置写到实际读取的路径,或者修改 systemd 服务文件。
十五、修改配置后的标准重启流程
每次修改配置后,按下面顺序执行:
1 | sing-box check -c /etc/sing-box/config.json |
如果要看连接日志:
1 | journalctl -u sing-box --output cat -f |
十六、常见问题
1. apt update 报 buster 404
原因:Debian 10 buster 已经过期,主源不再提供 Release 文件。
解决方法:切换到 archive 源,或者重装 Debian 12 / Ubuntu 22.04。
2. ss -tulnp | grep 18080 没有输出
说明 sing-box 没有监听端口。
检查:
1 | sing-box check -c /etc/sing-box/config.json |
3. 本地 nc 测试端口失败
可能原因:
1 | 1. sing-box 没启动 |
检查:
1 | ss -tulnp | grep 18080 |
4. v2rayN 连不上
检查客户端参数是否和服务端一致:
1 | 协议:VMess |
5. 代理通了,但某些网站提示地区不支持
这通常不是 sing-box 配置问题,而是网站对出口 IP、ASN、账号地区、Cookie、风控策略的判断。
可以测试出口 IP:
1 | curl ipinfo.io |
重点看:
1 | ip |
如果出口 IP 已经是 VPS IP,说明代理链路正常。
十七、完整客户端参数模板
1 | 协议:VMess |
十八、完整服务端配置模板
1 | { |
十九、总结
这套配置的核心是:
1 | sing-box 服务端:VMess 入站 |
最小可用条件:
1 | 1. sing-box 正常运行 |