V2Ray 自建节点教程
V2Ray 自建节点教程
目录
1. 前期准备
1.1 所需材料
| 材料 | 说明 |
|---|---|
| 云服务器 | 支持 Linux(推荐 Ubuntu 20.04+ 或 Debian 11+) |
| SSH 工具 | FinalShell、Xshell、PuTTY 或 PowerShell |
1.2 服务器要求
最低配置:
- CPU: 1核
- 内存: 512MB
- 带宽: 1Mbps+
- 硬盘: 10GB+
推荐配置:
- CPU: 1核
- 内存: 1GB+
- 带宽: 5Mbps+
- 硬盘: 20GB+
1.3 连接服务器
# Windows 使用 PuTTY 或 PowerShell
ssh root@你的服务器IP
# macOS/Linux 终端直接连接
ssh root@你的服务器IP -p 22
1.4 开放端口
# 防火墙放行常用端口
ufw allow 22/tcp # SSH
ufw allow 80/tcp # HTTP(证书申请)
ufw allow 443/tcp # HTTPS/TLS
2. 服务器配置选择
2.1 协议对比
| 协议 | 安全性 | 速度 | 抗封锁 | 配置难度 |
|---|---|---|---|---|
| VMess | 高 | 中 | 中 | 中 |
| VLESS | 高 | 快 | 中 | 中 |
| Trojan | 高 | 快 | 高 | 中 |
| Shadowsocks | 中 | 快 | 中 | 低 |
| WebSocket+TLS | 高 | 快 | 高 | 高 |
2.2 传输方式对比
| 传输方式 | 伪装程度 | 速度 | 抗封锁 | 适用场景 |
|---|---|---|---|---|
| TCP | 无 | 快 | 中 | 低审查环境 |
| WebSocket | 高(像浏览流量) | 中 | 高 | 高审查环境 |
| HTTP/2 | 高 | 快 | 高 | 中等审查环境 |
| gRPC | 高 | 快 | 高 | 高审查环境 |
2.3 推荐组合
推荐指数:★★★★★ 最佳选择(有域名)
VLESS + WebSocket + TLS + Cloudflare
推荐指数:★★★★★ 极致性能+抗封锁
VLESS + XTLS + REALITY(无需域名,最强伪装)
推荐指数:★★★★☆ 无域名方案(自签名证书)
VLESS + WebSocket + TLS(自签名证书)
客户端需开启"允许不安全连接"
推荐指数:★★★★☆ 入门选择
Shadowsocks + chacha20-poly1305
推荐指数:★★★☆☆ 快速测试
VLESS + TCP(最简单,但隐蔽性差)
推荐指数:★★★☆☆ V2Ray 5.x 用户
VLESS + TCP (V2Ray 5.x 不再支持 VMess)
2.4 VLESS + XTLS + REALITY(进阶方案)
如果你追求极致的性能和抗封锁能力,推荐使用 VLESS + XTLS + REALITY 组合。它是目前公认的、抗封锁能力最强的方案之一。
核心原理
REALITY(伪装)

- 不再需要域名和 TLS 证书
- 直接”借用”真实网站的证书和 TLS 指纹
- 通过模仿
www.microsoft.com、www.apple.com等网站的 TLS 握手 - 流量与访问这些官网完全一致,无法识别和封锁
XTLS(加速)
- 消除”二次加解密”冗余(TLS 加密 + WebSocket 封装)
- 穿透已加密流量,降低 CPU 负载
- 显著提升传输速度和降低延迟
方案对比
| 特性 | VLESS + WS + TLS | VLESS + XTLS + REALITY |
|---|---|---|
| 性能 | 相对较低,有额外性能开销 | 极高,XTLS 避免二次加解密 |
| 隐蔽性 | 较强,但 WebSocket 特征可能被识别 | 极强,最先进伪装技术之一 |
| 端口 | 通常需要 443 端口 | 可用任意端口(如 8443),更灵活 |
| 证书 | 需要域名和证书 | 无需域名,无需管理证书 |
| CDN 支持 | 可以套 CDN 隐藏真实 IP | 无法套 CDN,会破坏伪装 |
| 部署难度 | 简单 | 略复杂(需生成密钥、配置目标网站) |
风险与应对
| 风险 | 降低方法 |
|---|---|
| DNS 白名单检测 | 选择大型、IP 段多的网站作为 Target(如 microsoft.com、apple.com、Cloudflare 域名) |
| 中间人攻击检测 | 定期更换 REALITY 公钥/私钥 |
| 单点故障 | 保留 VLESS+WS+TLS 节点作为备用,两者搭配使用 |
手动配置(JSON)
{
"inbounds": [
{
"listen": "0.0.0.0",
"port": 36606,
"protocol": "vless",
"settings": {
"clients": [
{
"id": "你的UUID",
"flow": "xtls-rprx-vision"
}
],
"decryption": "none"
},
"streamSettings": {
"network": "tcp"
},
"security": "reality",
"realitySettings": {
"show": false,
"dest": "www.apple.com:443",
"xver": 0,
"serverNames": ["www.apple.com"],
"privateKey": "你的私钥",
"publicKey": "你的公钥",
"shortId": "abc123"
}
}
],
"outbounds": [
{
"protocol": "freedom",
"tag": "direct"
}
]
}
密钥生成
在 Linux 服务器上生成密钥对:
# 生成私钥(32字节,Base64编码)
openssl rand -base64 32
# 生成公钥(25519椭圆曲线)
# Xray 会根据私钥自动生成公钥
或在 3X-UI 面板中点击 “Generate key” 自动生成。
客户端配置要点
| 参数 | 值 |
|---|---|
| 协议 | VLESS |
| 地址 | 服务器 IP |
| 端口 | 你设置的端口(如 36606) |
| UUID | 服务端配置的 UUID |
| Flow | xtls-rprx-vision(启用 XTLS) |
| 传输 | TCP(不是 WebSocket) |
| 安全 | REALITY |
| SNI | 与 Target 域名一致(如 www.apple.com) |
| uTLS | chrome / firefox / safari |
注意:客户端的 Flow 参数
xtls-rprx-vision是启用 XTLS 加速的关键,必须填写。
2.5 无域名方案说明
适用场景:
- 没有域名
- 不想使用 Cloudflare
- 快速部署
配置要点:
| 节点类型 | 端口 | TLS | 说明 |
|---|---|---|---|
| TCP | 10086 | 关闭 | 最简单,但容易被封锁 |
| WS+TLS | 443 | 自签名 | 较安全,客户端需 allowInsecure |
客户端配置:
- 自签名证书需要勾选”允许不安全连接”
- 使用 IP 地址而非域名
2.6 有域名方案(Cloudflare)
适用场景:
- 已有域名
- 需要更好隐蔽性
- 不想暴露服务器真实 IP
配置要点:
- 将域名接入 Cloudflare
- DNS 解析到服务器 IP,开启代理(橙色云)
- 申请 Let’s Encrypt 证书或使用 Cloudflare Origin Certificate
- 配置 Nginx 反向代理
优势:
- Cloudflare 隐藏真实服务器 IP
- CDN 加速
- 更好的抗封锁能力
3. 自建节点(手动配置)
本章节适用于不使用图形面板,直接手动配置 V2Ray 的用户。
如果使用 3X-UI,请跳转到下一章节。
3.1 UUID 详解
UUID 是什么?
UUID 是 VLESS 协议的用户身份标识,像一把钥匙:
- 服务器配置允许的 UUID 列表
- 客户端连接时提供自己的 UUID
- 服务器验证 UUID 是否在白名单中
格式示例:
40552b9c-80f4-419f-b112-a6bba2b99338
生成方法:
cat /proc/sys/kernel/random/uuid
配置示例:
{
"inbounds": [{
"port": 10086,
"protocol": "vless",
"settings": {
"clients": [
{"id": "你的UUID", "email": "user1"},
{"id": "他的UUID", "email": "user2"}
],
"decryption": "none"
}
}]
}
说明:
email字段不是必填,可省略(仅用于标识用户)- 可以添加多个 UUID,支持多人共用
- 删除某个 UUID 即可禁止对应用户访问
- TCP 和 WS+TLS 节点的 UUID 可以共用或分开
管理多人访问:
| 需求 | 操作 |
|---|---|
| 添加新用户 | 在 clients 中添加新 UUID,重启服务 |
| 禁止某用户 | 删除对应 UUID,重启服务 |
| 限制来源 IP | 使用 ufw 防火墙规则 |
3.2 一键安装 V2Ray(官方脚本)
# 下载安装脚本
bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)
# 启动服务
systemctl start v2ray
systemctl enable v2ray
# 查看状态
systemctl status v2ray
3.3 安装 V2Ray 5.x(手动安装)
# 下载 V2Ray 5.x
wget https://github.com/v2fly/v2ray-core/releases/download/v5.10.0/v2ray-linux-64.zip
unzip v2ray-linux-64.zip
mv v2ray /usr/local/bin/
mv v2ctl /usr/local/bin/
chmod +x /usr/local/bin/v2ray /usr/local/bin/v2ctl
# 创建 systemd 服务文件(一键创建)
cat > /etc/systemd/system/v2ray.service << 'EOF'
[Unit]
Description=V2Ray Service
After=network.target
[Service]
ExecStart=/usr/local/bin/v2ray run -config /etc/v2ray/config.json
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
# 重载服务
systemctl daemon-reload
systemctl enable v2ray
systemctl start v2ray
3.4 VLESS + TCP 配置
{
"inbounds": [
{
"listen": "0.0.0.0",
"port": 10086,
"protocol": "vless",
"settings": {
"clients": [
{
"id": "你的UUID",
"flow": ""
}
],
"decryption": "none"
},
"streamSettings": {
"network": "tcp"
}
}
],
"outbounds": [
{
"protocol": "freedom",
"tag": "direct"
}
]
}
3.5 VLESS + WebSocket + TLS 配置
方案一:无域名(自签名证书)
{
"log": {"loglevel": "warning"},
"inbounds": [
{
"port": 443,
"listen": "0.0.0.0",
"protocol": "vless",
"settings": {
"clients": [{"id": "你的UUID"}],
"decryption": "none"
},
"streamSettings": {
"network": "ws",
"wsSettings": {
"path": "/v2ray"
},
"security": "tls",
"tlsSettings": {
"certificates": [
{
"certificateFile": "/etc/ssl/certs/cert.pem",
"keyFile": "/etc/ssl/private/key.pem"
}
]
}
}
}
],
"outbounds": [{"protocol": "freedom"}]
}
方案二:有域名(Let’s Encrypt/CF 证书)
{
"log": {"loglevel": "warning"},
"inbounds": [
{
"port": 443,
"listen": "0.0.0.0",
"protocol": "vless",
"settings": {
"clients": [{"id": "你的UUID"}],
"decryption": "none"
},
"streamSettings": {
"network": "ws",
"wsSettings": {
"path": "/v2ray"
},
"security": "tls",
"tlsSettings": {
"serverName": "你的域名",
"alpn": ["h2", "http/1.1"]
}
}
}
],
"outbounds": [{"protocol": "freedom"}]
}
3.6 双节点配置(同时监听 TCP + WS+TLS)
同时启用 TCP 和 WebSocket+TLS 两种节点:
{
"log": {"loglevel": "warning"},
"inbounds": [
{
"port": 10086,
"listen": "0.0.0.0",
"protocol": "vless",
"settings": {
"clients": [{"id": "第一个UUID"}],
"decryption": "none"
},
"streamSettings": {
"network": "tcp"
}
},
{
"port": 443,
"listen": "0.0.0.0",
"protocol": "vless",
"settings": {
"clients": [{"id": "第二个UUID"}],
"decryption": "none"
},
"streamSettings": {
"network": "ws",
"wsSettings": {
"path": "/v2ray"
},
"security": "tls",
"tlsSettings": {
"certificates": [
{
"certificateFile": "/etc/ssl/certs/cert.pem",
"keyFile": "/etc/ssl/private/key.pem"
}
]
}
}
}
],
"outbounds": [{"protocol": "freedom"}]
}
3.7 VMess + TCP 配置(V2Ray 4.x 旧版)
{
"inbounds": [
{
"listen": "0.0.0.0",
"port": 10086,
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "你的UUID",
"alterId": 0
}
]
},
"streamSettings": {
"network": "tcp"
}
}
],
"outbounds": [
{
"protocol": "freedom",
"tag": "direct"
}
]
}
3.8 Shadowsocks 服务器搭建
3.8.1 安装 Shadowsocks(单用户)
# Ubuntu/Debian
apt update
apt install -y shadowsocks-libev
# 启动
ss-server -c /etc/shadowsocks-libev/config.json
3.8.2 安装 simple-obfs(混淆插件)
# 安装依赖
apt install -y build-essential autoconf libtool
# 下载编译
git clone https://github.com/shadowsocks/simple-obfs.git
cd simple-obfs
./autogen.sh
./configure && make
make install
# 配置使用插件
3.8.3 Shadowsocks + chacha20-poly1305 配置
{
"server": "0.0.0.0",
"server_port": 8388,
"password": "你的密码",
"method": "chacha20-ietf-poly1305",
"timeout": 300,
"fast_open": true
}
3.8.4 Shadowsocks + TLS 插件配置
{
"server": "0.0.0.0",
"server_port": 8388,
"password": "你的密码",
"method": "chacha20-ietf-poly1305",
"timeout": 300,
"fast_open": true,
"plugin": "obfs-local",
"plugin_opts": "obfs=tls;failover=你的域名;failover=127.0.0.1"
}
3.8.5 启动命令
# 前台运行
ss-server -c /etc/shadowsocks-libev/config.json
# 后台运行
nohup ss-server -c /etc/shadowsocks-libev/config.json &
# 查看运行状态
ps aux | grep ss-server
netstat -tlnp | grep 8388
3.9 Trojan 服务器搭建
3.9.1 端口冲突说明
冲突原因:
- V2Ray WS+TLS 默认用 443 端口
- Trojan 默认也用 443 端口
- 两者不能同时使用 443
解决方案:
| 方案 | V2Ray WS+TLS | Trojan | 说明 |
|---|---|---|---|
| 方案一 | 改用 8443 | 用 443 | Trojan 优先 |
| 方案二 | 用 80 端口(无TLS) | 用 443 | V2Ray 无加密 |
| 方案三 | 保持 443 | 不用 | 推荐,只用 V2Ray |
推荐: 如果只用 VLESS,不需要 Trojan,用方案一让 V2Ray WS+TLS 改端口。
3.9.2 安装 Trojan
# 下载
wget https://github.com/trojan-gfw/trojan/releases/download/v1.16.0/trojan-1.16.0-linux-amd64.tar.xz
tar xf trojan-1.16.0-linux-amd64.tar.xz
mv trojan /usr/local/bin/
# 创建配置目录
mkdir -p /etc/trojan
3.9.3 配置文件 /etc/trojan/config.json
cat > /etc/trojan/config.json << 'EOF'
{
"run_type": "server",
"local_addr": "0.0.0.0",
"local_port": 443,
"remote_addr": "127.0.0.1",
"remote_port": 80,
"password": [
"你的密码"
],
"ssl": {
"cert": "/etc/ssl/certs/cert.pem",
"key": "/etc/ssl/private/key.pem",
"sni": "example.com",
"alpn": ["h2", "http/1.1"]
}
}
EOF
3.9.4 启动 Trojan
方法一:前台运行(测试用)
/usr/local/bin/trojan -c /etc/trojan/config.json
方法二:后台运行
nohup /usr/local/bin/trojan -c /etc/trojan/config.json &
方法三:systemd 服务(推荐)
cat > /etc/systemd/system/trojan.service << 'EOF'
[Unit]
Description=Trojan Service
After=network.target
[Service]
ExecStart=/usr/local/bin/trojan -c /etc/trojan/config.json
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable trojan
systemctl start trojan
systemctl status trojan
3.9.5 客户端连接信息
| 项目 | 值 |
|---|---|
| 地址 | 服务器IP |
| 端口 | 443 |
| 密码 | 你设置的密码 |
| TLS | 开启 |
导入链接:
trojan://你的密码@服务器IP:443#Trojan
3.9.6 管理多用户
编辑 /etc/trojan/config.json,在 password 数组中添加多个密码:
{
"password": [
"密码1",
"密码2",
"密码3"
]
}
添加后重启:
systemctl restart trojan
3.9.7 常用命令
# 启动/停止/重启
systemctl start trojan
systemctl stop trojan
systemctl restart trojan
# 查看状态
systemctl status trojan
# 查看端口
netstat -tlnp | grep trojan
# 查看运行
ps aux | grep trojan
4. 3X-UI 一键部署
3X-UI 是图形化管理面板,自带 Xray 内核,无需单独安装 V2Ray。
4.1 面板推荐对比
| 面板 | 基于 | 特点 | 安装难度 |
|---|---|---|---|
| 3X-UI | Xray | 功能完整,界面友好 | 简单 |
| x-ui | Xray | 轻量级,简单易用 | 简单 |
| Marzban | Xray | 支持订阅、流量限制、多用户 | 中等 |
| s-ui | sing-box | 现代化界面 | 简单 |
4.2 3X-UI 安装
适用场景:
- 需要图形化界面管理节点
- 需要 SSL 证书配置
- 需要流量统计和用户管理
- 不想手动编辑配置文件
安装命令:
sudo apt update && sudo apt upgrade -y
sudo apt install curl -y
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)
安装交互设置:
- 是否自定义面板端口:
y→ 如54321 - 设置用户名、密码
- 面板路径:默认回车
- SSL:先选
2(自签)或3(稍后配置)
访问地址:
http://服务器IP:54321
https://域名:54321
4.3 3X-UI 常用命令
# 面板服务
systemctl start x-ui # 启动
systemctl stop x-ui # 停止
systemctl restart x-ui # 重启
systemctl status x-ui # 状态
# 实时日志
journalctl -u x-ui -f
4.4 3X-UI 配置 SSL 证书
1. 安装 acme.sh
curl https://get.acme.sh | sh
source ~/.bashrc
2. 注册邮箱(必须)
acme.sh --register-account -m 你的邮箱
3. 放行 80 端口
sudo ufw allow 80/tcp
4. 申请证书(standalone 模式)
acme.sh --issue -d 你的域名 --standalone
5. 证书默认路径
/root/.acme.sh/你的域名_ecc/
├── fullchain.cer # 证书链
├── 你的域名.key # 私钥
6. 创建证书目录并复制
mkdir -p /etc/3x-ui/certs
cp /root/.acme.sh/你的域名_ecc/fullchain.cer /etc/3x-ui/certs/cert.pem
cp /root/.acme.sh/你的域名_ecc/你的域名.key /etc/3x-ui/certs/key.pem
7. 设置安全权限
chmod 644 /etc/3x-ui/certs/cert.pem
chmod 600 /etc/3x-ui/certs/key.pem
8. 面板配置
- 面板设置 → SSL证书设置
- 证书路径:
/etc/3x-ui/certs/cert.pem - 私钥路径:
/etc/3x-ui/certs/key.pem
9. 重启面板
systemctl restart x-ui
4.5 3X-UI 添加入站(VLESS+WS+TLS)
入站配置步骤:
基本信息
- 协议:
vless - 端口:
443 - 监听:
0.0.0.0 - 备注:
VLESS-WS-TLS
- 协议:
传输配置
- Network:
ws - 路径:
/v2ray - Host:你的域名
- Network:
TLS 配置
- 启用TLS:勾选
- 证书/私钥路径:同上
客户配置
- Add Client → 生成 UUID
- Flow:
none - Encryption:
none
验证端口监听
netstat -tlnp | grep 443
4.6 3X-UI 添加入站(VLESS+XTLS+REALITY)
如果追求极致性能和抗封锁能力,推荐使用 VLESS+XTLS+REALITY。无需域名和证书,通过借用真实网站的 TLS 指纹实现最强伪装。
入站配置步骤
基本信息
- 协议:
vless - 端口:
36606(或自定义高位端口) - 监听:
0.0.0.0 - 备注:
VLESS-XTLS-REALITY
- 协议:
传输配置
- Network:
TCP (RAW)(不是 WebSocket/XHTTP)
- Network:
安全设置
- 安全:选择
Reality
- 安全:选择
REALITY 参数
| 参数 | 说明 | 示例 |
|---|---|---|
| uTLS | 模仿的浏览器指纹 | chrome |
| Target | 借用的目标网站(必须是真实 HTTPS) | www.apple.com:443 |
| SNI | 必须与 Target 的域名一致 | www.apple.com |
| Public Key | 点击生成 | (自动生成) |
| Private Key | 服务器端保留 | (自动生成) |
| Short IDs | 可留空或填短字符串 | abc123 |
- 客户端配置
- Add Client → 生成 UUID
- Flow:
xtls-rprx-vision(启用 XTLS 加速的关键) - Encryption:
none
Target 参数说明
| 参数 | 含义 |
|---|---|
| Target | REALITY 借用的外部真实网站(固定 443 端口) |
| 你的代理端口 | 客户端连接的端口(如 36606) |
注意:Target 保持
www.apple.com:443(或类似),不要改为你的代理端口!
风险与应对
| 风险 | 降低方法 |
|---|---|
| DNS 白名单检测 | 选择大型网站作为 Target(如 microsoft.com、apple.com) |
| 中间人攻击检测 | 定期更换 REALITY 公钥/私钥 |
| 单点故障 | 保留 VLESS+WS+TLS 节点作为备用 |
v2rayN 客户端配置
| 参数 | 值 |
|---|---|
| 协议 | VLESS |
| 地址 | 服务器 IP |
| 端口 | 36606 |
| UUID | 面板生成的 UUID |
| Flow | xtls-rprx-vision |
| 传输 | TCP |
| 安全 | REALITY |
| SNI | www.apple.com |
| uTLS | chrome |
4.7 3X-UI 端口 443 冲突解决
现象:
Failed to listen on 0.0.0.0:443
排查命令:
sudo lsof -i :443
解决方案(手动 V2Ray 占用):
systemctl stop v2ray
systemctl disable v2ray
systemctl restart x-ui
4.8 3X-UI 客户端配置(v2rayN)
- 面板入站 → 操作 → 查看配置 → 复制链接
- v2rayN → 从剪贴板导入
- 右键节点 → 编辑 → TLS
- 勾选:跳过证书验证(allowInsecure)
- SNI:填写域名
- 测试连通性
4.9 Marzban 安装(备选)
安装命令:
# 一键安装
bash <(curl -s https://raw.githubusercontent.com/Gozargah/Marzban-scripts/master/marzban.sh)
基本命令:
# 查看状态
marzban status
# 启动/停止/重启
marzban start
marzban stop
marzban restart
# 查看日志
marzban logs
访问面板:
- 默认端口:8000
- 用户名:admin
- 密码:安装时生成
特点:
- 支持 VLESS、Trojan、Shadowsocks、VMess
- 支持订阅、流量限制、到期时间
- 支持 API 可对接 otherpanel 等前端
4.10 面板常用命令速查
# 面板服务(3X-UI/x-ui)
systemctl start x-ui
systemctl stop x-ui
systemctl restart x-ui
systemctl status x-ui
# 实时日志
journalctl -u x-ui -f
# 端口监听
netstat -tlnp | grep 443
netstat -tlnp | grep 54321
# 防火墙放行
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 54321/tcp
# 证书复制通用模板
cp ~/.acme.sh/域名_ecc/fullchain.cer /etc/3x-ui/certs/cert.pem
cp ~/.acme.sh/域名_ecc/域名.key /etc/3x-ui/certs/key.pem
5. 公共部分
5.1 域名购买与解析
域名注册商:
- Namesilo(性价比高)
- 阿里云
- Cloudflare(免费)
添加 DNS 解析:
- 登录域名管理后台
- 添加 A 记录:
- 主机记录:
@或www - 记录值:服务器公网 IP
- 主机记录:
- 验证解析:
ping 你的域名
5.2 TLS 证书申请(acme.sh)
安装 acme.sh:
curl https://get.acme.sh | sh
source ~/.bashrc
注册账号:
acme.sh --register-account -m 你的邮箱
申请证书(standalone 模式):
# 放行80端口
ufw allow 80/tcp
# 申请
acme.sh --issue -d 你的域名 --standalone
证书路径:
/root/.acme.sh/你的域名_ecc/
├── fullchain.cer # 证书链
├── 你的域名.key # 私钥
5.3 客户端配置生成规则
VMess 链接格式
vmess://base64({"v": "2", "ps": "名称", "add": "IP", "port": "端口", "id": "UUID", "aid": 0, "net": "tcp/ws", "type": "none", "host": "", "path": "/路径", "tls": "tls/aio"})
VLESS 链接格式
vless://UUID@IP:端口?encryption=none&type=tcp/ws&path=/路径#名称
Trojan 链接格式
trojan://密码@IP:端口#名称
Shadowsocks 链接格式
ss://base64(method:password@IP:端口)#名称
5.4 常用端口
| 端口 | 用途 | 备注 |
|---|---|---|
| 80 | HTTP | 可用于 ACME 申请证书 |
| 443 | HTTPS/TLS | 常用伪装端口 |
| 8443 | 自定义 TLS | 可替代 443 |
| 10086 | VMess/VLESS TCP | 自定义端口 |
| 54321 | 3X-UI 面板 | 默认面板端口 |
| 8000 | Marzban 面板 | 默认面板端口 |
| 8388 | Shadowsocks | 默认端口 |
5.5 客户端下载与配置
各平台推荐客户端
| 操作系统 | 推荐客户端 | 下载来源 | 简要特点 |
|---|---|---|---|
| Windows | v2rayN | GitHub Releases | 功能强大,图形化界面,支持多种协议和订阅 |
| Clash for Windows | GitHub Releases | 界面美观,基于规则分流,对新手友好 | |
| macOS | V2rayU | GitHub Releases 或 brew install --cask v2rayu |
经典 macOS 客户端,稳定易用 |
| ClashX | GitHub Releases | 轻量简洁,macOS 热门选择 | |
| Android | v2rayNG | Google Play 或 GitHub | 功能全面,支持二维码扫描和订阅 |
| iOS | Shadowrocket | App Store (付费) | 功能强大,iOS 主流选择 |
| Quantumult X | App Store (付费) | 专业复杂,适合高阶用户 | |
| Linux | v2rayL | GitHub Releases | 图形化界面,对 Linux 桌面用户友好 |
| Qv2ray | GitHub Releases | 跨平台,功能强大(已停止维护) |
核心提示:上述客户端基本免费且开源,务必从官方 GitHub 下载最新版本。
下载步骤(以 v2rayN 为例)
- 访问发布页面:打开
github.com/2dust/v2rayN/releases - 选择版本:下载最新的
.zip或.7z压缩包(解压即用版) - 运行客户端:解压后运行
v2rayN.exe即可
客户端配置步骤
- 添加节点:手动输入或扫描二维码导入节点信息
- 填写服务端信息:
- 类型:VLESS
- 地址:你的服务器 IP 或域名
- 端口:10086(TCP)或 443(WS+TLS)
- UUID:服务端配置的 UUID
- 传输:TCP 或 WebSocket
- TLS:TCP 节点关闭,WS+TLS 节点开启
- 允许不安全连接:仅 WS+TLS(自签名证书)时需要
- 测试连接:点击”使用”或直接启动代理测试
注意事项
时间同步:
V2Ray 对时间同步有严格要求,客户端和服务器的系统时间误差不能超过 1 分钟,否则可能无法连接。请在设备设置中开启”自动设置时间”功能。
网络环境:
访问 GitHub 网站有时可能不太稳定,这是正常现象,可能需要一些耐心。
macOS 安全警告:
首次打开非 App Store 下载的应用时,可能会提示”文件已损坏”。这时需要在”系统设置” > “隐私与安全性”中手动允许运行该应用。
客户端使用前提:
客户端本身只是一个工具,需要配合可用的服务器节点或订阅链接才能使用。
6. 问题清单与解决方案
问题 1:geoip.dat 文件损坏
现象:
Failed to load geoip.dat: Not Found
或
geoip.dat only has 9 bytes
原因:
geoip.dat 文件下载不完整或服务器返回了 404 页面
解决方案:
方法一:重新下载 geoip.dat
wget https://github.com/v2fly/geoip/raw/master/geoip.dat
mv geoip.dat /etc/v2ray/geoip.dat
方法二:使用域名路由(绕过 geoip)
- 在路由规则中使用
domainStrategy: "AsIs" - 使用 Cloudflare 等 CDN 隐藏服务器 IP
- 配置国内直连规则时不依赖 geoip
排查方法:
# 检查文件大小
ls -la /etc/v2ray/geoip.dat
# 正确大小应该 > 1MB
# 如果是 9 bytes 则是下载失败
问题 2:V2Ray 5.x 不支持 VMess 协议
现象:
VLESS tick/tack required
or
VMess not supported after V2Ray 5.0
原因:
V2Ray 5.x 版本移除了 VMess 协议支持,必须使用 VLESS
解决方案:
- 服务器端改用 VLESS 协议
{
"inbounds": [{
"protocol": "vless",
"settings": {
"clients": [{
"id": "你的UUID",
"flow": ""
}]
}
}]
}
客户端也必须选择 VLESS 类型
或降级到 V2Ray 4.x
bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh) --version 4.45.2
排查方法:
# 检查 V2Ray 版本
v2ray version
# 或
/usr/local/bin/v2ray version
问题 3:V2Ray 5.x 命令行参数变更
现象:
unknown flag: -config
原因:
V2Ray 5.x 更改了命令语法,从 -config 改为 run -config
解决方案:
V2Ray 4.x:
v2ray -config /etc/v2ray/config.json
V2Ray 5.x:
v2ray run -config /etc/v2ray/config.json
排查方法:
# 查看帮助
v2ray help
v2ray run --help
问题 4:端口 1080 被占用
现象:
port is already in use
listen tcp 0.0.0.0:1080: bind: address already in use
原因:
- 其他程序占用了 1080 端口(如 v2rayN、Shadowrocket 等)
- 系统中已有其他代理程序
解决方案:
方法一:更改代理端口
- 客户端使用其他端口如 10808、2080 等
方法二:查找占用进程
# Windows
netstat -ano | findstr :1080
tasklist | findstr PID
# Linux
lsof -i :1080
netstat -tlnp | grep 1080
方法三:关闭占用程序
# Windows 结束进程
taskkill /PID 进程ID /F
问题 5:systemd 启动失败但手动运行成功
现象:
systemctl start v2ray失败,状态failed (Result: exit-code)- 日志显示
Failed to build TLS config - 但直接运行
/usr/local/bin/v2ray run -config ...成功
原因:/etc/ssl/private/ 目录权限为 700,systemd 运行时(nobody 用户)无法进入,导致无法读取 key.pem。
解决:
chmod 755 /etc/ssl/private/
systemctl restart v2ray
排查方法:
# 查看详细日志
journalctl -u v2ray -n 50
# 检查进程
ps aux | grep v2ray
# 手动运行测试
/usr/local/bin/v2ray run -config /usr/local/etc/v2ray/config.json
问题 6:curl 测试返回结果解读
WS+TLS 节点:
curl -k https://服务器IP/v2ray -v
HTTP/1.1 400 Bad Request
这是正常的!说明 443 端口正常,正在等待 WebSocket 握手。
TCP 节点:
curl http://服务器IP:10086 -v
curl: (52) Empty reply from server
这也是正常的!VLESS TCP 不是 HTTP 服务器,curl 无法完整测试。
结论:
- curl 返回 Bad Request = 端口正常
- curl 返回 Empty reply = 端口正常
- 使用客户端(v2rayN)测试连接
问题 7:WebSocket 路径不正确
现象:
websocket: connection refused
或
failed to handshake
原因:
- 服务器 path 与客户端不匹配
- Nginx/Caddy 未正确代理 WebSocket
解决方案:
服务器 Nginx 配置:
location /v2ray {
proxy_pass http://127.0.0.1:10086;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
keepalive_timeout 60s;
}
问题 8:TLS 证书验证失败
现象:
tls: failed to verify certificate
或
certificate not trusted
原因:
- 证书过期
- 证书与域名不匹配
- 证书链不完整
解决方案:
- 检查证书有效期
openssl x509 -in cert.pem -noout -dates
- 重新申请证书
~/.acme.sh/acme.sh --renew -d 你的域名 --force
- 客户端跳过证书验证(仅测试用)
{
"tlsSettings": {
"allowInsecure": true
}
}
问题 9:geoip.dat 路由规则不生效
现象:
- 国内 IP 未走直连
- 国外 IP 未走代理
原因:
- geoip.dat 文件损坏或版本过旧
- 路由规则配置错误
解决方案:
- 更新 geoip.dat
wget https://github.com/v2fly/geoip/raw/master/geoip.dat -O /etc/v2ray/geoip.dat
systemctl restart v2ray
- 使用域名规则替代
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{
"type": "field",
"outboundTag": "direct",
"domain": ["geosite:cn"]
},
{
"type": "field",
"outboundTag": "direct",
"ip": ["geoip:private", "geoip:cn"]
}
]
}
问题 10:Shadowsocks 密码错误
现象:
failed to handshake: cipher method chacha20-ietf-poly1305 not supported
或
authentication error
原因:
- 客户端与服务端密码不一致
- 加密方式不支持
解决方案:
- 确保密码完全一致
- 确认加密方式两端匹配
服务端配置:
{
"server": "0.0.0.0",
"password": "你的密码",
"method": "chacha20-ietf-poly1305"
}
问题 11:服务器带宽不足
现象:
- 速度慢、卡顿
- 延迟高
原因:
- 服务器带宽限制
- 网络拥堵
- 线路不稳定
解决方案:
- 选择优质线路(CN2、CN2 GIA)
- 开启 BBR 加速
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
- 使用 Cloudflare CDN 加速
问题 12:客户端导入节点格式不被识别
现象:
- 导入 vmess:// 链接无效
- 导入后节点信息不完整
原因:
- 链接格式不正确
- Base64 编码错误
解决方案:
- 使用正确的链接格式
- 检查 Base64 编码是否正确
- 手动填写节点信息
Base64 解码验证:
# Linux/macOS
echo "base64字符串" | base64 -d
# 在线工具
# https://www.base64decode.org/
问题 13:VLESS 协议 UUID 格式错误
现象:
Invalid user
或
UUID format error
原因:
- UUID 格式不符合标准
- 客户端与服务端 UUID 不一致
解决方案:
- 生成标准 UUID
# Linux
uuidgen
# 在线生成
# https://www.uuidgenerator.net/
# 标准格式:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
# 例如:40552b9c-80f4-419f-b112-a6bba2b99338
- 确保客户端与服务端 UUID 完全一致
问题 14:新增 VLESS+WS+TLS 节点无法连接(UUID 不生效)
现象:
- 服务器已配置双节点(TCP 和 WS+TLS),原有 WS+TLS 节点(UUID A)正常工作
- 新增一个 WS+TLS 节点(UUID B),客户端配置正确但无法连接,延迟测试显示
-1 - 将客户端 UUID 改为 UUID A 后可以正常连接
- 服务器配置文件中已添加 UUID B,
systemctl status v2ray显示服务运行正常
排查流程:
确认客户端配置正确:复制正常工作的节点,仅修改 UUID,仍无法连接 → 排除客户端传输配置问题
交换 UUID 测试:
- 将正常节点的 UUID 改为 UUID B → 无法连接
- 将异常节点的 UUID 改为 UUID A → 可以连接
- 结论:UUID B 在服务端未生效
检查服务端配置文件:
cat /etc/v2ray/config.json显示 UUID B 已正确添加检查服务实际使用的配置文件路径:
systemctl status v2ray输出显示:
/usr/local/bin/v2ray run -config /usr/local/etc/v2ray/config.json
→ 发现服务实际读取的是/usr/local/etc/v2ray/config.json,而非/etc/v2ray/config.json检查实际配置文件内容:
cat /usr/local/etc/v2ray/config.json | grep -E '"id":'发现该文件中只有 UUID A,没有 UUID B
修改正确的配置文件,添加 UUID B,重启服务后问题解决
排查命令汇总:
# 查看服务实际使用的配置文件路径
systemctl status v2ray
# 检查实际配置文件中的 UUID 列表
cat /usr/local/etc/v2ray/config.json | grep -E '"id":'
# 检查服务监听的端口
ss -tlnp | grep v2ray
# 查看服务日志(无错误不代表配置被加载)
journalctl -u v2ray -n 50 --no-pager
原因:
- 系统中存在多个 V2Ray 配置文件(
/etc/v2ray/config.json和/usr/local/etc/v2ray/config.json) - systemd 服务单元中指定的配置文件路径是
/usr/local/etc/v2ray/config.json - 用户修改了错误的配置文件(
/etc/v2ray/config.json),导致修改未生效
解决办法:
确认服务实际使用的配置文件路径:
systemctl status v2ray | grep "config"编辑正确的配置文件(例如
/usr/local/etc/v2ray/config.json):sudo nano /usr/local/etc/v2ray/config.json添加新 UUID 到
clients数组:"clients": [ {"id": "原有UUID", "email": "1"}, {"id": "新UUID", "email": "2"} ],检查 JSON 格式:
cat /usr/local/etc/v2ray/config.json | python3 -m json.tool > /dev/null && echo "OK"重启 V2Ray 服务:
sudo systemctl restart v2ray sudo systemctl status v2ray # 确认 active (running)客户端使用新 UUID 测试连接
预防措施:
- 安装 V2Ray 时注意官方脚本默认配置文件路径为
/usr/local/etc/v2ray/config.json - 手动安装时若自定义 systemd 服务文件,需明确
-config参数指定的路径 - 修改配置前先用
systemctl status v2ray确认实际使用的配置文件位置 - 建议将所有配置统一存放在一个路径,避免混淆
相关命令速查:
# 查找所有可能的配置文件
find /etc /usr/local/etc -name "config.json" 2>/dev/null
# 对比文件差异
diff /etc/v2ray/config.json /usr/local/etc/v2ray/config.json
问题 15:3X-UI 面板无法访问
现象:
- 浏览器无法打开面板地址
- 连接超时
排查方向:
- 防火墙/安全组未放行端口
解决方案:
# 检查防火墙状态
ufw status
# 放行面板端口(如 54321)
ufw allow 54321/tcp
# 如果是云服务器,还需在安全组开放端口
问题 16:Xray 和手动 V2Ray 端口冲突
现象:
Failed to start: app/proxyman/inbound: failed to listen TCP on 443
原因:
- 3X-UI 自带 Xray 1.4.2,和手动安装的 V2Ray 同时占用 443 端口
解决方案:
方案一:停止手动的 V2Ray(推荐)
systemctl stop v2ray
systemctl disable v2ray
systemctl restart x-ui
方案二:给 Xray 分配不同端口
- 在 3X-UI 中将 WS+TLS 节点改为其他端口(如 8443)
附录一、配置实例(无域名方案)
1. 环境信息
| 项目 | 值 |
|---|---|
| 服务器 | 阿里云轻量应用服务器 |
| 系统 | Ubuntu 22.04 |
| 公网 IP | (填入你的服务器IP) |
| V2Ray 版本 | 5.48.0 |
2. 两个节点信息
| 节点名称 | 端口 | 协议 | UUID | 传输方式 |
|---|---|---|---|---|
| TCP 节点 | 10086 | VLESS | cat /proc/sys/kernel/random/uuid 命令生成 |
TCP |
| WS+TLS 节点 | 443 | VLESS | cat /proc/sys/kernel/random/uuid 命令生成 |
WebSocket + TLS |
3. 客户端导入链接
TCP 节点:
vless://你的UUID@服务器IP:10086?encryption=none&type=tcp#VLESS-TCP
WS+TLS 节点:
vless://你的UUID@服务器IP:443?encryption=none&type=ws&path=/v2ray&security=tls&allowInsecure=true#VLESS-WS-TLS
4. 生成自签名证书
mkdir -p /etc/ssl/private /etc/ssl/certs
openssl req -x509 -nodes -newkey rsa:2048 \
-keyout /etc/ssl/private/key.pem \
-out /etc/ssl/certs/cert.pem \
-subj "/CN=example.com" \
-days 3650
# 修复目录权限(否则 systemd 无法读取)
chmod 755 /etc/ssl/private/
参考链接
本文链接:https://blog.smallhao.fun/?id=50 转载需授权!
Chen’Blog版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!