V2Ray 在 Linux 的安装与配置方法 – wiki基地


V2Ray 在 Linux 上的安装与配置深度指南

前言

在当今复杂的网络环境下,越来越多的人需要一个可靠、灵活且功能强大的代理工具来访问互联网。V2Ray,作为 Project V 的核心工具,应运而生。它是一个高度模块化的网络代理软件包,支持多种协议,旨在提供更安全、更高效的网络连接。相比传统的代理工具,V2Ray 在隐匿性、抗封锁能力以及性能方面都有显著提升。

本文将详细介绍如何在 Linux 操作系统上安装和配置 V2Ray,从基础安装到进阶配置,力求覆盖常用场景,帮助您成功搭建一个稳定可靠的 V2Ray 服务端。

什么是 V2Ray?

V2Ray(或 Project V)是一个多协议的代理工具,它的核心是 V2Ray 二进制文件,负责实际的网络传输。Project V 的目标是构建一个模块化的代理系统,用户可以根据自己的需求自由组合不同的模块(协议、传输方式、路由规则等),以应对各种网络环境。

V2Ray 支持的常用协议包括:

  • VMess: V2Ray 的原生协议,拥有强大的伪装能力和高度可定制性,安全性较高。
  • VLESS: 一种新兴的轻量级协议,旨在提供更高的性能和更低的资源消耗,安全性同样优秀。
  • Trojan: 模拟 HTTPS 流量,具有良好的伪装效果。
  • Shadowsocks: 经典代理协议,简单易用,但相对容易被识别。
  • Dokodemo-door: 入站协议,可以将任意来源的连接导入 V2Ray 处理。
  • Socks, HTTP: 常规代理协议。

此外,V2Ray 支持多种底层传输方式,如 TCP、mKCP、WebSocket、HTTP/2 等,并可以结合 TLS 加密,进一步增强安全性和隐匿性。强大的路由功能允许用户根据域名、IP、协议、端口等多种规则灵活分流。

选择 V2Ray 的优势

  • 多协议支持: 能够应对不同的网络环境和需求。
  • 灵活的传输方式: WebSocket + TLS 组合能有效伪装成正常的网页流量,穿透力强。
  • 强大的路由功能: 可以实现国内外分流、广告拦截等高级功能。
  • 高度模块化: 便于定制和扩展。
  • 活跃的社区支持: 遇到问题容易找到解决方案。

环境准备

在开始安装和配置之前,请确保您具备以下条件:

  1. 一台运行 Linux 的服务器或虚拟机: 本文以常见的 Systemd 发行版(如 Ubuntu 18.04+、Debian 9+、CentOS 7+、Fedora 28+)为例。不同发行版的命令可能略有差异,但核心步骤相似。
  2. 拥有 Root 或 Sudo 权限: 安装和配置通常需要管理员权限。
  3. 稳定的互联网连接: 需要从 GitHub 下载 V2Ray 安装脚本和二进制文件。
  4. 一个域名 (可选,但强烈推荐配合 TLS 使用): 如果您计划使用 WebSocket + TLS 这种主流且安全的传输方式,一个域名是必需的。您需要将域名解析到您的 Linux 服务器 IP 地址。
  5. 防火墙设置 (需要注意): 确保您计划使用的端口在防火墙中是开放的。常见的 Linux 防火墙有 ufw (Ubuntu/Debian) 和 firewalld (CentOS/RHEL/Fedora)。

V2Ray 安装

V2Ray 官方提供了非常好用的安装脚本,这是最推荐的安装方式。它会自动检测系统环境、下载最新版本的 V2Ray、设置 Systemd 服务并进行初步配置。

方法一:使用官方安装脚本 (推荐)

这是最简单快捷的方法。

  1. 打开终端: 通过 SSH 或直接在服务器上打开终端。

  2. 下载并运行安装脚本: 官方安装脚本托管在 GitHub 上。您可以使用 curl 命令下载并直接通过 bash 执行。

    “`bash
    sudo apt update && sudo apt upgrade -y # (Ubuntu/Debian) 先更新系统是个好习惯

    或者 sudo yum update -y # (CentOS/RHEL/Fedora)

    下载并执行安装脚本

    sudo curl -L -s https://install.direct/go.sh | bash

    如果 install.direct 无法访问,可以尝试 ghproxy 或其他镜像 (不保证实时更新或可靠性):

    sudo curl -L -s https://ghproxy.com/https://raw.githubusercontent.com/v2fly/manual/main/install-release.sh | bash

    或者直接使用官方仓库 raw 地址 (可能需要代理才能访问):

    sudo curl -L -s https://raw.githubusercontent.com/v2fly/manual/main/install-release.sh | bash

    “`

    解释:
    * sudo: 以管理员权限运行命令。
    * curl -L -s: curl 是一个下载工具。-L 允许重定向,-s 静默模式,不显示下载进度。
    * https://install.direct/go.sh: 官方推荐的安装脚本短链接。
    * | bash: 将下载的脚本内容通过管道传递给 bash 解释器执行。

  3. 脚本执行过程: 脚本会自动检测 CPU 架构、下载对应的 V2Ray 二进制文件和相关资源(如 geosite.dat 和 geoip.dat),解压,并将 V2Ray 主程序 (v2ray) 和辅助程序 (v2ctl) 放到 /usr/local/bin/ 目录下。同时,它会在 /usr/local/etc/v2ray/ 目录下创建默认的配置文件 config.json,并设置 Systemd 服务 (v2ray.service),使其能够开机自启和方便管理。

  4. 检查安装结果: 脚本执行成功后,会提示安装完成,并可能显示 V2Ray 的版本信息。您可以通过以下命令检查 V2Ray 服务的状态:

    bash
    sudo systemctl status v2ray

    如果服务正在运行 (active (running)),说明安装成功。

  5. 重要路径:

    • V2Ray 主程序和工具:/usr/local/bin/v2ray, /usr/local/bin/v2ctl
    • 配置文件目录:/usr/local/etc/v2ray/
    • 默认配置文件:/usr/local/etc/v2ray/config.json
    • Geo 数据文件 (地理位置和网站信息):/usr/local/share/v2ray/ (包含 geoip.dat, geosite.dat)
    • Systemd 服务文件:/etc/systemd/system/v2ray.service
    • 日志文件:默认写入 Systemd Journal,可以通过 journalctl -u v2ray 查看。

方法二:手动安装 (不常用,适合特定场景)

如果您无法通过脚本安装,或者需要安装特定版本,可以考虑手动安装。

  1. 下载 V2Ray Core 二进制文件: 访问 V2Ray 的 GitHub Release 页面 (https://github.com/v2fly/v2ray-core/releases),找到最新版本,下载适用于您系统架构的压缩包(例如 v2ray-linux-64.zip)。您可以使用 wgetcurl 下载。

    “`bash

    示例:下载最新版本 (请替换为实际版本号和文件名)

    查看最新版本号:https://github.com/v2fly/v2ray-core/releases

    V2RAY_VERSION=”v5.13.0″ # 示例版本号,请替换为实际最新版本
    ARCH=”64″ # 或 “arm64”, “arm32″, 等
    DOWNLOAD_URL=”https://github.com/v2fly/v2ray-core/releases/download/${V2RAY_VERSION}/v2ray-linux-${ARCH}.zip”

    sudo apt install -y unzip # 安装解压工具 (如果未安装)

    或者 sudo yum install -y unzip

    mkdir /tmp/v2ray_download
    cd /tmp/v2ray_download
    curl -L -O ${DOWNLOAD_URL}
    unzip v2ray-linux-${ARCH}.zip
    “`

  2. 创建必要目录:

    bash
    sudo mkdir -p /usr/local/bin/v2ray # 存放主程序
    sudo mkdir -p /usr/local/etc/v2ray/ # 存放配置文件
    sudo mkdir -p /usr/local/share/v2ray/ # 存放 geo 数据文件

  3. 移动文件: 将解压后的二进制文件和 geo 数据文件移动到对应目录。

    bash
    sudo mv /tmp/v2ray_download/v2ray /usr/local/bin/v2ray/
    sudo mv /tmp/v2ray_download/v2ctl /usr/local/bin/v2ray/
    sudo mv /tmp/v2ray_download/geoip.dat /usr/local/share/v2ray/
    sudo mv /tmp/v2ray_download/geosite.dat /usr/local/share/v2ray/
    sudo chmod +x /usr/local/bin/v2ray/* # 添加执行权限

  4. 创建配置文件: 手动创建 config.json 文件。您可以从 V2Ray 官方文档获取一个基础模板,或者稍后按照本文的配置章节手动创建。

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

    粘贴或编写您的配置内容 (稍后详细介绍)

    “`

  5. 设置 Systemd 服务 (推荐): 为了方便管理,手动创建一个 Systemd 服务文件。

    bash
    sudo nano /etc/systemd/system/v2ray.service

    粘贴以下内容(这是一个基本的模板,您可以根据需要调整):

    “`ini
    [Unit]
    Description=V2Ray Service
    Documentation=https://www.v2fly.org/
    After=network.target nss-lookup.target

    [Service]
    User=root

    如果手动安装到 /usr/local/bin/v2ray/,请修改 ExecStart 路径

    如果使用官方脚本,默认是 /usr/local/bin/v2ray

    ExecStart=/usr/local/bin/v2ray run -config /usr/local/etc/v2ray/config.json
    Restart=on-failure
    RestartPreventExitStatus=23
    LimitNPROC=500
    LimitNOFILE=10000
    SystemCallArchitectures=x86_64 arm64

    SystemCallFilter=@system-service

    SystemCallFilter=~@privileged @resources

    SystemCallFilter=add_key name_to_handle_at open_by_handle_at finit_module delete_module

    [Install]
    WantedBy=multi-user.target
    “`

    注意:
    * ExecStart: 确保这里的路径指向您实际安装的 v2ray 可执行文件。如果您按照手动安装步骤将其放在 /usr/local/bin/v2ray/v2ray,则需要修改此行。如果按照官方脚本安装,则通常是 /usr/local/bin/v2ray。这里以官方脚本默认路径为例。
    * User: 运行 V2Ray 的用户,通常使用 root 以便绑定低端口,但出于安全考虑,更推荐创建一个非特权用户并赋予必要权限。为了简化,这里使用 root。
    * SystemCallFilter: 这些行是用于增强安全性的 System Call 过滤,可以根据需要保留或删除。

  6. 重新加载 Systemd 并启动服务:

    bash
    sudo systemctl daemon-reload # 重新加载 Systemd 配置文件
    sudo systemctl start v2ray # 启动 V2Ray 服务
    sudo systemctl enable v2ray # 设置开机自启
    sudo systemctl status v2ray # 检查服务状态

手动安装步骤相对复杂,容易出错,因此除非有特殊需求,强烈建议使用官方脚本进行安装。

V2Ray 配置详解

V2Ray 的核心配置是 /usr/local/etc/v2ray/config.json 文件。它使用 JSON 格式编写,结构严谨,对语法要求很高(例如,不允许注释、严格区分大小写、正确使用逗号等)。

一个典型的 V2Ray 配置包含以下主要部分:

  • log: 日志设置。
  • api (可选): API 设置,用于客户端或管理工具与 V2Ray 交互。
  • policy (可选): 策略设置,控制不同用户的权限和行为。
  • dns (可选): DNS 设置,可以指定 V2Ray 使用的 DNS 服务器。
  • stats (可选): 统计信息设置。
  • reverse (可选): 反向代理设置。
  • inbounds: 入站连接设置,定义 V2Ray 如何接收来自客户端的连接。
  • outbounds: 出站连接设置,定义 V2Ray 如何将流量发送出去。
  • routing: 路由规则设置,定义 V2Ray 如何根据规则将入站流量转发到不同的出站连接。

我们将重点讲解 inboundsoutboundsrouting 这三个最核心的部分,并以 VMess + WebSocket + TLS 为例进行详细配置。

获取必要信息

在配置之前,您需要准备一些关键信息:

  1. UUID: Universally Unique Identifier,全球唯一标识符。它是 V2Ray 用户身份的主要凭证。您可以生成一个 UUID。

    “`bash
    /usr/local/bin/v2ray uuid

    或使用在线 UUID 生成器,例如 https://www.uuidgenerator.net/

    “`
    生成并记下这个 UUID,客户端配置时需要用到。

  2. 额外 ID (AlterId): V2Ray VMess 协议中的一个安全特性,用于混淆数据。通常设置为 0 或 32。客户端和服务器端的 AlterId 必须一致。

  3. 端口号: 您希望 V2Ray 监听的端口。避免使用常用端口,如 80, 443, 22 等,除非您有特定的伪装需求。使用 443 配合 TLS 和 WebSocket 伪装成 HTTPS 流量是一个常见的策略。

  4. 域名 (如果使用 TLS): 您解析到服务器 IP 的域名。

  5. TLS 证书文件路径 (如果使用 TLS): 包括公钥 (fullchain.pem) 和私钥 (privkey.pem) 文件。如果您使用 Let’s Encrypt + Certbot 获取证书,文件通常位于 /etc/letsencrypt/live/你的域名/ 目录下。

配置示例:VMess + WebSocket + TLS

这是一个非常常用且推荐的配置组合,兼顾安全、隐匿和性能。

首先,使用编辑器打开配置文件:

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

清空默认内容(如果存在),然后粘贴以下 JSON 配置模板。请注意将 <YOUR_PORT><YOUR_UUID><YOUR_DOMAIN><YOUR_CERT_PATH><YOUR_KEY_PATH><YOUR_WS_PATH> 替换为您自己的实际值。

“`json
{
// 日志设置
“log”: {
“access”: “/var/log/v2ray/access.log”, // 访问日志路径
“error”: “/var/log/v2ray/error.log”, // 错误日志路径
“loglevel”: “warning” // 日志级别: debug, info, warning, error, none
},

// DNS 设置 (可选,使用 Cloudflare 或 Google 的 DNS)
“dns”: {
“servers”: [
“1.1.1.1”,
“8.8.8.8”,
“localhost” // 默认使用系统 DNS
]
},

// 入站连接 (Inbounds)
“inbounds”: [
{
“port”: , // V2Ray 监听的端口号,例如 443
“listen”: “0.0.0.0”, // 监听所有网卡上的连接
“protocol”: “vmess”, // 入站协议类型:vmess, vless, socks, http 等
“settings”: {
“clients”: [
{
“id”: ““, // 您的 UUID
“alterId”: 0, // 额外 ID,客户端和服务器必须一致,建议设为 0 或 32
“level”: 0 // 用户级别,通常为 0
// “email”: “[email protected]” // 可选,用于日志标识
}
// 如果需要添加多个用户,可以在此数组中添加更多 client 对象
// {
// “id”: “另一个UUID”,
// “alterId”: 0,
// “level”: 0
// }
],
“disableSystemRootCerts”: false // 是否禁用系统根证书
},
“streamSettings”: {
“network”: “ws”, // 底层传输方式:tcp, kcp, ws (WebSocket), http, quic, grpc
“security”: “tls”, // 加密方式:none, tls
“tlsSettings”: {
“serverName”: ““, // 服务器的域名,必须与证书匹配
“allowInsecure”: false, // 是否允许不安全连接 (不建议设置为 true)
“certificates”: [
{
“certificateFile”: “/fullchain.pem”, // 公钥证书文件路径
“keyFile”: “/privkey.pem” // 私钥文件路径
}
]
},
“wsSettings”: {
“path”: “/“, // WebSocket 的路径,以 / 开头,例如 /ray。建议使用复杂且不易猜解的路径。
“headers”: {} // 可选,自定义 HTTP 头
}
},
“sniffing”: {
“enabled”: true, // 开启流量嗅探
“destOverride”: [
“http”,
“tls”
]
}
}
],

// 出站连接 (Outbounds)
“outbounds”: [
{
“protocol”: “freedom”, // 直接连接到目标地址
“settings”: {},
“tag”: “direct” // 标签,用于路由规则引用
},
{
“protocol”: “blackhole”, // 阻止连接
“settings”: {},
“tag”: “block” // 标签
}
],

// 路由规则 (Routing)
“routing”: {
“domainStrategy”: “IPIfNonMatch”, // 域名解析策略:IPIfNonMatch (如果域名没有匹配到规则则解析IP并根据IP匹配), IPOnDemand (匹配时才解析IP)
“rules”: [
{
“type”: “field”,
“ip”: [
“geoip:private” // 阻止访问内网 IP
],
“outboundTag”: “block” // 匹配的 IP 流量转发到 block 出站
},
{
“type”: “field”,
“domain”: [
“geosite:cn” // 阻止访问中国大陆网站 (基于 geosite.dat)
],
“outboundTag”: “block”
}
// 可以添加更多路由规则,例如:
// {
// “type”: “field”,
// “domain”: [
// “domain:example.com”, // 匹配 example.com 及其子域名
// “exact:google.com” // 精确匹配 google.com
// ],
// “outboundTag”: “direct” // 匹配的域名走直连
// },
// {
// “type”: “field”,
// “ip”: [
// “geoip:us” // 匹配美国的 IP 地址 (基于 geoip.dat)
// ],
// “outboundTag”: “direct”
// }
]
}
}
“`

配置项详细解释:

  • log:

    • access, error: 指定日志文件的路径。如果路径不存在,V2Ray 会尝试创建。确保 /var/log/v2ray/ 目录存在且 V2Ray 运行用户有写入权限(官方脚本安装时通常会处理)。
    • loglevel: 控制日志的详细程度。warning 是一个不错的默认值,只记录警告及以上的错误;debug 会记录大量信息,适合排查问题。
  • dns:

    • servers: V2Ray 在处理域名时使用的 DNS 服务器列表。可以指定 IP 地址或特殊的字符串(如 localhost 使用系统 DNS)。使用公共 DNS (1.1.1.1, 8.8.8.8) 可以避免使用可能受到污染的本地 DNS。
  • inbounds: 一个数组,可以配置多个入站协议。

    • port: V2Ray 监听的端口号。
    • listen: 监听的 IP 地址。0.0.0.0 表示监听服务器上的所有 IP 地址 (包括公网 IP)。如果只想监听内网,可以使用 127.0.0.1 或特定的内网 IP。
    • protocol: 入站协议类型,这里是 vmess
    • settings: 协议特定的设置。
      • clients: 一个数组,包含允许连接的用户信息。
        • id: 用户的 UUID。
        • alterId: 额外 ID。设为 0 通常够用,但为了兼容旧版本或特定客户端,有时会设为 32。客户端和服务端必须一致。
        • level: 优先级,数字越小优先级越高。通常为 0。
    • streamSettings: 底层传输方式设置。
      • network: 传输协议,这里是 ws (WebSocket)。
      • security: 加密方式,这里是 tls。开启 TLS 后,所有传输的数据都会被加密,并且需要合法的 TLS 证书。
      • tlsSettings: TLS 相关的设置。
        • serverName: 服务器的域名,必须与您 TLS 证书中的域名匹配。
        • allowInsecure: 是否允许不安全的 TLS 连接。强烈建议设置为 false,否则存在中间人攻击的风险。
        • certificates: 一个数组,包含证书信息。通常只需要一组。
          • certificateFile: 公钥证书文件(链)的路径。通常是 Let’s Encrypt 生成的 fullchain.pem
          • keyFile: 私钥文件的路径。通常是 Let’s Encrypt 生成的 privkey.pem
      • wsSettings: WebSocket 相关的设置。
        • path: WebSocket 的路径。客户端需要知道这个路径才能正确连接。为了增加隐匿性,建议使用一个复杂且不易猜解的路径,例如 /my_secret_path_for_v2ray
        • headers: 可选,自定义 HTTP 头。
    • sniffing: 流量嗅探设置。开启后,V2Ray 会尝试识别连接的实际目标地址,有助于进行更精确的路由。
  • outbounds: 一个数组,可以配置多个出站协议。

    • protocol: 出站协议类型。freedom 表示直接连接目标地址;blackhole 表示丢弃连接(常用于屏蔽特定流量)。
    • settings: 协议特定的设置。freedomblackhole 通常不需要额外设置。
    • tag: 为这个出站连接指定一个标签,方便在路由规则中引用。
  • routing: 路由规则设置。

    • domainStrategy: 域名解析策略。
      • IPIfNonMatch: V2Ray 会先尝试根据域名匹配规则。如果没有匹配到,它会解析域名对应的 IP 地址,然后根据 IP 地址匹配规则。这是比较常用的策略。
      • IPOnDemand: V2Ray 只在规则匹配需要用到 IP 时(例如有基于 IP 的规则)才解析域名。
    • rules: 一个数组,包含具体的路由规则。规则从上往下依次匹配,一旦匹配成功,就会应用对应的 outboundTag,后续规则不再判断。
      • type: 规则类型,通常是 field
      • ip: 匹配目标 IP 地址。"geoip:private" 是一个特殊的规则,表示匹配私有 IP 地址段(内网 IP)。
      • domain: 匹配目标域名。"geosite:cn" 是一个特殊的规则,表示匹配 geo 数据文件中标记为中国的域名。domain:example.com 匹配 example.com 及其子域名;exact:google.com 只匹配 google.comregexp:.*google\.com$ 使用正则表达式匹配。
      • protocol (可选): 匹配目标协议 (如 http, https)。
      • port (可选): 匹配目标端口。
      • outboundTag: 匹配的流量转发到的出站连接的标签。

获取 TLS 证书 (Certbot)

如果您使用 TLS,需要一个有效的域名证书。Let’s Encrypt 提供免费的自动化证书服务,可以通过 Certbot 客户端方便地获取。

  1. 安装 Certbot: Certbot 推荐使用 snapd 安装,或者使用系统的包管理器。

    “`bash

    Ubuntu 18.04+ / Debian 10+

    sudo apt update
    sudo apt install snapd
    sudo snap install core; sudo snap refresh core
    sudo snap install –classic certbot
    sudo ln -s /snap/bin/certbot /usr/bin/certbot # 创建软链接方便使用

    CentOS/RHEL 7+ / Fedora

    确保安装了 EPEL 源 (如果需要)

    sudo yum install epel-release

    sudo yum upgrade

    sudo yum install certbot python3-certbot-apache # 如果用 Apache

    或者 sudo yum install certbot python3-certbot-nginx # 如果用 Nginx

    如果用 snapd (CentOS 8+ / Fedora 30+):

    sudo dnf install snapd # Fedora

    sudo yum install snapd # CentOS 8

    sudo systemctl enable –now snapd.socket # CentOS 8

    sudo ln -s /var/lib/snapd/snap /snap # CentOS 8

    sudo snap install core; sudo snap refresh core

    sudo snap install –classic certbot

    sudo ln -s /snap/bin/certbot /usr/bin/certbot

    “`
    请根据您的系统和偏好选择安装方式。使用 snapd 通常能获得最新版本的 Certbot。

  2. 获取证书: 使用独立模式 (standalone) 获取证书。这种模式下,Certbot 会临时启动一个 Web 服务器监听 80 端口来验证域名所有权。因此,在运行此命令前,请确保您的 V2Ray 或其他服务没有占用 80 端口,并且服务器防火墙允许访问 80 端口。

    bash
    sudo certbot certonly --standalone -d your_domain.com --email [email protected] --agree-tos --no-eff-email

    解释:
    * certonly: 只获取证书,不修改 Web 服务器配置。
    * --standalone: 使用独立模式。
    * -d your_domain.com: 指定您的域名。如果您有多个域名,可以重复 -d 参数。
    * --email [email protected]: 提供一个邮箱用于接收证书过期提醒等通知。
    * --agree-tos: 同意 Let’s Encrypt 的服务条款。
    * --no-eff-email: 不订阅 EFF 的邮件列表。

    如果一切顺利,Certbot 会提示证书已成功生成,并告诉你证书文件的存放路径。路径通常在 /etc/letsencrypt/live/your_domain.com/ 目录下,其中 fullchain.pem 是证书链文件(包括您的证书和中间证书),privkey.pem 是私钥文件。请务必记下这两个文件的完整路径,用于 V2Ray 配置。

    证书有效期通常为 90 天,Certbot 会自动配置一个 Systemd Timer 或 Cron Job 来自动续期。

  3. 更新 V2Ray 配置: 将获取到的证书文件路径 (/etc/letsencrypt/live/<YOUR_DOMAIN>/fullchain.pem/etc/letsencrypt/live/<YOUR_DOMAIN>/privkey.pem) 填入 config.jsontlsSettings 下的 certificateFilekeyFile 字段。

配置 VLESS + WebSocket + TLS (可选)

VLESS 是 V2Ray 推出的另一种协议,它结构更简单,理论上性能更高。配置方式与 VMess 类似,主要修改 protocolsettings 部分。

inbounds 部分添加或修改一个配置块:

json
{
"port": 443, // 或者其他端口
"listen": "0.0.0.0",
"protocol": "vless", // 协议类型改为 vless
"settings": {
"clients": [
{
"id": "<YOUR_UUID>", // 您的 UUID
"flow": "" // VLESS XTLS flow 控制,WebSocket 通常留空
}
],
"disableSystemRootCerts": false
},
"streamSettings": {
"network": "ws",
"security": "tls",
"tlsSettings": {
"serverName": "<YOUR_DOMAIN>",
"allowInsecure": false,
"certificates": [
{
"certificateFile": "<YOUR_CERT_PATH>/fullchain.pem",
"keyFile": "<YOUR_KEY_PATH>/privkey.pem"
}
]
},
"wsSettings": {
"path": "/<YOUR_WS_PATH>" // WebSocket 路径
}
},
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls"]
}
}

注意:VLESS 的 settings 部分没有 alterId,因为它不依赖于此进行混淆。它主要依赖 TLS 和 WebSocket 传输本身的特性。

您可以同时配置 VMess 和 VLESS 入站,只需在 inbounds 数组中添加另一个配置块,使用不同的端口或相同的端口但通过路由规则区分(虽然同一端口区分不同协议比较复杂,通常建议使用不同端口或路径)。

启动、停止与管理 V2Ray 服务

安装脚本会自动将 V2Ray 配置为 Systemd 服务,方便您进行管理。

  1. 启动 V2Ray:
    bash
    sudo systemctl start v2ray

  2. 停止 V2Ray:
    bash
    sudo systemctl stop v2ray

  3. 重启 V2Ray (修改配置后需要重启):
    bash
    sudo systemctl restart v2ray

  4. 检查 V2Ray 服务状态:
    bash
    sudo systemctl status v2ray

    查看输出,确认服务是否正在运行 (active (running))。如果出现错误 (failed),请查看日志。

  5. 设置开机自启 (如果未设置):
    bash
    sudo systemctl enable v2ray

  6. 禁用开机自启:
    bash
    sudo systemctl disable v2ray

  7. 查看 V2Ray 日志: 官方脚本安装的 V2Ray 默认将日志输出到 Systemd Journal。

    bash
    sudo journalctl -u v2ray --since "5 minutes ago"

    此命令会显示 V2Ray 服务最近 5 分钟的日志。您可以调整 --since 参数查看更长时间的日志,例如 --since "1 hour ago"--since "yesterday"
    如果您的 config.json 中配置了日志文件路径(如 /var/log/v2ray/access.log/var/log/v2ray/error.log),您也可以直接查看这些文件:
    bash
    sudo tail -f /var/log/v2ray/error.log
    sudo tail -f /var/log/v2ray/access.log

    使用 tail -f 可以实时查看日志输出,方便调试。

防火墙设置

Linux 服务器通常有防火墙保护。您需要开放 V2Ray 监听的端口,以便客户端能够连接。

对于使用 UFW (Uncomplicated Firewall) 的系统 (如 Ubuntu/Debian):

bash
sudo ufw allow <YOUR_PORT>/tcp comment 'Allow V2Ray incoming'
sudo ufw reload # 重新加载防火墙规则
sudo ufw status # 检查防火墙状态和已开放的端口

如果您获取 TLS 证书时使用了独立模式,并且临时开放了 80 端口,现在可以考虑关闭它(如果您的服务器上没有其他服务需要 80 端口):
bash
sudo ufw deny 80/tcp comment 'Deny HTTP'
sudo ufw reload

如果您需要在客户端使用 V2Ray 作为透明代理,可能还需要开放 UDP 端口。具体取决于您的客户端配置和需求。

对于使用 Firewalld 的系统 (如 CentOS/RHEL/Fedora):

bash
sudo firewall-cmd --permanent --add-port=<YOUR_PORT>/tcp --zone=public
sudo firewall-cmd --reload # 重新加载防火墙规则
sudo firewall-cmd --list-ports --zone=public # 检查已开放的端口

同样,如果临时开放了 80 端口,可以考虑关闭:
bash
sudo firewall-cmd --permanent --remove-port=80/tcp --zone=public
sudo firewall-cmd --reload

请务必根据您实际使用的端口号进行操作。

故障排除

如果 V2Ray 服务未能成功启动或客户端无法连接,可以按照以下步骤进行排查:

  1. 检查 V2Ray 服务状态:
    bash
    sudo systemctl status v2ray

    查看输出信息,特别是红色或黄色的错误信息。

  2. 查看 V2Ray 日志:
    bash
    sudo journalctl -u v2ray --since "10 minutes ago"
    # 或者查看配置文件中指定的日志文件
    # sudo tail -f /var/log/v2ray/error.log

    日志是诊断问题最重要的依据。常见的错误包括:

    • failed to listen on... address already in use: 端口被其他程序占用。
    • failed to open config file... no such file or directory: 配置文件路径错误。
    • invalid config...: 配置文件 JSON 语法错误或配置项错误。
  3. 检查配置文件语法: JSON 格式对语法要求非常严格。一个简单的逗号或括号错误都可能导致启动失败。可以使用 V2Ray 提供的工具进行检查:
    bash
    /usr/local/bin/v2ray -test -config /usr/local/etc/v2ray/config.json

    这个命令会解析并验证您的配置文件。如果存在语法错误,会提示具体的行号和位置。

  4. 检查防火墙: 确认 V2Ray 监听的端口在服务器防火墙中已经开放。使用 ufw statusfirewall-cmd --list-ports 检查。

  5. 检查 SELinux (CentOS/RHEL/Fedora): 在某些 SELinux 配置下,可能会阻止 V2Ray 绑定端口或读写文件。如果您不熟悉 SELinux,可以尝试临时将其设置为 Permissive 模式进行测试:
    bash
    sudo setenforce 0 # 临时设置为 Permissive
    getenforce # 查看当前模式

    如果设置为 Permissive 后 V2Ray 正常工作,说明问题可能与 SELinux 有关。此时应该研究如何为 V2Ray 添加合适的 SELinux 策略,而不是长期禁用 SELinux。

  6. 检查 TLS 证书 (如果使用 TLS):

    • 确保证书文件 (fullchain.pem, privkey.pem) 路径在配置文件中是正确的。
    • 确保 V2Ray 运行用户(通常是 root)对证书文件具有读取权限。证书文件通常位于 /etc/letsencrypt/ 目录下,权限比较严格。
    • 确保 serverName 与您证书中的域名完全匹配。
    • 确保您的域名已经正确解析到服务器的公网 IP。可以使用 ping your_domain.comdig your_domain.com 进行验证。
  7. 检查网络连通性: 确保服务器能够访问外部网络,例如:
    bash
    ping 8.8.8.8
    curl https://www.google.com

  8. 客户端配置核对: 确保客户端配置与服务器端完全一致,包括:服务器地址 (域名或IP)、端口、用户ID (UUID)、额外ID (AlterId, VMess)、协议类型 (VMess/VLESS)、传输方式 (WebSocket)、TLS、WebSocket 路径、Server Name (TLS)。任何一个不匹配都会导致连接失败。

通过以上步骤,您应该能够定位并解决大部分 V2Ray 安装和配置引起的问题。

高级配置示例 (简述)

V2Ray 功能强大,还支持许多高级配置,例如:

  • Mux (Multiplexing): 多路复用,可以在单个 TCP 连接上承载多个 V2Ray 连接,降低延迟并提高效率。可以在 outboundsstreamSettings 中配置 mux
  • 多用户/多协议:inbounds 数组中添加多个配置块,可以同时启用 VMess、VLESS、Trojan 等不同协议或相同协议不同端口/用户。
  • 复杂的路由规则: 利用 domainipprotocolportinboundTagoutboundTag 等多种匹配条件和 outboundTag 将流量精确分发到不同的出站连接(例如,通过不同的代理链、直连、阻止连接等)。可以结合 Geo 数据文件 (geoip.dat, geosite.dat) 实现基于地理位置和网站类型的分流。
  • 动态端口: V2Ray 不直接支持简单的动态端口,但可以通过 API 或外部脚本配合实现端口的动态管理。
  • HTTP/2 传输: 可以将 V2Ray 流量伪装在 HTTP/2 流量中。通常需要 Nginx/Caddy 等 Web 服务器作为反向代理,将流量转发给 V2Ray。这种方式可以与网站共存。

详细的高级配置需要深入研究 V2Ray 的官方文档 (https://www.v2fly.org/config/overview.html)。

客户端配置

服务器端配置完成后,您需要在客户端设备(如 Windows、macOS、Android、iOS)上下载并安装相应的 V2Ray 客户端软件。常见的客户端包括 V2RayN (Windows), V2RayX (macOS), V2RayNG (Android), Shadowrocket/Quantumult X/Surge (iOS) 等。

在客户端中,您需要输入服务器端的连接信息,这些信息必须与您在服务器 config.json 文件中设置的 inbound 规则完全一致:

  • 地址/服务器: 您的服务器公网 IP 或域名。
  • 端口: V2Ray 监听的端口 (<YOUR_PORT>)。
  • 用户 ID (UUID): 您生成的 UUID (<YOUR_UUID>)。
  • 额外 ID (AlterId, VMess 协议需要): 与服务器端设置一致 (例如 0)。
  • 协议: VMess 或 VLESS。
  • 传输方式: WebSocket。
  • 底层安全/TLS: 启用 TLS。
  • SNI / Server Name (TLS): 您的域名 (<YOUR_DOMAIN>)。
  • 跳过证书验证 (TLS): 务必设置为关闭或不勾选,除非您知道自己在做什么。
  • WebSocket 路径: 与服务器端设置一致 (/<YOUR_WS_PATH>)。
  • WebSocket Header (可选): 如果服务器端设置了,客户端也需要对应设置。

正确配置客户端后,您就可以通过 V2Ray 连接到您的服务器,享受更自由的网络访问了。

总结

本文详细介绍了在 Linux 系统上安装和配置 V2Ray 的过程,包括使用官方脚本和手动安装两种方法,并重点讲解了 VMess + WebSocket + TLS 这种常用配置的细节。通过理解配置文件的各个部分、掌握服务管理命令和故障排除技巧,您应该能够成功搭建并运行一个稳定可靠的 V2Ray 服务端。

V2Ray 的灵活性和强大功能使其成为应对复杂网络环境的优秀选择。希望这篇指南能帮助您迈出成功的第一步。请记住,网络环境不断变化,持续关注 V2Ray 的最新动态和安全建议是非常重要的。祝您使用愉快!


发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部