Skip to content

V2Ray

项目状态: ✅ 维护中 | 推荐度: ⭐⭐⭐⭐ | 世代: 第四代 | 继任者: Xray

快速概览

V2Ray(Project V)是一个功能强大的多协议代理平台,诞生于 2015 年。它不仅是一个代理工具,更是一个完整的网络工具平台,支持多种传输协议和混淆方式,具有强大的路由功能。

💡 重要提示: V2Ray 和 Xray 的关系类似于 Linux 内核的分支。Xray 是 V2Ray 的超集,完全兼容 V2Ray 配置,但增加了 XTLS 等新特性。新用户建议直接使用 Xray

核心特性

  • 🔄 多协议支持: VMess、VLESS、Trojan、Shadowsocks 等
  • 🚦 强大路由: 基于域名、IP、协议的灵活路由
  • 🌐 多种传输: TCP、WebSocket、HTTP/2、gRPC 等
  • 🔧 高度可定制: 几乎所有参数都可配置
  • 📊 流量统计: 内置流量统计功能

关键指标

指标评分说明
性能⭐⭐⭐⭐性能良好,但不如 Xray
安全性⭐⭐⭐⭐⭐多层加密,安全可靠
稳定性⭐⭐⭐⭐⭐经过长期验证,非常稳定
隐蔽性⭐⭐⭐⭐取决于配置,可以很隐蔽
易用性⭐⭐⭐配置复杂,需要学习
文档⭐⭐⭐⭐官方文档详细
社区⭐⭐⭐⭐⭐社区非常活跃

V2Ray vs Xray

为什么有两个项目

2020 年 11 月,V2Ray 核心开发者 RPRX 因为技术路线分歧,从 V2Ray 分叉创建了 Xray。

分歧点: XTLS 技术

  • RPRX 开发了 XTLS,希望合并到 V2Ray
  • V2Ray 维护者担心安全性,拒绝合并
  • RPRX 创建 Xray,独立发展

主要区别

特性V2RayXray
XTLS✅ 核心特性
Reality✅ 革命性创新
性能良好优秀(XTLS 提升 2-3 倍)
兼容性V2Ray 配置完全兼容 V2Ray
开发速度稳健更激进
新特性保守积极
社区传统社区新兴社区

选择建议

选择 V2Ray 的理由:

  • 追求稳定保守
  • 不需要 XTLS/Reality
  • 已有成熟的 V2Ray 部署

选择 Xray 的理由 (推荐):

  • 追求性能和新特性
  • 需要 XTLS 或 Reality
  • 新部署

结论: 两者配置完全兼容,新用户建议直接使用 Xray


核心概念

1. VMess 协议

V2Ray 的原创协议,特点:

  • 动态端口: 服务端可以动态更改端口
  • 时间戳验证: 防止重放攻击(但要求时钟同步)
  • alterId: 额外 ID 机制(已废弃,建议设为 0)
  • 加密: AES-128-GCM, ChaCha20-Poly1305

基本配置:

json
{
  "vnext": [{
    "address": "server.com",
    "port": 10086,
    "users": [{
      "id": "UUID",
      "alterId": 0,  // 必须设为 0
      "security": "auto"
    }]
  }]
}

2. 路由功能

V2Ray 的杀手级功能,支持复杂的流量分流:

json
{
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      {
        "type": "field",
        "domain": ["geosite:cn"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "ip": ["geoip:cn", "geoip:private"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "domain": ["geosite:category-ads-all"],
        "outboundTag": "block"
      }
    ]
  }
}

路由规则支持:

  • 域名匹配(完整、子串、正则)
  • IP 匹配(CIDR、GeoIP)
  • 端口匹配
  • 协议匹配
  • 入站标签匹配

3. 传输层协议

V2Ray 支持多种传输方式:

传输方式特点适用场景
TCP标准 TCP默认选择
mKCP基于 UDP 的 KCP高丢包环境
WebSocketHTTP 升级协议CDN 友好
HTTP/2多路复用高性能
QUICUDP 的可靠传输现代网络
gRPCGoogle RPC云原生

基本配置

服务端配置

json
{
  "log": {
    "loglevel": "warning"
  },
  "inbounds": [{
    "port": 10086,
    "protocol": "vmess",
    "settings": {
      "clients": [{
        "id": "b831381d-6324-4d53-ad4f-8cda48b30811",
        "alterId": 0
      }]
    },
    "streamSettings": {
      "network": "tcp"
    }
  }],
  "outbounds": [{
    "protocol": "freedom"
  }]
}

客户端配置

json
{
  "log": {
    "loglevel": "warning"
  },
  "inbounds": [{
    "port": 1080,
    "protocol": "socks",
    "settings": {
      "auth": "noauth"
    }
  }],
  "outbounds": [{
    "protocol": "vmess",
    "settings": {
      "vnext": [{
        "address": "server.com",
        "port": 10086,
        "users": [{
          "id": "b831381d-6324-4d53-ad4f-8cda48b30811",
          "alterId": 0,
          "security": "auto"
        }]
      }]
    }
  }]
}

常用配置方案

方案 1: VMess + WebSocket + TLS + CDN

适用场景: CDN 中转,隐藏真实 IP

服务端:

json
{
  "inbounds": [{
    "port": 10086,
    "listen": "127.0.0.1",
    "protocol": "vmess",
    "settings": {
      "clients": [{"id": "UUID", "alterId": 0}]
    },
    "streamSettings": {
      "network": "ws",
      "wsSettings": {"path": "/ray"}
    }
  }],
  "outbounds": [{"protocol": "freedom"}]
}

Nginx 前置:

nginx
location /ray {
    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;
}

方案 2: VMess + mKCP + header 伪装

适用场景: UDP 不受 QoS 限制,高丢包环境

json
{
  "streamSettings": {
    "network": "mkcp",
    "kcpSettings": {
      "mtu": 1350,
      "tti": 20,
      "uplinkCapacity": 5,
      "downlinkCapacity": 20,
      "congestion": true,
      "readBufferSize": 2,
      "writeBufferSize": 2,
      "header": {
        "type": "wechat-video"  // 伪装成微信视频通话
      }
    }
  }
}

客户端使用

v2rayN (Windows)

  1. 下载 v2rayN 和 v2ray-core
  2. 解压并运行 v2rayN.exe
  3. 添加服务器(手动或导入链接)
  4. 右键托盘图标选择系统代理模式

v2rayNG (Android)

  1. Google Play 或 GitHub 下载
  2. 点击 "+" 添加配置
  3. 扫描二维码或手动输入
  4. 点击连接

进阶功能

1. 透明代理

将 V2Ray 作为网关,实现全局代理:

json
{
  "inbounds": [{
    "port": 12345,
    "protocol": "dokodemo-door",
    "settings": {
      "network": "tcp,udp",
      "followRedirect": true
    },
    "sniffing": {
      "enabled": true,
      "destOverride": ["http", "tls"]
    }
  }]
}

2. API 接口

用于流量统计和管理:

json
{
  "api": {
    "tag": "api",
    "services": ["HandlerService", "LoggerService", "StatsService"]
  },
  "stats": {},
  "policy": {
    "levels": {
      "0": {
        "statsUserUplink": true,
        "statsUserDownlink": true
      }
    },
    "system": {
      "statsInboundUplink": true,
      "statsInboundDownlink": true,
      "statsOutboundUplink": true,
      "statsOutboundDownlink": true
    }
  }
}

3. 多出站负载均衡

json
{
  "outbounds": [
    {"tag": "proxy1", "protocol": "vmess", "settings": {}},
    {"tag": "proxy2", "protocol": "vmess", "settings": {}},
    {
      "tag": "balancer",
      "protocol": "freedom",
      "settings": {},
      "balancerTag": "lb"
    }
  ],
  "balancers": [{
    "tag": "lb",
    "selector": ["proxy1", "proxy2"]
  }]
}

与 Xray 的迁移

V2Ray 配置可以直接用于 Xray:

bash
# 替换二进制文件
wget https://github.com/XTLS/Xray-core/releases/latest/download/Xray-linux-64.zip
unzip Xray-linux-64.zip
sudo mv v2ray /usr/local/bin/xray

# 配置文件无需修改
sudo systemctl restart v2ray

性能优化

系统层面

bash
# BBR 拥塞控制
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p

V2Ray 配置

json
{
  "policy": {
    "levels": {
      "0": {
        "handshake": 4,
        "connIdle": 300,
        "uplinkOnly": 2,
        "downlinkOnly": 5,
        "bufferSize": 10240
      }
    },
    "system": {
      "statsInboundUplink": false,
      "statsInboundDownlink": false
    }
  }
}

总结

V2Ray 的优势

  • ✅ 功能最完善的代理平台
  • ✅ 强大的路由功能
  • ✅ 稳定性经过验证
  • ✅ 社区资源丰富

V2Ray 的局限

  • ⚠️ 性能不如 Xray
  • ⚠️ 缺少 XTLS/Reality
  • ⚠️ 配置复杂度高

最终建议

  • 现有 V2Ray 用户:可继续使用,稳定可靠
  • 新用户:建议直接使用 Xray
  • 学习目的:V2Ray 是很好的学习材料

相关资源


许可证

V2Ray 采用 MIT 许可证。

基于 MIT 许可发布