跳至主要内容

真正意义上的下一代私人网络代理-V2Ray


前言:

随着破娃酱被迫中止SSR的开发,以及某墙对SSR流量长时间的识别。现在越来越能明显地感受到,SSR远没有以前那么稳定和好用了。
一次偶然的机会,我发现了V2Ray。

V2Ray简介:

V2Ray原生支持 Socks、HTTP、Shadowsocks、VMess 等协议。支持将流量以TLS、TCP、mKCP、WebSocket 等传输方式进行传输。还支持路由功能,可以灵活地直连、转发、屏蔽流量。

V2Ray可以理解为复杂版本的SS,具备所有SS的功能。它的一大特色是自研的Vmess协议可以很好地混淆流量,降低被模式识别的几率,更隐蔽。VMess的通讯流量包括头部的认证信息和本地发送的原始数据。其中认证信息包含用户的UUID和一个随时间变化的哈希值。默认情况下,因为发起链接的时间不同,所以哈希值不同。哈希值不同,认证信息就不同。那么即便是同一个用户发送的同一组数据,它的实际流量也是不同的。这样的话,就很难被批量识别到。

但有一个例外,假如用户在某一秒内发送了大量同样的请求。这时它的哈希值也是一样的,就有可能被模式识别。所以VMess还有一个参数“AlterId”。这个参数能在主用户的基础上生成指定个数的子用户,以子用户的身份发送数据。这样即便相同时间内发送同样的请求,即便哈希值相同,因为用户信息不同,实际的流量也是完全不一样的。配合动态端口使用,理论上不会被模式识别,不会被IPS运营商屏蔽。但所有翻墙都有可能因为使用非常规端口而被IPS运营商限速。

平台支持:

  • Windows Vista 及之后版本(x86 / amd64)
  • Mac OS X 10.7 及之后版本(amd64)
  • Linux 2.6.23 及之后版本(x86 / amd64 / arm / arm64 / mips64 / mips)
  • FreeBSD (x86 / amd64)
  • OpenBSD (x86 / amd64)

硬件要求:

至少32MB 空闲内存

安装准备:

首先我们需要三个工具:
  1. 格式化文本编辑器(推荐:Geany
  2. 终端仿真器(推荐:Xshell
  3. SFTP/FTP传输工具(推荐:Xftp
打开Xshell,新建链接。正确填写IP、SSH端口、用户名(一般默认为root)、密码以连接到VPS。然后点击新建文件传输,会自动打开Xftp(如果安装了的话)。
像Windows资源管理器一样操作它,进入
/etc/v2ray
找到“config.json”,右键下载到默认文件夹(Windows的话一般为桌面)。然后用格式化文本编辑器打开,备用。

服务端安装:

bash <(curl -L -s https://install.direct/go.sh)
注:
  1. 默认以管理员账户运行,如果报错尝试切换到“root”账户并且不使用“sudo”。
  2. 此脚本安装完,会创建一个自动运行脚本。在系统重启后,自动运行V2Ray。目前自动运行脚本只支持带有 Systemd 的系统,以及 Debian / Ubuntu 全系列。
  3. 脚本运行之后可以使用 service v2ray start|stop|status|reload|restart|force-reload 控制 V2Ray 的运行。

服务端配置:

V2Ray服务器端是通过一个json配置文件来控制的,因此我们需要对其进行更改。
首先推荐V2Ray的配置文件生成网站(可能需要代理),它可以很方便的生成我们专属的配置文件。或者你也可以下载预设的配置文件

首先添加端口和服务:
  1. 点击左上角的删除服务,然后点击添加服务。
  2. 找到端口设置,点击添加端口。端口号可以参考常用端口,这里我们填“28000”。
  3. 勾选动态端口,端口范围可以自己改,这里我们填“50001-50100”。
  4. 再次点击添加端口,端口号可以自己改,这里我们填“29000”。
  5. 勾选动态端口,端口范围可以自己改,这里我们填“51001-51100”。
  6. 勾选mKcp协议(具体介绍)。
然后我们要增加用户:
  1. 往上找到用户设置,点击添加用户。
  2. 然后设置AlterID,官方推荐为32。这里我们填32。
注:
  1. 这里可以继续添加用户,推荐你有多少常用设备就添加几个用户。
  2. 用户的UUID必须不同,且需要跟客户端保持一致。
  3. 每一个用户的AlterID都可以不同,但必须和客户端的设置对应。
  4. AlterID越大,消耗的内存越大,但混淆效果越好。
  5. 一台V2Ray服务器的总用户数等于每一个VMess中所有AlterID值的和。
  6. 使用动态端口时,如果你使用上面的网站来生成配置,默认同时随机开放5个端口。如果你的设备较多,确保此变量concurrency的值,略大于你的设备数目。
  7. 不要关闭或刷新配置网站,待会还要用来生成客户端配置文件。
  8. 根据设置“28000”端口是“TCP协议”,“29000”端口是“KCP协议”,按需使用。
覆盖配置:

这样我们服务器端就已经配置好了,点击网页上方服务器配置下的“复制配置”按钮。打开之前从服务器上下载的“config.json”。按“ctrl+A”选中全部,再按“ctrl+V”,然后保存。(默认编码格式为utf-8)

打开Xftp,进入服务器目录“/etc/v2ray”,把刚修改好的配置文件上传并覆盖原始文件。重启VPS主机。

至此服务器端的安装与设置就完成了。

客户端下载与设置:

Windows和Mac:

进入GitHub发布地址,下载对应文件,解压缩。

 Linux:

v2Ray的客户端和服务端文件是一样的,区别在于配置文件不同。因此,Linux的客户端也可以使用服务端的脚本安装。配置文件目录也是一致的。

离线安装:

在本地用官方脚本安装时,经常出现因网络影响导致下载失败。因此这里提供一种离线安装的思路,这是以官方一键安装脚本为基础的。整体思路为:架设内网Web服务器,然后将安装脚本和安装包放置在这台服务器上。通过这种方式实现在网络不理想或没有外网的情况下一键部署v2ray,而无需漫长的等待。
注意:配置文件需要联系下方的“设置配置文件”进行设置。

以Ubuntu 16.04为例:

     1.安装nginx
sudo apt-get update
sudo apt-get install nginx

     2.按“ctrl+alt+t”打开终端,输入
ifconfig
或者直接点击屏幕右上角的链接信息查看linux的内网ip。

     3.打开浏览器输入ip,浏览器显示“Welcome to nginx!”则说明nginx已经正常工作。

     4.进入/var/www,在此处打开终端。输入

sudo chmod 777 html

然后进入html文件夹

     5.下载go.sh(查看源或者打包成zip下载),然后(解压缩)将它复制到html目录。

     6.右键go.sh,在“属性-权限”下勾选“允许它作为一个程序运行”。

     7.进入官方Github下载地址,下载对应的压缩包(不知道是哪个的话,可以把所有包都下下来) 。你也可以下载我备份的v3.0.1的安装包(2017/12/01)。

     8.将下载下来的所有压缩包复制进/var/www/html。

     9.在html目录下按“ctrl+alt+t”或者空白处右键打开终端,运行
sudo chmod 777 go.sh
然后运行
sudo chmod 777 压缩包名称带后缀名
例如:sudo chmod 777 v2ray-linux-64.zip
不清楚哪个的话给所有压缩包都执行一遍。

     10.浏览器输入刚才的ip并加文件名,比如:192.168.179.128/go.sh。如果显示储存文件,说明文件权限对了。

     11.用文本编辑器打开go.sh,“ctrl+f”搜索“192.168.179.128”,把它替换为你本机的内网ip。

     12.如果你是v3.0.1版本的,直接保存。如果你是安装其他版本,继续查找所有的“v3.0.1”,并把它替换为你的版本(比如:v3.1),然后保存并关闭。

     13.接下来在终端中切换到root账户,“su”然后输入密码。如果你没有设定过root密码,可以通过输入“sudo passwd root”,然后输入密码并确认来设定。

     14.切换到root用户后,输入
bash <(curl -L -s http://修改为你的内网ip/go.sh)
(需要安装curl,见注释)。

     15.如果显示“v2ray vx.x.x is installed”,则安装完毕。如下图所示:

安装成功界面


     16.进入/etc/v2ray。在此处打开终端,输入
sudo chmod 777 config.json
然后编辑config.json,用你的用户配置文件覆盖并保存(更改配置需要重启v2ray,见注释)。

     17.Ubuntu桌面版支持直接设置系统代理(只要代理浏览器的话可以参考下方的浏览器设置):
打开“设置”-“网络”-“网络代理”,方法选择手动,在socks主机填写127.0.0.1,端口1080(你在v2ray配置文件中指定的本地端口),点击“应用到整个系统”,输入密码然后确定。

     18.重启(登出)主机,然后打开浏览器。

     19.访问网易,然后访问youtube。全能打开的话,恭喜你。你已经成功离线部署v2ray,并且v2ray能够开机启动。如果你的系统不支持自启动,可以输入“service v2ray start”手动运行。

注:
  1. 如果你安装nginx或curl时下载很慢的话,可以考虑更换源到阿里云,具体可以参考《ubuntu16.04 14.04更换源》
  2. 如果你没有安装过curl,需要执行“sudo apt install curl”,然后安装v2ray。
  3. 下载下来的压缩包不要改名,除非你知道你在干什么。
  4. 每次更改v2ray的配置文件,都要重启v2ray才能生效。命令为“service v2ray restart”。
  5. 离线更新是一样的,只要对应的新包替换掉旧的压缩包,把go.sh中的版本号替换为新的版本号(新包会标注),然后切换到root账户再次运行即可。
  6. 你安装完成后,可以关闭或卸载nginx。在需要更新时再次打开或安装即可。
完全卸载Nginx命令:
sudo apt-get purge nginx nginx-common
sudo rm -rf /var/www

设置配置文件:

  1. 进入刚才的页面,找到右上角的客户端配置。
  2. 服务端地址填写你VPS的IP地址,本地端口填1080。
  3. 选择一个用户和服务端端口。
  4. 勾选是否使用MUX
  5. 点击复制配置,用它覆盖原始的客户端配置文件。
注:

  1. MUX可以在一条 TCP 连接上分发多个 TCP 连接的数据,以提高服务器的并发能力,对同时加载大量图片和观看直播有利。如果报错,或者不需要可以关闭。
  2. 配置文件是按用户和端口区分的,因此每个用户对应一份单独的用户配置文件。
  3. Vmess协议默认使用“AES-128-CFB”加密方式。
  4. 你也可以下载预置文件,修改100.100.100.100为你VPS的IP,然后替换原文件。

浏览器设置:

V2Ray不能单独代理网络,需要在软件中设置代理地址。
以Chrome为例,你需要先在插件商店中安装一个socks代理插件,比如:Proxy SwitchyOmega

安装后进入此插件的设置页面,点击“Proxy”情景模式,代理协议改为“socks5”,服务器为“127.0.0.1”,端口为“1080”。

然后点击小图标,把代理模式切换为刚刚设置的“Proxy”。

至此,客户端已经设置完毕。

运行:

文件夹中“v2ray.exe”为带窗口的控制台应用程序。首次使用时,我们运行它来查看V2Ray是否正常运行。如果显示下图信息,则说明V2Ray正常启动了。

成功运行界面

正常启动后我们打开浏览器,访问Youtube,看看V2Ray是否已经正常工作了。

如果已经正常工作了,那么恭喜你。你可能还需要访问官网,查看用户手册以实现更强大的功能。

如果你依旧无法打开被墙的网站,你需要先检查浏览器的代理设置,然后检查客户端的配置文件,最后检查服务器的配置文件。问题往往出现在细小的方面,比如:有没有使用英文标点,是不是漏了逗号或者括号。也可以搜搜看网上是否有解决方案,实在不行也可以试试重新部署。

后台运行:

运行文件夹中的“wv2ray.exe”即可。


路由设置:

V2Ray也可以实现类似SS的PAC功能,并且一样简单。最简单的方法是修改客户端的配置文件,方法如下:

打开客户端的配置文件,在“routing”中找到:
{
                    "type": "field",
                    "domain": [
],
                    "outboundTag": "direct"
                },
没有的话新建,然后在“domain”中加入你要直连的网站域名。
{
                    "type": "field",
                    "domain": [
                        "ABC.com",
                        "123.net",
                        "456.cn",
                        "789.vip"
],
                    "outboundTag": "direct"
                },
按格式依次添加,最后一行域名不要逗号,其余行都要英文逗号。修改完成后,保存并重启客户端即可。服务端不用动。

注:其他实现方式和更多功能请看官网的用户手册

测试:

测试环境:联通100M宽带。

Youtube视频:

TCP端口(自动1440P):

TCP视频测试

流畅无卡顿,4K会卡。

KCP端口(手动1440P):

KCP视频测试

流畅无卡顿,4K会卡。

图片(KCP):

图片加载测试

注:上面是gif格式,文件较大可能加载会慢。

其他:

  1. 一般情况下,有TCP和KCP两个协议可供选择。TCP协议可以最大程度的跑满带宽,而KCP协议在牺牲10~20%带宽的基础上加快30~40%的速度,从而降低延迟。
  2. V2Ray支持伪装站点,也支持使用SSL证书加密,具体参考官网用户手册
  3. V2Ray使用KCP协议的情况下,支持游戏代理,无需额外操作。但需要使用Proxifier将游戏流量转发到本地端口,然后V2ray才能接手。根据测试,P2P模式下作为主机,队友反应“laggy”;Trove连接服务器,会有明显卡顿产生。好消息是都没有丢包。
  4. V2ray通过更改服务器配置文件,可以调节流量接发速度。通过小幅度参数调节可以跑满带宽。具体操作官方有提及,默认值为8,基本跑满100M带宽。
  5. V2Ray应该是支持BBR的,但我还未测试。
  6. V2Ray应该是支持TcpSpeed加速的,但我还未测试。
  7. V2Ray搭配树莓派可能可以获得比SS好得多的无缝翻墙体验,但我还没测试。
  8. 新版老毛子固件支持v2ray部署了,需要连接U盘储存相关文件,具体我还没测试。
  9. V2Ray安卓版有3个主要的App,我稍微试了下,配置文件有所不同,直接转换并没有成功连接。具体,我再找时间测试。

总结:

V2Ray的效果很好,很有SS或SSR横空出世时惊艳的感觉。单独架设V2Ray的情况下,网络速度已经能比肩使用TcpSpeed后的效果了。虽然还是有些差距,但真的是很惊艳的感觉。总之,V2Ray确实值得去尝试。






评论

此博客中的热门博文

一个比较完善的GBA网页模拟器           今天想起先前在Xbox上有一个网站,通过读取用户Onedrive上存储的游戏文件来实现网页运行游戏。然后就想着PC上应该也有类似的网站,然后就找到了这个网站: googulator ,源代码见作者的 Github 。           网站需要登录Google账户,并授权访问你的GoogleDrive。因为你需要把自己的Rom文件存入云盘,并在你保存时把游戏的存档文件保存于云盘。如果你是第一次使用GoogleDrive,网站可能会提示你需要读取或新建若干文件。如果你原先没有,那直接点击新建就可以了。           完成后点击主页的 Library Tab ,进入你的游戏库。这时你的库里是空的,你可以从公开库里添加。但一般我们会玩自己收藏的Rom,所以我们选择从GoogleDrive中导入。           如果你云盘中已经有Rom了,你可以直接把它添加到库。如果没有的话,我们就要选择从本地上传。           当你成功导入后,你就能在库里看到游戏了。点击右边的笔可以对其重命名,不过你保存的游戏存档跟这里的Rom名称是一致的。如果你要在保存游戏后更改Rom名称,记得把GoogleDrive里的存档名称一起改了。           选中游戏后,点击Play Game就能玩了。另外值得注意的就是设置选项。在设置选项里,你可以映射游戏的按键。同时支持键盘,手柄和摇杆。最大玩家数量支持为4人。           模拟器支持全屏游玩、截屏、帧数显示、金手指,支持包括但不限于gba、gbc格式Rom。对于修改过的Rom以及自制Rom的支持性也较好,完全值得一试。
如何在初版宝可梦金/银中不作弊获得所有御三家           首先,第一次见博士前,在研究所门口存档。           完成对话,选择第一个初始宝可梦。然后博士要你去取精灵蛋,取得后回到研究所完成对话。           出门前,助手会给你5个精灵球。然后你去野外随便抓两只宝可梦。这时要注意精灵球的数量,在用光精灵球前抓住两只宝可梦。           抓到后去精灵中心,把你之前选择的初始宝可梦和一只你刚刚抓的宝可梦存入电脑。           然后选择“用邮箱-邮箱2-转换”,按A进行整理。           确定后会显示存档,这时强退或者关机。           开机读取之前的存档,这时你应该在研究所门口,还没有获得御三家。           进去完成对话选择第二只宝可梦,然后去精灵中心。           到达精灵中心后,打开电脑把之前存进去的新抓的宝可梦拿出来,然后把第二个御三家存进去。           同样,完成后整理盒子。显示存档时,强退。           再次打开游戏,取得最后一个御三家。完成对话后去精灵中心。           此时电脑里应该有另外两个御三家,取出来,存档。           至此,你就获得了所有初始御三家。           需要注意的是,除了进研究所前存档了一次,直到你获得所有御三家都不要再存档。           如果你在电脑里没发现存进去的宝可梦,那一定是某个过程出错了。按步骤走都能成功,包括原版和汉化版的Rom。 参考链接: YouTube