V2Ray Linux 保姆级安装与配置教程


V2Ray Linux 保姆级安装与配置教程:从零开始构建你的专属通道

前言:为什么选择 V2Ray?

在当今复杂的网络环境下,无论是为了保护个人隐私、访问区域限制内容,还是进行安全的网络数据传输,拥有一个可靠的网络代理工具变得越来越重要。V2Ray(也称为 Project V)正是为此而生的下一代网络工具。它不仅仅是一个简单的代理软件,更是一个模块化的网络框架,提供了丰富的功能和高度的灵活性。

与传统的代理工具(如 Shadowsocks)相比,V2Ray 具有以下优势:

  1. 更强的协议支持:V2Ray 支持多种传入和传出协议,其中最著名的是 VMess 协议。VMess 在设计上考虑了对抗 GFW 等深度包检测(DPI)系统的能力,提供了更好的伪装性和抗干扰性。此外,VLESS 等更新的协议也在不断发展。
  2. 高度可定制:V2Ray 的配置极其灵活,允许用户通过 JSON 配置文件精确控制流量的走向、协议的选择、加密方式、传输载体(TCP、mKCP、WebSocket、HTTP/2 等)以及路由规则。
  3. 强大的路由功能:内置强大的路由模块,可以根据域名、IP、端口、协议等多种条件进行分流,实现精细化的流量管理(例如,国内流量直连,国外流量走代理)。
  4. 伪装与混淆:支持将流量伪装成正常的网页浏览(HTTPS/WebSocket)或其他常见协议,大大降低被识别和干扰的风险。
  5. 多平台支持:V2Ray 核心是跨平台的,可以在 Linux、Windows、macOS、Android、iOS 等多种操作系统上运行。

本教程旨在为 Linux 用户提供一个“保姆级”的 V2Ray 安装与配置指南,即使你对 Linux 命令或网络配置不太熟悉,也能通过本教程一步步成功搭建和使用 V2Ray 服务端。我们将从准备工作开始,涵盖安装、核心配置、客户端连接、进阶设置(如 TLS 加密和 WebSocket 伪装)以及常见问题排查,力求详尽易懂。

适用人群

  • 希望在自己的 Linux VPS 上搭建 V2Ray 服务的用户。
  • 对 Linux 命令行有基本了解(或愿意边学边做)的用户。
  • 需要一个稳定、安全、灵活的网络代理解决方案的用户。

法律与道德声明:请确保您在当地法律法规允许的范围内使用 V2Ray,并仅用于合法用途。任何滥用 V2Ray 进行非法活动的行为,责任由使用者自行承担。

一、 准备工作:你的“云端基地”

在开始安装 V2Ray 之前,你需要一个运行 Linux 操作系统的服务器,通常称为 VPS(Virtual Private Server,虚拟专用服务器)。

1. 获取一台 Linux VPS

市面上有许多 VPS 提供商,例如:

  • 国际:DigitalOcean, Vultr, Linode, AWS Lightsail, Google Cloud Platform (GCP), Oracle Cloud (有免费套餐)
  • 国内:阿里云, 腾讯云, 华为云 (请注意国内服务器可能受更严格的网络监管)

选择建议

  • 地理位置:如果你主要目的是访问国际网络,建议选择靠近目标区域或网络质量较好的境外节点(如美国西海岸、日本、新加坡、欧洲等)。
  • 操作系统:推荐选择主流的 Linux 发行版,如 Ubuntu (LTS 版本如 20.04, 22.04)Debian (如 10, 11)。CentOS 也是一个选择,但请注意 CentOS Stream 与 RHEL 的关系变化。本教程主要以 Ubuntu/Debian 的命令为例,CentOS 用户需要将 apt 相关命令替换为 yumdnf
  • 配置:对于 V2Ray 服务端来说,最低配置(如 1核 CPU, 512MB/1GB RAM)通常就足够了,除非你有大量用户或高流量需求。

购买并设置好 VPS 后,你会得到服务器的 IP 地址、登录用户名(通常是 root 或一个普通用户)和密码(或 SSH 密钥)。

2. 通过 SSH 连接到你的 VPS

SSH(Secure Shell)是远程登录和管理 Linux 服务器的标准方式。

  • Windows 用户:可以使用 PuTTY, MobaXterm, Xshell 或 Windows 10/11 内置的 OpenSSH 客户端(在命令提示符或 PowerShell 中输入 ssh username@your_server_ip)。
  • macOS/Linux 用户:直接打开终端(Terminal)应用,输入命令:
    bash
    ssh username@your_server_ip

    username 替换为你的登录用户名,your_server_ip 替换为你的 VPS IP 地址。

    首次连接时,系统会询问你是否信任该主机的指纹,输入 yes 并按回车。然后输入你的密码(输入时屏幕上不会显示任何字符,这是正常的安全措施)。如果使用 SSH 密钥,则无需输入密码。

成功登录后,你将看到类似 username@hostname:~$ 的命令行提示符。

3. 更新系统软件包

在安装任何新软件之前,保持系统最新是一个好习惯,可以获取安全补丁和最新的软件库。

  • 对于 Ubuntu/Debian 系统
    bash
    sudo apt update && sudo apt upgrade -y

    sudo 表示以管理员(root)权限执行命令。apt update 更新软件包列表,apt upgrade -y 升级所有已安装的软件包(-y 表示自动确认)。

  • 对于 CentOS/RHEL 系统
    bash
    sudo yum update -y
    # 或者使用 dnf (较新版本)
    # sudo dnf update -y

4. 安装必要的工具

V2Ray 的安装脚本通常需要 curlwget 来下载文件,有时也需要 unzip

  • Ubuntu/Debian:
    bash
    sudo apt install curl wget unzip -y
  • CentOS/RHEL:
    bash
    sudo yum install curl wget unzip -y
    # 或者使用 dnf
    # sudo dnf install curl wget unzip -y

5. 配置防火墙(非常重要!)

为了安全,服务器应该启用防火墙,并且只开放必要的端口。V2Ray 需要一个端口来监听客户端连接。你需要选择一个端口号(例如 12345强烈建议不要使用常见端口如 80, 443, 22 等,除非你配置了伪装),并在防火墙中允许该端口的 TCP(有时也需要 UDP,取决于配置)流量。

  • 使用 ufw (Ubuntu/Debian 默认):
    ```bash
    # 允许 SSH 端口 (默认 22),防止断开连接
    sudo ufw allow ssh
    # 或者指定端口号
    # sudo ufw allow 22/tcp

    允许你选择的 V2Ray 端口 (例如 12345),仅 TCP

    sudo ufw allow 12345/tcp

    如果你的配置需要 UDP (例如 mKCP),也要允许 UDP

    sudo ufw allow 12345/udp

    启用防火墙 (如果尚未启用)

    sudo ufw enable

    输入 y 确认

    查看防火墙状态和规则

    sudo ufw status verbose
    ```

  • 使用 firewalld (CentOS/RHEL 默认):
    ```bash
    # 允许 SSH 服务
    sudo firewall-cmd --permanent --add-service=ssh

    允许你选择的 V2Ray 端口 (例如 12345),仅 TCP

    sudo firewall-cmd --permanent --add-port=12345/tcp

    如果需要 UDP

    sudo firewall-cmd --permanent --add-port=12345/udp

    重新加载防火墙规则使其生效

    sudo firewall-cmd --reload

    查看已开放的端口和服务

    sudo firewall-cmd --list-all
    ```

请务必将上面命令中的 12345 替换为你自己选择的、未被其他服务占用的端口号!

二、 安装 V2Ray 核心程序

V2Ray 官方提供了一个便捷的安装脚本,可以自动完成下载、安装和配置 systemd 服务(用于管理 V2Ray 进程)。

执行以下命令来下载并运行官方安装脚本:

bash
sudo bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)

命令解释

  • curl -L ...:使用 curl 工具下载脚本。-L 表示跟随重定向。
  • <(...):这是一个进程替换,将下载的脚本内容作为 bash 命令的标准输入。
  • sudo bash ...:以管理员权限执行下载的 bash 脚本。

这个脚本会做以下事情:

  1. 检测你的操作系统和架构。
  2. 下载最新的 V2Ray 稳定版压缩包。
  3. 解压文件到指定目录(通常是 /usr/local/bin/v2ray/usr/local/bin/v2ctl)。
  4. 将配置文件放置到 /usr/local/etc/v2ray/config.json
  5. 将 geoip 和 geosite 数据文件放到 /usr/local/share/v2ray/
  6. 设置 systemd 服务 (v2ray.service) 或 sysvinit 脚本,用于启动、停止和管理 V2Ray 进程。
  7. (可选)如果系统有 logrotate,会尝试配置日志轮转。

安装完成后,你应该会看到类似以下的成功信息:
V2Ray vX.Y.Z is installed. (X.Y.Z 是版本号)

验证安装

  • 检查 V2Ray 版本
    bash
    /usr/local/bin/v2ray --version
  • 检查 V2Ray 服务状态
    bash
    sudo systemctl status v2ray

    此时服务可能是 inactive (dead)active (running) 但配置不一定是你想要的。

三、 配置 V2Ray 服务端 (config.json)

V2Ray 的所有行为都由一个 JSON 格式的配置文件控制,默认路径是 /usr/local/etc/v2ray/config.json。这是整个设置的核心。

1. 备份默认配置

在修改之前,先备份一份原始配置文件,以防万一。

bash
sudo cp /usr/local/etc/v2ray/config.json /usr/local/etc/v2ray/config.json.bak

2. 编辑配置文件

使用一个文本编辑器来修改配置文件。nano 是一个简单易用的命令行编辑器。

bash
sudo nano /usr/local/etc/v2ray/config.json

Nano 编辑器基本操作

  • 移动光标:使用方向键。
  • 保存:按 Ctrl + O,然后按 Enter 确认文件名。
  • 退出:按 Ctrl + X

3. 理解 V2Ray 配置结构

V2Ray 的配置主要包含以下几个顶级字段:

  • log: 日志相关设置。
  • api: API 支持,用于外部程序控制 V2Ray。
  • dns: 内建 DNS 服务器设置。
  • routing: 路由规则设置,核心功能之一。
  • policy: 本地策略设置,控制用户权限等。
  • inbounds: 入站连接配置,定义 V2Ray 如何接收来自客户端的连接。
  • outbounds: 出站连接配置,定义 V2Ray 如何将处理后的数据发送出去。
  • transport: 全局传输设置(较少用)。
  • stats: 统计信息(较少用)。
  • reverse: 反向代理支持(高级功能)。

对于一个基本的 V2Ray 服务端,我们主要关心 inboundsoutbounds

4. 编写一个基础的 VMess TCP 配置

下面是一个简单但完整的 VMess over TCP 的服务端配置示例。请仔细阅读注释,并替换其中的关键信息为你自己的设置。

```json
{
// 日志配置,记录错误信息到文件
"log": {
"loglevel": "warning", // 日志级别:debug, info, warning, error, none
"access": "/var/log/v2ray/access.log", // 访问日志路径 (需要确保目录存在且 V2Ray 有权限写入)
"error": "/var/log/v2ray/error.log" // 错误日志路径
},

// 入站连接配置:接收来自客户端的连接
"inbounds": [
{
"port": 12345, // 重要: 监听端口,必须与你防火墙开放的端口一致!
"listen": "0.0.0.0", // 监听所有网络接口 (IPv4 和 IPv6)
"protocol": "vmess", // 重要: 使用 VMess 协议
"settings": {
"clients": [
{
"id": "YOUR_UUID_HERE", // 极其重要: 用户的 UUID,必须与客户端设置一致!
// 可以使用 v2ray uuid 命令生成一个新的 UUID
// 或在线 UUID 生成器生成。请替换为你自己的 UUID!
"alterId": 64, // 重要: 额外的 ID 数量,建议 64 或更低 (如 32, 16, 4)。必须与客户端一致!
"security": "auto" // 加密方式,auto 通常即可 (推荐 aes-128-gcm)。客户端也需匹配或设为 auto。
}
// 你可以添加更多 client 对象来支持多个用户,每个用户有不同的 UUID
// ,{
// "id": "ANOTHER_UUID",
// "alterId": 64,
// "security": "auto"
// }
],
"disableInsecureEncryption": false // 是否禁用不安全的加密方式,保持 false 以兼容旧客户端,或者设为 true 强制使用 AEAD 加密
},
"streamSettings": {
"network": "tcp", // 重要: 传输协议使用 TCP
"security": "none", // TCP 传输不使用 TLS
"tcpSettings": {
// "header": { // TCP 头部伪装 (可选, 增加一点混淆)
// "type": "http",
// "request": {
// "version": "1.1",
// "method": "GET",
// "path": ["/"],
// "headers": {
// "Host": ["www.baidu.com"], // 伪装成访问百度
// "User-Agent": [
// "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36"
// ],
// "Accept-Encoding": ["gzip, deflate"],
// "Connection": ["keep-alive"],
// "Pragma": "no-cache"
// }
// }
// }
}
},
"sniffing": { // 流量嗅探配置,用于路由规则判断目标地址
"enabled": true,
"destOverride": ["http", "tls"] // 尝试嗅探 HTTP 和 TLS 流量的目标主机名
}
}
],

// 出站连接配置:定义 V2Ray 如何将数据发往互联网
"outbounds": [
{
"protocol": "freedom", // 重要: 使用 freedom 协议,表示直接连接目标服务器
"settings": {
// "domainStrategy": "UseIP" // DNS 解析策略,可选 AsIs, UseIP, UseIPv4, UseIPv6
},
"tag": "direct" // 给这个出站连接打个标签,方便路由规则引用
},
{
"protocol": "blackhole", // 重要: 使用 blackhole 协议,用于阻止某些连接 (例如广告)
"settings": {},
"tag": "block" // 标签为 "block"
}
],

// (可选) 路由规则:可以根据需要添加,实现分流等
"routing": {
"domainStrategy": "AsIs", // 域名解析策略
"rules": [
// 示例:阻止 BT 流量 (可选)
// {
// "type": "field",
// "protocol": ["bittorrent"],
// "outboundTag": "block"
// },
// 示例:阻止特定广告域名 (可选, 需要 geosite 数据)
// {
// "type": "field",
// "domain": ["geosite:category-ads-all"],
// "outboundTag": "block"
// },
// 示例:国内网站直连 (可选, 需要 geoip 数据)
// {
// "type": "field",
// "ip": ["geoip:private", "geoip:cn"],
// "outboundTag": "direct" // 或者如果你有国内专线出站,可以用那个 tag
// }
// 默认规则:所有其他流量都通过第一个 outbound (通常是 direct) 出去
]
}
}
```

关键参数解释与替换

  • port (inbounds): 必须是你之前在防火墙中打开的端口,例如 12345
  • id (inbounds.settings.clients): 这是你的 UUID,是 V2Ray 用户的唯一标识符。极其重要,必须保密! 你可以通过在服务器上运行 /usr/local/bin/v2ray uuid 命令生成一个新的 UUID。将 "YOUR_UUID_HERE" 替换为你生成的 UUID 字符串。
  • alterId (inbounds.settings.clients): 早期用于增加连接随机性,对抗探测。现在作用减弱,但仍需与客户端保持一致。建议设为 64, 32, 16 或更小的值。
  • network (inbounds.streamSettings): 定义了客户端与服务器之间的传输方式。这里是 "tcp",是最基础的方式。后面会介绍更高级的 "ws" (WebSocket)。
  • protocol (outbounds): "freedom" 表示 V2Ray 将数据直接发送到目标服务器,不做额外处理。"blackhole" 表示丢弃数据包,常用于屏蔽广告或不良内容。

生成 UUID:
在你的 VPS 终端里运行:
bash
/usr/local/bin/v2ray uuid

复制输出的那串字符,粘贴到 config.jsonid 的位置。

5. 检查配置文件的语法

修改完配置文件后,在保存退出编辑器(Nano: Ctrl + O, Enter, Ctrl + X)之前或之后,务必检查 JSON 语法是否正确,以及 V2Ray 能否识别配置。

bash
sudo /usr/local/bin/v2ray test -config /usr/local/etc/v2ray/config.json

如果看到 Configuration OK. 的提示,说明配置文件基本没问题。如果有错误,它会指出错误在哪一行附近,你需要回去仔细检查,通常是括号、逗号、引号没匹配好。

6. 创建日志目录 (如果配置了日志文件)

如果你在 config.json 中配置了 accesserror 日志文件路径(如 /var/log/v2ray/),你需要确保这个目录存在,并且 V2Ray 进程有权限写入。

```bash

创建目录

sudo mkdir -p /var/log/v2ray

设置权限 (假设 V2Ray 以 nobody 用户或 v2ray 用户运行,具体取决于 systemd 配置)

一个简单的做法是让所有用户可写,但不推荐在生产环境长期使用

sudo chmod 777 /var/log/v2ray

或者,如果知道运行用户(可以通过 ps aux | grep v2ray 查看),可以设置属主

例如,如果是 nobody 用户和 nogroup 组:

sudo chown nobody:nogroup /var/log/v2ray

如果安装脚本创建了 v2ray 用户/组,则可能是:

sudo chown v2ray:v2ray /var/log/v2ray

```
注意:官方安装脚本可能已经处理了日志目录和权限问题,你可以先尝试重启服务,如果日志报错再来处理权限。

7. 重启 V2Ray 服务使配置生效

配置修改并检查无误后,需要重启 V2Ray 服务来加载新的配置。

bash
sudo systemctl restart v2ray

8. 检查 V2Ray 服务状态

确认 V2Ray 服务是否成功启动并运行。

bash
sudo systemctl status v2ray

你应该看到 Active: active (running) 的绿色字样。如果状态是 inactive (dead)failed,说明启动失败。你需要查看日志来找出原因:

  • 查看 systemd 日志:
    bash
    sudo journalctl -u v2ray --no-pager -n 50

    这会显示 V2Ray 服务的最后 50 条日志。查找错误信息(通常是红色或包含 "ERROR" 字样)。

  • 查看 V2Ray 错误日志 (如果你在 config.json 中配置了):
    bash
    sudo cat /var/log/v2ray/error.log

常见的错误原因包括:配置文件语法错误、端口被占用、日志文件权限问题等。

9. 设置 V2Ray 开机自启

为了让 VPS 重启后 V2Ray 服务能自动运行,需要启用它:

bash
sudo systemctl enable v2ray

如果你想禁用开机自启,使用 sudo systemctl disable v2ray

四、 配置 V2Ray 客户端

服务端配置完成后,你需要在你的设备(电脑、手机)上安装 V2Ray 客户端,并填入服务端的连接信息。

需要从服务器获取的关键信息

  1. 服务器 IP 地址 (Your Server IP Address)
  2. 端口 (Port) (你在 config.json 和防火墙中设置的那个,例如 12345)
  3. 用户 ID (UUID) (你在 config.json 中设置的那串字符)
  4. 额外 ID (AlterId) (你在 config.json 中设置的数字,例如 64)
  5. 加密方式 (Security) (通常是 autoaes-128-gcm,要与服务器匹配)
  6. 传输协议 (Network) (我们上面配置的是 tcp)
  7. (可选) 传输层安全 (TLS) (我们上面的基础配置没有启用,所以是 none)
  8. (可选) 路径 (Path) (TCP 模式下通常不需要,WebSocket 模式下需要)
  9. (可选) 伪装类型 (Type/Header) (我们上面的基础配置没有启用或注释掉了,所以是 none)

常用客户端推荐

  • Windows: V2RayN (推荐), Qv2ray, Clash for Windows (.NET)
  • macOS: V2RayU, Qv2ray, ClashX
  • Linux: Qv2ray, V2RayA, Clash for Linux
  • Android: V2RayNG (推荐), BifrostV, Clash for Android
  • iOS: Shadowrocket (小火箭, 付费), Quantumult X (付费), Loon (付费), BifrostV (可能需 TestFlight)

以 V2RayN (Windows) 为例进行配置

  1. 下载: 从 V2RayN 的 GitHub Releases 页面下载最新版本的 v2rayN-Core.zip 文件。这个压缩包通常包含了 V2Ray 核心和 V2RayN 图形界面。
  2. 解压: 将下载的 zip 文件解压到一个你方便访问的文件夹。
  3. 运行: 双击运行解压后文件夹里的 v2rayN.exe。程序启动后通常会最小化到系统托盘。
  4. 添加服务器:
    • 点击系统托盘的 V2RayN 图标打开主界面。
    • 点击菜单栏的 "服务器" -> "添加[VMess]服务器"。
    • 在弹出的窗口中,填写以下信息:
      • 别名 (Remarks): 给这个服务器连接起个名字,方便识别,例如 "My VPS"。
      • 地址 (Address): 填入你的 服务器 IP 地址
      • 端口 (Port): 填入你配置的 端口号 (例如 12345)。
      • 用户 ID (User ID): 填入你的 UUID
      • 额外 ID (Alter ID): 填入你配置的 AlterId (例如 64)。
      • 加密方式 (Security): 选择与服务器配置匹配的加密方式 (通常选 autoaes-128-gcm)。
      • 传输协议 (Network): 选择 tcp
      • 伪装类型 (Type): 选择 None (因为服务器 TCP 配置没开头部伪装)。
      • 其他如路径、TLS 等保持默认或留空。
    • 点击 "确定" 保存。
  5. 选择服务器与代理模式:
    • 在 V2RayN 主界面的服务器列表中,右键点击你刚添加的服务器,选择 "设为活动服务器"。
    • 右键点击系统托盘的 V2RayN 图标,找到 "系统代理" 选项:
      • 清除系统代理: 不使用 V2Ray 代理。
      • 自动配置系统代理 (PAC模式): V2RayN 会根据一个 PAC 文件 (通常内置或可更新) 判断哪些网站需要走代理,哪些直连。推荐新手使用此模式
      • 全局模式: 所有网络流量都通过 V2Ray 代理。
    • 选择 "自动配置系统代理"。
    • 同样在系统托盘右键菜单中,找到 "路由" 选项,通常选择 "绕过大陆(Whitelist)" 或 "全局(Global)"(取决于你的 PAC 规则设置)。
  6. 测试连接: 打开浏览器,访问一个可以显示你 IP 地址的网站,例如 https://www.ipinfo.iohttps://ip.sb。如果显示的 IP 地址是你 VPS 服务器的 IP 地址,并且你可以正常访问 Google 等网站,说明配置成功!

其他客户端的配置过程类似,都是找到添加服务器的地方,然后根据服务器信息填写对应的字段。

五、 进阶配置:TLS 加密与 WebSocket 伪装

基础的 TCP 连接虽然简单,但特征可能比较明显。为了提高连接的隐蔽性和安全性,推荐使用 TLS 加密并将流量伪装成 HTTPS 流量。这通常需要:

  1. 一个域名 (Domain Name),并将其 DNS 解析到你的 VPS IP 地址。
  2. 使用 WebSocket (ws) 作为传输协议。
  3. 配置一个 Web 服务器 (如 Nginx 或 Caddy) 来处理 HTTPS 请求和转发流量给 V2Ray。
  4. 申请 SSL/TLS 证书 (通常使用 Let's Encrypt 免费证书)。

这种配置相对复杂,但效果更好。大致步骤如下:

1. 准备域名和 DNS

  • 注册一个域名(国内外注册商均可)。
  • 到你的域名 DNS 管理后台,添加一个 A 记录,将你的域名(例如 v2ray.yourdomain.com)指向你的 VPS IP 地址。等待 DNS 生效(可能需要几分钟到几小时)。你可以使用 ping v2ray.yourdomain.com 命令检查是否解析到了正确的 IP。

2. 安装 Web 服务器 (以 Nginx 为例)

  • Ubuntu/Debian: sudo apt update && sudo apt install nginx -y
  • CentOS/RHEL: sudo yum update && sudo yum install nginx -y

  • 配置防火墙允许 HTTP 和 HTTPS 端口:

    • ufw: sudo ufw allow 'Nginx Full' (允许 80 和 443 端口)
    • firewalld: sudo firewall-cmd --permanent --add-service=http && sudo firewall-cmd --permanent --add-service=https && sudo firewall-cmd --reload

3. 安装 Certbot 并获取 SSL 证书

Certbot 是 Let's Encrypt 官方推荐的证书申请工具。

  • 推荐使用 Snap 安装 (通用性好):
    bash
    sudo apt install snapd # (如果系统没有 snapd)
    sudo snap install --classic certbot
    sudo ln -s /snap/bin/certbot /usr/bin/certbot
  • 使用 Certbot 自动配置 Nginx 并获取证书:
    bash
    sudo certbot --nginx -d v2ray.yourdomain.com

    按照提示操作,输入邮箱地址,同意服务条款,选择是否愿意分享邮箱。Certbot 会自动修改 Nginx 配置以支持 HTTPS,并为你申请和安装证书。它还会设置定时任务自动续签证书。

4. 修改 Nginx 配置以转发 WebSocket 流量

编辑 Nginx 为你的域名生成的配置文件(通常位于 /etc/nginx/sites-available//etc/nginx/conf.d/ 目录下,具体路径 Certbot 会提示)。找到 server 块中 location / { ... } 的部分,或者在 server 块内 添加一个新的 location 用于处理 V2Ray 的 WebSocket 流量。

```nginx
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name v2ray.yourdomain.com; # 你的域名

# SSL 证书配置 (Certbot 通常会自动添加好)
ssl_certificate /etc/letsencrypt/live/v2ray.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/v2ray.yourdomain.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

# (可选) 根路径可以放一个简单的静态网页做伪装
location / {
    root /var/www/html; # Nginx 默认网站根目录
    index index.html index.htm;
    # 或者返回一个 404/403 错误,或者代理到其他地方
    # return 404;
}

# **重要**: V2Ray WebSocket 转发配置
location /YOUR_WS_PATH { # **定义一个隐蔽的路径,例如 /myv2raylink,不要用 /v2ray 或 /ws 这种容易被猜到的**
    if ($http_upgrade != "websocket") { # 如果不是 WebSocket 升级请求,返回 404
        return 404;
    }
    proxy_pass http://127.0.0.1:10086; # **重要**: 转发到 V2Ray 监听的本地地址和端口
                                      # **注意**: 这个端口 (10086) 是 V2Ray 配置中为 WebSocket 单独设置的本地监听端口
                                      # 不能是公网监听的那个 TCP 端口 (12345)
    proxy_redirect off;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    # 下面这两行传递真实 IP,方便 V2Ray 日志记录 (可选)
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

}

(可选) 将 HTTP 请求强制重定向到 HTTPS

server {
listen 80;
listen [::]:80;
server_name v2ray.yourdomain.com;
return 301 https://$host$request_uri;
}
```

关键点

  • location /YOUR_WS_PATH: 定义一个 V2Ray 客户端连接时使用的路径,例如 /appservice。这个路径需要保密,并与 V2Ray 服务端和客户端配置一致。
  • proxy_pass http://127.0.0.1:10086;: Nginx 将发往 /YOUR_WS_PATH 的 WebSocket 流量转发给 V2Ray。注意:V2Ray 需要配置一个新的 inbound,监听在本地回环地址 127.0.0.1 和一个内部端口(例如 10086),而不是直接监听公网 IP 和 443 端口。公网的 443 端口由 Nginx 监听。

  • 检查 Nginx 配置语法并重载:
    bash
    sudo nginx -t
    sudo systemctl reload nginx

5. 修改 V2Ray 配置以支持 WebSocket + TLS

现在需要修改 /usr/local/etc/v2ray/config.json。你需要修改或添加一个 inbounds 条目来处理来自 Nginx 的内部转发流量。

```json
{
// ... (log, outbounds, routing 等配置保持不变或按需调整) ...

"inbounds": [
// 你可以保留之前的 TCP 入站,也可以注释掉或删除
// {
// "port": 12345,
// "listen": "0.0.0.0",
// "protocol": "vmess",
// "settings": { ... } // (之前的 TCP 配置)
// "streamSettings": { "network": "tcp", ... }
// },

// **新增/修改**: 用于 WebSocket + TLS (由 Nginx 处理 TLS) 的入站配置
{
  "port": 10086,           // **重要**: 内部监听端口,与 Nginx proxy_pass 中设置的一致
  "listen": "127.0.0.1",  // **重要**: 只监听本地回环地址,因为流量来自 Nginx
  "protocol": "vmess",
  "settings": {
    "clients": [
      {
        "id": "YOUR_UUID_HERE", // **使用与之前相同的 UUID,或者为新配置生成一个**
        "alterId": 64         // **与客户端配置一致**
        // "security": "auto" // 加密方式保持不变
      }
    ],
    "disableInsecureEncryption": false
  },
  "streamSettings": {
    "network": "ws",      // **重要**: 传输协议改为 WebSocket
    "security": "none",   // **重要**: V2Ray 本身不处理 TLS,因为 Nginx 已经处理了
    "wsSettings": {
      "path": "/YOUR_WS_PATH" // **重要**: 必须与 Nginx 配置中的 location 路径完全一致!
      // (可选) 可以添加 Nginx 传递过来的真实 IP Header,用于日志
      // ,"headers": {
      //   "X-Forwarded-For": true
      // }
    }
  },
  "sniffing": {
    "enabled": true,
    "destOverride": ["http", "tls"]
  }
}

]

// ... (outbounds, routing 等) ...
}

```

关键修改点

  • port: 改为一个内部端口 (如 10086)。
  • listen: 改为 "127.0.0.1",这样 V2Ray 只接受来自本机 (Nginx) 的连接。
  • network: 改为 "ws"
  • security (streamSettings): 改为 "none",因为 TLS 由 Nginx 处理。
  • wsSettings.path: 设置为你 Nginx 配置中 location 的路径 (如 "/YOUR_WS_PATH").

  • 检查 V2Ray 配置语法并重启:
    bash
    sudo /usr/local/bin/v2ray test -config /usr/local/etc/v2ray/config.json
    sudo systemctl restart v2ray
    sudo systemctl status v2ray # 确认运行正常

6. 配置客户端使用 WebSocket + TLS

在 V2Ray 客户端(如 V2RayN)中修改服务器配置,或者添加一个新的服务器配置:

  • 地址 (Address): 填入你的 域名 (v2ray.yourdomain.com)。
  • 端口 (Port): 填入 443 (HTTPS 端口)。
  • 用户 ID (User ID): 你的 UUID。
  • 额外 ID (Alter ID): 你的 AlterId。
  • 加密方式 (Security): 保持不变 (autoaes-128-gcm)。
  • 传输协议 (Network): 选择 ws (WebSocket)。
  • 伪装类型 (Type): 选择 None
  • 路径 (Path): 填入你设置的 WebSocket 路径 (例如 /YOUR_WS_PATH)。必须完全一致!
  • 底层传输安全 (TLS): 选择 tls
  • (可选) SNI/服务器名称指示: 留空或填入你的域名 (v2ray.yourdomain.com)。通常留空即可,客户端会自动使用地址栏的域名。
  • (可选) AllowInsecure: 如果你的证书是自签名的或者有问题,可以勾选(不推荐,正常使用 Let's Encrypt 证书不需要勾选)。

保存配置,设为活动服务器,然后测试连接。现在你的 V2Ray 流量看起来就像是普通的 HTTPS 网页浏览流量了。

六、 管理和维护 V2Ray

1. 常用命令

  • 启动 V2Ray: sudo systemctl start v2ray
  • 停止 V2Ray: sudo systemctl stop v2ray
  • 重启 V2Ray: sudo systemctl restart v2ray
  • 查看状态: sudo systemctl status v2ray
  • 启用开机自启: sudo systemctl enable v2ray
  • 禁用开机自启: sudo systemctl disable v2ray
  • 查看实时日志: sudo journalctl -u v2ray -f
  • 测试配置文件: sudo /usr/local/bin/v2ray test -config /usr/local/etc/v2ray/config.json

2. 更新 V2Ray

官方安装脚本也可以用来更新 V2Ray 到最新版本。只需再次运行安装命令即可:

bash
sudo bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)

脚本会自动检测已安装版本并进行更新。更新后通常会自动重启 V2Ray 服务,但最好还是手动检查一下状态 sudo systemctl status v2ray

3. 查看日志

定期检查日志有助于发现潜在问题。

  • Systemd 日志: sudo journalctl -u v2ray
  • V2Ray 访问日志 (如果配置了): sudo tail -n 100 /var/log/v2ray/access.log
  • V2Ray 错误日志 (如果配置了): sudo cat /var/log/v2ray/error.log

4. 防火墙检查

确保防火墙规则仍然正确,只开放了必要的端口。

  • ufw: sudo ufw status
  • firewalld: sudo firewall-cmd --list-all

七、 常见问题与故障排查 (Troubleshooting)

  1. 客户端无法连接服务器:

    • 检查服务器 V2Ray 服务是否运行: sudo systemctl status v2ray。如果未运行,查看日志找原因。
    • 检查服务器防火墙: 确认 V2Ray 使用的端口(TCP 模式下的公网端口,如 12345;或者 WS+TLS 模式下的 443 端口)已经在防火墙中正确打开。同时也要检查 VPS 提供商的安全组规则(如 AWS EC2, GCP, 阿里云等)。
    • 检查客户端配置: 仔细核对客户端填写的服务器地址(IP 或域名)、端口、UUID、AlterId、加密方式、传输协议、路径 (ws 模式)、TLS 设置是否与服务器 config.json 完全一致。一个字符的错误都不行!
    • 检查域名解析 (WS+TLS 模式): 确认域名是否正确解析到服务器 IP (ping yourdomain.com)。DNS 是否已生效?
    • 检查 Nginx (WS+TLS 模式): Nginx 是否运行 (sudo systemctl status nginx)?Nginx 配置是否正确 (sudo nginx -t)?Nginx 日志 (/var/log/nginx/error.log) 有无报错?
    • 尝试从客户端 ping 服务器 IP: ping your_server_ip。如果不通,可能是网络问题或服务器禁 ping。
    • 尝试从客户端 telnet 服务器端口: telnet your_server_ip port (例如 telnet 1.2.3.4 12345telnet v2ray.yourdomain.com 443)。如果连接超时或被拒绝,可能是端口未监听、防火墙阻止或网络不通。
    • 检查服务器时间: 服务器时间与标准时间相差过大可能导致认证失败。执行 date 命令查看。可以使用 sudo apt install ntpdate && sudo ntpdate pool.ntp.org (或类似命令) 同步时间。
    • 查看 V2Ray 错误日志: sudo journalctl -u v2raysudo cat /var/log/v2ray/error.log,看是否有客户端连接相关的错误信息。
  2. 连接速度慢:

    • 服务器线路质量: VPS 的地理位置、带宽大小、国际出口质量是主要因素。尝试更换不同地区或不同提供商的 VPS。
    • 传输协议影响: TCP 相对稳定但可能受干扰;mKCP 理论上在高丢包环境下更好但配置复杂;WebSocket+TLS 伪装性好但有额外开销。可以尝试切换协议(需要同时修改服务端和客户端)。
    • 服务器负载: 检查服务器 CPU、内存、网络使用情况 (top, htop, iftop)。如果资源耗尽,需要升级 VPS 配置。
    • 客户端网络环境: 本地网络带宽、运营商 QoS 限制等也会影响速度。
    • AlterId 设置过高: 理论上 alterId 越高开销越大,可以尝试降低 alterId (例如 4 或 16),客户端同步修改。
  3. V2Ray 服务启动失败:

    • 配置文件语法错误: 使用 sudo /usr/local/bin/v2ray test -config /usr/local/etc/v2ray/config.json 检查。
    • 端口被占用: 查看日志,看是否有 "bind: address already in use" 错误。使用 sudo ss -ltnp | grep YOUR_PORT (将 YOUR_PORT 替换为 V2Ray 监听的端口) 查看哪个进程占用了端口。
    • 权限问题: 特别是日志文件目录没有写入权限。参照前面步骤设置权限。
    • 内存不足: 在配置极低的 VPS 上可能发生。
  4. 更新 V2Ray GeoIP/GeoSite 数据:
    V2Ray 使用 geoip.datgeosite.dat 文件进行 IP 和域名路由判断。这两个文件需要定期更新以保持准确性。安装脚本通常会顺带安装,但不会自动更新。你可以再次运行安装脚本来更新核心和数据文件,或者单独下载更新:
    ```bash
    # 下载最新的 geoip.dat 和 geosite.dat 到临时目录
    wget https://github.com/v2fly/geoip/releases/latest/download/geoip.dat
    wget https://github.com/v2fly/domain-list-community/releases/latest/download/dlc.dat -O geosite.dat

    移动到 V2Ray 数据目录 (覆盖旧文件)

    sudo mv geoip.dat /usr/local/share/v2ray/
    sudo mv geosite.dat /usr/local/share/v2ray/

    重启 V2Ray 使新数据生效 (通常不需要,但保险起见)

    sudo systemctl restart v2ray

    ```

八、 总结与安全建议

恭喜你!通过本教程,你应该已经成功在 Linux VPS 上安装并配置了 V2Ray 服务端,并且掌握了基础的 TCP 配置以及进阶的 WebSocket + TLS 伪装配置方法。

回顾关键步骤

  1. 准备 VPS 并通过 SSH 连接。
  2. 更新系统,安装必要工具,配置防火墙。
  3. 使用官方脚本安装 V2Ray。
  4. 精心编辑 config.json 文件,配置入站(inbound)和出站(outbound)协议,特别是 UUID 和端口。
  5. (可选但推荐)配置 Nginx/Caddy + Let's Encrypt 实现 WebSocket + TLS 伪装。
  6. 启动并管理 V2Ray 服务 (systemctl)。
  7. 在客户端设备上配置连接信息并测试。

安全建议

  • UUID 务必保密:不要泄露你的 UUID,它相当于你的密码。为不同用户或设备使用不同的 UUID。
  • 使用强密码或 SSH 密钥:保护好你的 VPS 登录权限。
  • 及时更新系统和 V2Ray:保持软件最新以修复安全漏洞。
  • 使用 TLS 加密 (强烈推荐):WebSocket + TLS 是目前比较安全和隐蔽的配置方式。
  • 选择复杂的 WebSocket 路径:不要使用容易被扫描到的默认路径。
  • 配置防火墙:最小化开放端口。
  • 定期检查日志:监控异常活动。
  • 遵守法律法规:合理、合法地使用 V2Ray。

V2Ray 是一个功能强大的工具,本教程仅涵盖了其核心用法。你可以进一步探索 V2Ray 的路由规则、负载均衡、透明代理、链式代理等高级功能,官方文档 (https://www.v2fly.org/) 是你最好的学习资源。

希望这篇保姆级教程能帮助你顺利搭建起自己的 V2Ray 通道,享受更自由、更安全的网络体验!


THE END