v2ray

A platform for building proxies to bypass network restrictions.


简介

V2Ray 是 Project V 下的一个工具。Project V 是一个包含一系列构建特定网络环境工具的项目,而 V2Ray 属于最核心的一个。 官方中介绍Project V 提供了单一的内核和多种界面操作方式。内核(V2Ray)用于实际的网络交互、路由等针对网络数据的处理,而外围的用户界面程序提供了方便直接的操作流程。不过从时间上来说,先有 V2Ray 才有 Project V。 如果还是不理解,那么简单地说,V2Ray 是一个与 Shadowsocks 类似的代理软件,可以用来科学上网(翻墙)学习国外先进科学技术。

V2Ray 用户手册: https://www.v2fly.org/

V2Ray 项目地址: https://github.com/v2fly/v2ray-core

未迁移前的地址: https://github.com/v2ray/v2ray-core

V2Ray 配置指南: https://github.com/ToutyRater/v2ray-guide

V2Ray 跟 Shadowsocks 有什么区别

Shadowsocks 是一个纯粹的代理工具,而 V2Ray 定位为一个平台,任何开发者都可以利用 V2Ray 提供的模块开发出新的代理软件。

了解 Shadowsocks 历史的同学都知道,Shadowsocks 是 clowwindy 开发的自用的软件,开发的初衷只是为了让自己能够简单高效地科学上网,自己使用了很长一段时间后觉得不错才共享出来的。V2Ray 是 clowwindy 被喝茶之后 V2Ray 项目组为表示抗议开发的,一开始就致力于让大家更好更快的科学上网。

由于出生时的历史背景不同,导致了它们性格特点的差异。

简单来说,Shadowsocks 功能单一,V2Ray 功能强大。听起来似乎有点贬低 Shadowsocks 呢?当然不!换一个角度来看,Shadowsocks 简单好上手,V2Ray 复杂配置多。

由于许多 V2Ray 用户都有使用过 Shadowsocks 的经验,基本上可以按照使用 Shadowsocks 那样使用。但是 V2Ray 还是和 Shadowsocks 不太一样,所以我大概说一下使用上的差异。请注意,差异不代表好坏或优劣,如果一个事物必须拥有其他同类所拥有的东西,那么它也就没有了存在的意义。

  • 客户端:V2Ray 本身只是一个内核,V2Ray 上的图形客户端大多是调用 V2Ray 内核套一个图形界面的外壳,类似于 Linux 内核和 Linux 操作系统的关系;而 Shadowsocks 的客户端都是自己重新实现了一遍 Shadowsocks 协议。本文的内容短期内不涉及图形客户端的使用。
  • 分流:也许大家第一反应是 PAC,实际上无论是 Shadowsocks (特指 Shadowsocks-libev) 还是 V2Ray 本身不支持 PAC,都是客户端加进来的;Shadowsocks 的分流使用 ACL,V2Ray 使用自己实现的路由功能,孰优孰劣只是仁者智者的问题。
  • 分享链接/二维码:V2Ray 不像 Shadowsocks 那样有统一规定的 URL 格式,所以各个 V2Ray 图形客户端的分享链接/二维码不一定通用。
  • 加密方式:V2Ray (特指 VMess 协议) 不像 Shadowsocks 那样看重对加密方式的选择,并且 VMess 的加密方式是由客户端指定的,服务器自适应。
  • 时间:使用 V2Ray 要保证时间准确,因为这是为了安全设计的。
  • 密码:V2Ray(VMesss) 只有 id(使用 UUID 的格式),作用类似于 Shadowsocks 的密码,但随机性远好于 Shadowsocks 的密码,只是不太方便记忆(安全和方便的矛盾)。
  • UDP 转发:VMess 是基于 TCP 的协议,对于 UDP 包 V2Ray 会转成 TCP 再传输的,即 UDP over TCP。要 UDP 转发功能在客户端的 socks 协议中开启 UDP 即可。
  • 路由器翻墙:实际上它们并没有什么区别,不要以为没有插件就不能在路由器上用,看事物请看本质。

Shadowsocks: https://github.com/shadowsocks/shadowsocks/tree/master

准备工作

时间是否准确

V2Ray 对于时间有比较严格的要求,要求服务器和客户端时间差绝对值不能超过90 秒,所以一定要保证时间足够准确。还好 V2Ray 并不要求时区一致。比如说自个儿电脑上的时间是北京时间(东 8 区)2017-07-31 12:08:31,但是 VPS 上的时区是东 9 区,所以 VPS 上的时间应该是 2017-07-31 13:07:01 到 2017-07-31 13:10:01 之间才能正常使用 V2Ray。当然,也可以自行改成自己想要的时区。

Linux 版本的问题

感谢 Golang 编程语言提供的特性和原作者的精心设计,V2Ray 可以不依赖其它软件(库)而运行,并且提供了跨平台支持(如: Windows, Linux, MacOS, BSD 等)。但是由于新手在学习使用过程中可能会遇到各种问题,却缺乏相应的解决问题的能力,因此在 VPS 上建议使用 Debian 9.x, Debian 10 以上或 Ubuntu 18.04 及以上的 Linux 发行版。请不要迷信某个(些)“最稳定”的 Linux 发行版。

安装

与 Shadowsocks 不同,从软件上 V2Ray 不区分服务器版和客户端版,也就是说在服务器和客户端运行的 V2Ray 是同一个软件,区别只是配置文件的不同。

在 Linux 操作系统, V2Ray 的安装有脚本安装、手动安装、编译安装 3 种方式,选择其中一种即可,本文仅提供使用使用脚本安装的方法,并仅推荐使用脚本安装,该脚本由 V2Ray 官方提供。该脚本仅可以在 Debian 系列或者支持 Systemd 的 Linux 操作系统使用。

$ curl -O https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh
$ bash install-release.sh
# 设置开机自自动
$ systemctl enable v2ray
# 启动V2Ray 请提前配置好v2ray.config
$ systemctl start v2ray
# 查看V2Ray运行情况
$ systemctl status v2ray

配置

关于 V2ray 配置,请参考 v2ray-examples 内的示例。

因为没有域名和网站证书,我只能使用VMess-HTTP,这种简单的伪装我用了近两年也没有被封过,大概是因为个人使用流量少,也没有干坏事。

升级更新

在 VPS,重新执行一遍安装脚本就可以更新了,在更新过程中会自动重启 V2Ray,配置文件保持不变。

$ bash install-release.sh

V2Ray 的更新策略是快速迭代,每周更新(无意外的情况下)。版本号的格式是 vX.Y.Z,如 v2.44.0。v 是固定的字母 v,version 的首字母;X、Y、Z 都是数字,X 是大版本号,每年更新一个大版本(现在是 v4.Y.Z,V2Ray 已经走到了第四个年头),Y 是小版本,每周五更新一个小版本。Z 是区分正式版和测试版,Z 是 0 代表着是正式版,不是 0 说明是测试版。例如,v4.7.0 是正式版,v4.7.1 是测试版,建议只使用正式版,不手动指定的情况下 V2Ray 的安装脚本也只会安装最新的正式版。

移除

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

第三方图形客户端

  1. V2rayN : V2RayN 是一个基于 V2Ray 内核的 Windows 客户端。
  2. Qv2ray : 跨平台 V2Ray 客户端,支持 Linux、Windows、macOS,可通过插件系统支持 SSR / Trojan / Trojan-Go / NaiveProxy 等协议。
  3. SagerNet : SagerNet 是一个基于 V2Ray 的 Android 通用代理应用。
  4. v2rayNG : 一款安卓V2Ray客户端,支持 Xray core 和 v2fly core。

路由规则

V2Ray 内建了一个路由模块,可以将入站数据按需求由不同的出站连接发出,以达到按需代理的目的。这一功能的常见用法是分流国内外流量。V2Ray 可以通过内部机制判断不同国家或地区的流量,然后将它们发送到不同的出站代理。

在下载 V2Ray 的时候,下载的压缩包有一个 geosite.dat。这个文件是在路由功能里用到的,文件内置了许多常见的网站域名。使用方式:geosite:listname,如 geosite:google 表示对 domain-list-community 项目 data 目录里的 google 文件内包含的域名,进行路由筛选或 DNS 筛选。

  • Block (阻止): 拦截向外发送的连接请求,禁止连网。
  • Direct (直连): 直接访问外部网络,不走代理。
  • Proxy (代理): 允许通过代理连接上网。

Proxy(代理)的Domain规则:

github.com,
githubassets.com,
githubusercontent.com,
# 下一行谷歌产品图标,
googleusercontent.com

Direct(直连)的Domain规则:

postman.com,
domain:aws.amazon.com,
domain:amazonaws.com,
adblockplus.org,
safesugar.net,
#【以下全部是geo预定义域名列表】,
# 下一行是所有私有域名,
geosite:private,
# 下一行包含常见大陆站点域名和CNNIC管理的大陆域名,即geolocation-cn和tld-cn的合集,
geosite:cn,
# 下一行包含所有Adobe旗下域名,
geosite:adobe,
# 下一行包含所有Adobe正版激活域名,
geosite:adobe-activation,
# 下一行包含所有微软旗下域名,
geosite:microsoft,
# 下一行包含微软msn相关域名少数与上一行微软列表重复,
geosite:msn,
# 下一行包含所有苹果旗下域名,
geosite:apple,
# 下一行包含可直连访问谷歌网址,需要替换为加强版GEO,否则删除此行,
geosite:google-cn,
# 下一行包含可直连访问苹果网址,需要替换为加强版GEO,否则删除此行,
geosite:apple-cn

Direct(直连)的IP规则:

# 中国大陆 IP 地址
geoip:cn,
# 所有私有地址,如 127.0.0.1
geoip:private

Block(阻止)的Domain规则:

# 包含了常见的广告域名,以及广告提供商的域名。
geosite:category-ads-all

详细规则参考 Routing 路由

同事推荐的VPN,本人并没有用过,只此记录,不发表意见。

  1. vpnclient
  2. 快连vpn