真正意义上的下一代私人网络代理-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 空闲内存
安装准备:
首先我们需要三个工具:
打开Xshell,新建链接。正确填写IP、SSH端口、用户名(一般默认为root)、密码以连接到VPS。然后点击新建文件传输,会自动打开Xftp(如果安装了的话)。
像Windows资源管理器一样操作它,进入
/etc/v2ray
找到“config.json”,右键下载到默认文件夹(Windows的话一般为桌面)。然后用格式化文本编辑器打开,备用。
服务端安装:
bash <(curl -L -s https://install.direct/go.sh)
注:
- 默认以管理员账户运行,如果报错尝试切换到“root”账户并且不使用“sudo”。
- 此脚本安装完,会创建一个自动运行脚本。在系统重启后,自动运行V2Ray。目前自动运行脚本只支持带有 Systemd 的系统,以及 Debian / Ubuntu 全系列。
- 脚本运行之后可以使用 service v2ray start|stop|status|reload|restart|force-reload 控制 V2Ray 的运行。
服务端配置:
V2Ray服务器端是通过一个json配置文件来控制的,因此我们需要对其进行更改。
首先添加端口和服务:
然后我们要增加用户:
- 往上找到用户设置,点击添加用户。
- 然后设置AlterID,官方推荐为32。这里我们填32。
注:
- 这里可以继续添加用户,推荐你有多少常用设备就添加几个用户。
- 用户的UUID必须不同,且需要跟客户端保持一致。
- 每一个用户的AlterID都可以不同,但必须和客户端的设置对应。
- AlterID越大,消耗的内存越大,但混淆效果越好。
- 一台V2Ray服务器的总用户数等于每一个VMess中所有AlterID值的和。
- 使用动态端口时,如果你使用上面的网站来生成配置,默认同时随机开放5个端口。如果你的设备较多,确保此变量concurrency的值,略大于你的设备数目。
- 不要关闭或刷新配置网站,待会还要用来生成客户端配置文件。
- 根据设置“28000”端口是“TCP协议”,“29000”端口是“KCP协议”,按需使用。
覆盖配置:
这样我们服务器端就已经配置好了,点击网页上方服务器配置下的“复制配置”按钮。打开之前从服务器上下载的“config.json”。按“ctrl+A”选中全部,再按“ctrl+V”,然后保存。(默认编码格式为utf-8)
打开Xftp,进入服务器目录“/etc/v2ray”,把刚修改好的配置文件上传并覆盖原始文件。重启VPS主机。
至此服务器端的安装与设置就完成了。
客户端下载与设置:
Windows和Mac:
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”手动运行。
注:
- 如果你安装nginx或curl时下载很慢的话,可以考虑更换源到阿里云,具体可以参考《ubuntu16.04 14.04更换源》
- 如果你没有安装过curl,需要执行“sudo apt install curl”,然后安装v2ray。
- 下载下来的压缩包不要改名,除非你知道你在干什么。
- 每次更改v2ray的配置文件,都要重启v2ray才能生效。命令为“service v2ray restart”。
- 离线更新是一样的,只要对应的新包替换掉旧的压缩包,把go.sh中的版本号替换为新的版本号(新包会标注),然后切换到root账户再次运行即可。
- 你安装完成后,可以关闭或卸载nginx。在需要更新时再次打开或安装即可。
sudo apt-get purge nginx nginx-common sudo rm -rf /var/www
设置配置文件:
- 进入刚才的页面,找到右上角的客户端配置。
- 服务端地址填写你VPS的IP地址,本地端口填1080。
- 选择一个用户和服务端端口。
- 勾选是否使用MUX
- 点击复制配置,用它覆盖原始的客户端配置文件。
- MUX可以在一条 TCP 连接上分发多个 TCP 连接的数据,以提高服务器的并发能力,对同时加载大量图片和观看直播有利。如果报错,或者不需要可以关闭。
- 配置文件是按用户和端口区分的,因此每个用户对应一份单独的用户配置文件。
- Vmess协议默认使用“AES-128-CFB”加密方式。
- 你也可以下载预置文件,修改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):
流畅无卡顿,4K会卡。
KCP端口(手动1440P):
流畅无卡顿,4K会卡。
图片(KCP):
注:上面是gif格式,文件较大可能加载会慢。
其他:
- 一般情况下,有TCP和KCP两个协议可供选择。TCP协议可以最大程度的跑满带宽,而KCP协议在牺牲10~20%带宽的基础上加快30~40%的速度,从而降低延迟。
- V2Ray支持伪装站点,也支持使用SSL证书加密,具体参考官网用户手册。
- V2Ray使用KCP协议的情况下,支持游戏代理,无需额外操作。但需要使用Proxifier将游戏流量转发到本地端口,然后V2ray才能接手。根据测试,P2P模式下作为主机,队友反应“laggy”;Trove连接服务器,会有明显卡顿产生。好消息是都没有丢包。
- V2ray通过更改服务器配置文件,可以调节流量接发速度。通过小幅度参数调节可以跑满带宽。具体操作官方有提及,默认值为8,基本跑满100M带宽。
- V2Ray应该是支持BBR的,但我还未测试。
- V2Ray应该是支持TcpSpeed加速的,但我还未测试。
- V2Ray搭配树莓派可能可以获得比SS好得多的无缝翻墙体验,但我还没测试。
- 新版老毛子固件支持v2ray部署了,需要连接U盘储存相关文件,具体我还没测试。
- V2Ray安卓版有3个主要的App,我稍微试了下,配置文件有所不同,直接转换并没有成功连接。具体,我再找时间测试。
总结:
V2Ray的效果很好,很有SS或SSR横空出世时惊艳的感觉。单独架设V2Ray的情况下,网络速度已经能比肩使用TcpSpeed后的效果了。虽然还是有些差距,但真的是很惊艳的感觉。总之,V2Ray确实值得去尝试。
评论
发表评论