合规提示(必读):本文仅讨论 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 拉镜像
| |
离线包(无 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):
| |
UUID 生成:
cat /proc/sys/kernel/random/uuid或用 v2ctl 工具生成。 alterId 0:VMess AEAD 模式,老版本 alterId > 0 已被废弃。 WebSocket path:必须以/开头,Nginx 反代时匹配同一路径。
3.3 启动
| |
或者用 --restart=always + 日志驱动:
| |
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:
| |
五、系统代理配置
V2Ray 客户端启动后,监听本地 1080(SOCKS5)/ 1081(HTTP)端口。Linux 上让命令行流量走代理:
| |
验证:
| |
图形界面代理:Linux 桌面一般在系统设置 → 网络 → 代理,填 SOCKS5
127.0.0.1:1080。 Windows:Qv2ray / V2RayN 启动后会自动设置系统代理(或按 Win+R 输入inetcpl.cpl手动配)。 macOS:Qv2ray / V2RayU 默认开启"系统代理"开关。
六、Nginx 反代 V2Ray(域名 + 443 共用)
很多场景下不想专门为 V2Ray 开 443 端口,而是和现有 Web 服务共用 443(WebSocket path 区分):
| |
此时 V2Ray 容器监听 127.0.0.1:10000(--network=host 模式下用 127.0.0.1 暴露给 Nginx)。
七、踩坑清单
- UUID 写错——UUID 格式
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,客户端服务端必须完全一致 - alterId 不一致——服务端
0,客户端也必须0(VMess AEAD 强制) - TLS 证书路径错——容器内路径用
/etc/v2ray/...,挂载到宿主机的实际路径 - 防火墙没开 443——国内云厂商对 443 有备案要求,备案后才能用
- Docker 网络模式——
--network=host和端口映射二选一,混用导致监听不到 - 客户端系统代理没开——V2Ray 起来了但流量没走,桌面端检查"系统代理"开关
- 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
下一步
- 自建企业 VPN?→ OpenVPN 自建 VPN 服务 一文
- 反向代理网关?→ Nginx 反向代理实战 一文
- 实时视频流?→ 流媒体与 WebRTC 实时视频 一文
