Featured image of post 代理工具技术原理与海外业务场景:V2Ray / v2fly 内核 + Docker 部署 + 系统代理配置

代理工具技术原理与海外业务场景:V2Ray / v2fly 内核 + Docker 部署 + 系统代理配置

V2Ray(v2fly 内核)网络代理技术原理:VMess / VLESS / Trojan / Shadowsocks 协议对比、容器化部署、config.json 客户端配置、系统代理环境变量(用于海外业务 / 跨境企业内网 / 学术研究)

合规提示(必读):本文仅讨论 V2Ray 等网络代理工具的技术原理与海外业务部署,这些是公开的网络技术。部署、使用代理服务务必遵守所在国家/地区法律法规

  • 中国大陆境内严格遵循《计算机信息网络国际联网管理暂行规定》《网络安全法》,未经批准擅自建立、使用其他信道进行国际联网属违法行为
  • 合法用途:跨境企业内部网络互通、海外业务数据回传、学术研究、协议分析、网络安全演练、海外差旅访问公司资源。
  • 本文不评价、不推荐任何"绕过监管"的服务不提供节点订阅、节点分享、节点购买链接

V2Ray(Project V)是一个"网络代理工具平台",支持 VMess / VLESS / Trojan / Shadowsocks 等多种协议,跨平台、性能好、对抗检测能力优于早期 SS/SSR。V2Ray 核心原项目(V2Ray Core)在 2020 年左右原作者退出社区,后续由 v2fly 社区继续维护 fork(v2fly/v2ray-core),版本号沿用 v4.x。这篇文章基于 v2fly 内核 + Docker,讲清楚服务端/客户端的部署、配置、系统代理接入,仅供企业内网 / 海外业务 / 学术研究场景参考

阅读对象:需要为企业跨境网络、海外业务、学术研究自建代理服务的同学
覆盖范围:v2fly/v2ray-core v4.45.2 容器化部署、config.json 客户端配置、系统代理环境变量

一、背景与版本选择

项目状态维护方
v2ray/v2ray-core已停止原 V2Ray 团队(2020 退出)
v2fly/v2ray-core活跃v2fly 社区 fork
xtls/Xray-core活跃XTLS 项目(VLESS + XTLS 性能更强)
shadowsocks/shadowsocks-libev活跃经典 SS,仍在维护
trojan-gfw/trojan活跃伪装成 HTTPS

本文选型:用 v2fly/v2ray-core,跨平台、社区稳定、文档齐全。如果追求极致性能/抗检测,可考虑 Xray-core(VLESS + XTLS 组合),但配置复杂度更高。

再次提醒:本节技术细节用于海外业务、跨境企业内网、学术研究、协议原理学习等合法场景。请勿用于违反所在国法律法规的用途

二、平台要求

V2Ray 跨 Linux 主流发行版:

  • Linux 内核 ≥ 2.6.23(Debian 7+、Ubuntu 12.04+、CentOS 7+、Arch 都 OK)
  • 查看内核:uname -r,比如 3.10.0-1127.13.1.el7.x86_64

架构支持x86 / amd64 / arm / arm64 / mips64 / mips / riscv64

三、容器化部署

3.1 拉镜像

1
docker pull v2fly/v2fly-core:v4.45.2

离线包(无 Docker 环境的兜底):从 https://github.com/v2fly/v2ray-core/releases 下载 v2ray-linux-64.zip,解压即可运行。

3.2 配置文件

V2Ray 配置文件默认在 /etc/v2ray/config.json,主要字段:

  • 服务器监听端口
  • 协议(VMess / VLESS / Shadowsocks / Trojan / SOCKS)
  • 客户端 UUID(VMess)/ 密码(SS/Trojan)
  • 传输层(TCP / WebSocket / HTTP/2 / gRPC / QUIC)
  • TLS(证书 + 域名)

完整 config.json 示例(VMess + WebSocket + TLS):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
{
  "log": {
    "loglevel": "warning"
  },
  "inbounds": [{
    "port": 443,
    "protocol": "vmess",
    "settings": {
      "clients": [
        {
          "id": "{{UUID}}",
          "alterId": 0
        }
      ]
    },
    "streamSettings": {
      "network": "ws",
      "wsSettings": {
        "path": "/{{WS_PATH}}"
      },
      "security": "tls",
      "tlsSettings": {
        "certificates": [
          {
            "certificateFile": "/etc/v2ray/tls/fullchain.pem",
            "keyFile": "/etc/v2ray/tls/privkey.pem"
          }
        ]
      }
    }
  }],
  "outbounds": [{
    "protocol": "freedom",
    "tag": "direct"
  }]
}

UUID 生成cat /proc/sys/kernel/random/uuid 或用 v2ctl 工具生成。 alterId 0:VMess AEAD 模式,老版本 alterId > 0 已被废弃。 WebSocket path:必须以 / 开头,Nginx 反代时匹配同一路径。

3.3 启动

1
2
3
4
5
6
# 把 config.json 挂进去
docker run -d \
  --name v2ray \
  --network host \
  -v /home/v2ray/config.json:/etc/v2ray/config.json \
  v2fly/v2fly-core:v4.45.2

或者用 --restart=always + 日志驱动:

1
2
3
4
5
6
docker run -d \
  --name v2ray \
  --network host \
  --restart=always \
  -v /home/v2ray/config.json:/etc/v2ray/config.json \
  v2fly/v2fly-core:v4.45.2

3.4 文件结构

容器内关键路径:

  • /etc/v2ray/config.json:主配置文件
  • /usr/bin/v2ray:V2Ray 主程序
  • /usr/bin/v2ctl:V2Ray 辅助工具(生成 UUID、查看配置等)
  • /usr/local/share/v2ray/geoip.dat:IP 数据文件(按国家分流用)
  • /usr/local/share/v2ray/geosite.dat:域名数据文件(按域名分流用)

四、客户端接入

4.1 桌面客户端

  • Windows / macOS / Linux:Qv2ray(Qt 写的跨平台 GUI,已停更但仍可用)、V2RayN(Windows 经典)、V2RayU(macOS)、V2RayA(带 WebUI)
  • iOS:Shadowrocket(小火箭,付费)、Quantumult X、Stash
  • Android:v2rayNG(开源)、SagerNet

4.2 客户端配置

客户端和服务端是"协议对协议"——服务端 VMess+WS+TLS,客户端必须配相同参数。客户端 config.json:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
{
  "log": { "loglevel": "warning" },
  "inbounds": [{
    "port": 1080,
    "listen": "127.0.0.1",
    "protocol": "socks",
    "settings": { "udp": true }
  }, {
    "port": 1081,
    "listen": "127.0.0.1",
    "protocol": "http"
  }],
  "outbounds": [{
    "protocol": "vmess",
    "settings": {
      "vnext": [{
        "address": "{{SERVER_IP}}",
        "port": 443,
        "users": [{
          "id": "{{UUID}}",
          "alterId": 0,
          "security": "auto"
        }]
      }]
    },
    "streamSettings": {
      "network": "ws",
      "wsSettings": { "path": "/{{WS_PATH}}" },
      "security": "tls",
      "tlsSettings": { "serverName": "{{DOMAIN}}" }
    }
  }]
}

五、系统代理配置

V2Ray 客户端启动后,监听本地 1080(SOCKS5)/ 1081(HTTP)端口。Linux 上让命令行流量走代理:

1
2
3
4
5
6
7
vim /etc/profile

export ALL_PROXY=socks5://127.0.0.1:1080
export http_proxy="socks5://127.0.0.1:1080"
export https_proxy="socks5://127.0.0.1:1080"

source /etc/profile

验证:

1
curl -x socks5://127.0.0.1:1080 https://www.google.com

图形界面代理:Linux 桌面一般在系统设置 → 网络 → 代理,填 SOCKS5 127.0.0.1:1080Windows:Qv2ray / V2RayN 启动后会自动设置系统代理(或按 Win+R 输入 inetcpl.cpl 手动配)。 macOS:Qv2ray / V2RayU 默认开启"系统代理"开关。

六、Nginx 反代 V2Ray(域名 + 443 共用)

很多场景下不想专门为 V2Ray 开 443 端口,而是和现有 Web 服务共用 443(WebSocket path 区分):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
server {
    listen 443 ssl;
    server_name v2.example.com;

    ssl_certificate     /www/.../fullchain.pem;
    ssl_certificate_key /www/.../privkey.pem;

    # 正常 Web 流量
    location / {
        root /var/www/html;
    }

    # V2Ray 流量
    location /{{WS_PATH}} {
        proxy_redirect off;
        proxy_pass http://127.0.0.1:10000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

此时 V2Ray 容器监听 127.0.0.1:10000--network=host 模式下用 127.0.0.1 暴露给 Nginx)。

七、踩坑清单

  1. UUID 写错——UUID 格式 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,客户端服务端必须完全一致
  2. alterId 不一致——服务端 0,客户端也必须 0(VMess AEAD 强制)
  3. TLS 证书路径错——容器内路径用 /etc/v2ray/...,挂载到宿主机的实际路径
  4. 防火墙没开 443——国内云厂商对 443 有备案要求,备案后才能用
  5. Docker 网络模式——--network=host 和端口映射二选一,混用导致监听不到
  6. 客户端系统代理没开——V2Ray 起来了但流量没走,桌面端检查"系统代理"开关
  7. DNS 污染——开启 V2Ray 后仍访问不了某些网站,是 DNS 污染。客户端要配 dns: { "servers": ["8.8.8.8"] },或在 V2Ray 启用 dns

八、参考资料

  • v2fly 官方仓库:https://github.com/v2fly/v2ray-core
  • v2fly 文档:https://www.v2fly.org/
  • V2Ray 配置生成器:https://www.v2fly.org/config/tools.html
  • Xray 项目(VMess/VLESS 性能更优):https://github.com/XTLS/Xray-core
  • V2Ray 客户端列表:https://www.v2fly.org/awesome/tools.html

下一步

使用 Hugo 构建
主题 StackJimmy 设计