首页实用工具V2Ray 自建节点教程

V2Ray 自建节点教程

分类实用工具时间2026-04-16 17:23:14发布RustStream浏览653
摘要:V2Ray 自建节点教程 目录 前期准备 服务器配置选择 自建节点(手动配置) 3X-UI 一键部署 公共部分 问题清单与解决方案...

V2Ray 自建节点教程

目录

  1. 前期准备
  2. 服务器配置选择
  3. 自建节点(手动配置)
  4. 3X-UI 一键部署
  5. 公共部分
  6. 问题清单与解决方案

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(伪装)

V2Ray 自建节点教程

  • 不再需要域名和 TLS 证书
  • 直接”借用”真实网站的证书和 TLS 指纹
  • 通过模仿 www.microsoft.comwww.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

配置要点:

  1. 将域名接入 Cloudflare
  2. DNS 解析到服务器 IP,开启代理(橙色云)
  3. 申请 Let’s Encrypt 证书或使用 Cloudflare Origin Certificate
  4. 配置 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)

安装交互设置:

  1. 是否自定义面板端口:y → 如 54321
  2. 设置用户名、密码
  3. 面板路径:默认回车
  4. 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)

入站配置步骤:

  1. 基本信息

    • 协议:vless
    • 端口:443
    • 监听:0.0.0.0
    • 备注:VLESS-WS-TLS
  2. 传输配置

    • Network:ws
    • 路径:/v2ray
    • Host:你的域名
  3. TLS 配置

    • 启用TLS:勾选
    • 证书/私钥路径:同上
  4. 客户配置

    • Add Client → 生成 UUID
    • Flow:none
    • Encryption:none
  5. 验证端口监听

netstat -tlnp | grep 443

4.6 3X-UI 添加入站(VLESS+XTLS+REALITY)

如果追求极致性能和抗封锁能力,推荐使用 VLESS+XTLS+REALITY。无需域名和证书,通过借用真实网站的 TLS 指纹实现最强伪装。

入站配置步骤

  1. 基本信息

    • 协议:vless
    • 端口:36606(或自定义高位端口)
    • 监听:0.0.0.0
    • 备注:VLESS-XTLS-REALITY
  2. 传输配置

    • Network:TCP (RAW)(不是 WebSocket/XHTTP)
  3. 安全设置

    • 安全:选择 Reality
  4. REALITY 参数

参数 说明 示例
uTLS 模仿的浏览器指纹 chrome
Target 借用的目标网站(必须是真实 HTTPS) www.apple.com:443
SNI 必须与 Target 的域名一致 www.apple.com
Public Key 点击生成 (自动生成)
Private Key 服务器端保留 (自动生成)
Short IDs 可留空或填短字符串 abc123
  1. 客户端配置
    • 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)

  1. 面板入站 → 操作 → 查看配置 → 复制链接
  2. v2rayN → 从剪贴板导入
  3. 右键节点 → 编辑 → TLS
    • 勾选:跳过证书验证(allowInsecure)
    • SNI:填写域名
  4. 测试连通性

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 解析:

  1. 登录域名管理后台
  2. 添加 A 记录:
    • 主机记录:@www
    • 记录值:服务器公网 IP
  3. 验证解析:
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 Releasesbrew install --cask v2rayu 经典 macOS 客户端,稳定易用
ClashX GitHub Releases 轻量简洁,macOS 热门选择
Android v2rayNG Google PlayGitHub 功能全面,支持二维码扫描和订阅
iOS Shadowrocket App Store (付费) 功能强大,iOS 主流选择
Quantumult X App Store (付费) 专业复杂,适合高阶用户
Linux v2rayL GitHub Releases 图形化界面,对 Linux 桌面用户友好
Qv2ray GitHub Releases 跨平台,功能强大(已停止维护)

核心提示:上述客户端基本免费且开源,务必从官方 GitHub 下载最新版本。

下载步骤(以 v2rayN 为例)

  1. 访问发布页面:打开 github.com/2dust/v2rayN/releases
  2. 选择版本:下载最新的 .zip.7z 压缩包(解压即用版)
  3. 运行客户端:解压后运行 v2rayN.exe 即可

客户端配置步骤

  1. 添加节点:手动输入或扫描二维码导入节点信息
  2. 填写服务端信息
    • 类型:VLESS
    • 地址:你的服务器 IP 或域名
    • 端口:10086(TCP)或 443(WS+TLS)
    • UUID:服务端配置的 UUID
    • 传输:TCP 或 WebSocket
    • TLS:TCP 节点关闭,WS+TLS 节点开启
    • 允许不安全连接:仅 WS+TLS(自签名证书)时需要
  3. 测试连接:点击”使用”或直接启动代理测试

注意事项

时间同步:
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

解决方案:

  1. 服务器端改用 VLESS 协议
{
  "inbounds": [{
    "protocol": "vless",
    "settings": {
      "clients": [{
        "id": "你的UUID",
        "flow": ""
      }]
    }
  }]
}
  1. 客户端也必须选择 VLESS 类型

  2. 或降级到 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

原因:

  • 证书过期
  • 证书与域名不匹配
  • 证书链不完整

解决方案:

  1. 检查证书有效期
openssl x509 -in cert.pem -noout -dates
  1. 重新申请证书
~/.acme.sh/acme.sh --renew -d 你的域名 --force
  1. 客户端跳过证书验证(仅测试用)
{
  "tlsSettings": {
    "allowInsecure": true
  }
}

问题 9:geoip.dat 路由规则不生效

现象:

  • 国内 IP 未走直连
  • 国外 IP 未走代理

原因:

  • geoip.dat 文件损坏或版本过旧
  • 路由规则配置错误

解决方案:

  1. 更新 geoip.dat
wget https://github.com/v2fly/geoip/raw/master/geoip.dat -O /etc/v2ray/geoip.dat
systemctl restart v2ray
  1. 使用域名规则替代
"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

原因:

  • 客户端与服务端密码不一致
  • 加密方式不支持

解决方案:

  1. 确保密码完全一致
  2. 确认加密方式两端匹配

服务端配置:

{
  "server": "0.0.0.0",
  "password": "你的密码",
  "method": "chacha20-ietf-poly1305"
}

问题 11:服务器带宽不足

现象:

  • 速度慢、卡顿
  • 延迟高

原因:

  • 服务器带宽限制
  • 网络拥堵
  • 线路不稳定

解决方案:

  1. 选择优质线路(CN2、CN2 GIA)
  2. 开启 BBR 加速
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
  1. 使用 Cloudflare CDN 加速

问题 12:客户端导入节点格式不被识别

现象:

  • 导入 vmess:// 链接无效
  • 导入后节点信息不完整

原因:

  • 链接格式不正确
  • Base64 编码错误

解决方案:

  1. 使用正确的链接格式
  2. 检查 Base64 编码是否正确
  3. 手动填写节点信息

Base64 解码验证:

# Linux/macOS
echo "base64字符串" | base64 -d

# 在线工具
# https://www.base64decode.org/

问题 13:VLESS 协议 UUID 格式错误

现象:

Invalid user
或
UUID format error

原因:

  • UUID 格式不符合标准
  • 客户端与服务端 UUID 不一致

解决方案:

  1. 生成标准 UUID
# Linux
uuidgen

# 在线生成
# https://www.uuidgenerator.net/

# 标准格式:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
# 例如:40552b9c-80f4-419f-b112-a6bba2b99338
  1. 确保客户端与服务端 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 显示服务运行正常

排查流程:

  1. 确认客户端配置正确:复制正常工作的节点,仅修改 UUID,仍无法连接 → 排除客户端传输配置问题

  2. 交换 UUID 测试

    • 将正常节点的 UUID 改为 UUID B → 无法连接
    • 将异常节点的 UUID 改为 UUID A → 可以连接
    • 结论:UUID B 在服务端未生效
  3. 检查服务端配置文件cat /etc/v2ray/config.json 显示 UUID B 已正确添加

  4. 检查服务实际使用的配置文件路径

    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

  5. 检查实际配置文件内容

    cat /usr/local/etc/v2ray/config.json | grep -E '"id":'
    

    发现该文件中只有 UUID A,没有 UUID B

  6. 修改正确的配置文件,添加 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),导致修改未生效

解决办法:

  1. 确认服务实际使用的配置文件路径

    systemctl status v2ray | grep "config"
    
  2. 编辑正确的配置文件(例如 /usr/local/etc/v2ray/config.json):

    sudo nano /usr/local/etc/v2ray/config.json
    
  3. 添加新 UUID 到 clients 数组

    "clients": [
      {"id": "原有UUID", "email": "1"},
      {"id": "新UUID", "email": "2"}
    ],
    
  4. 检查 JSON 格式

    cat /usr/local/etc/v2ray/config.json | python3 -m json.tool > /dev/null && echo "OK"
    
  5. 重启 V2Ray 服务

    sudo systemctl restart v2ray
    sudo systemctl status v2ray   # 确认 active (running)
    
  6. 客户端使用新 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版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

VPN自建节点
Ollama 安装指南 Claude Code使用

游客 回复需填写必要信息
召唤伊斯特瓦尔