v2ray安装方法备份

前言

高级配置没有粘贴,备份内容足够自己重新搭建该软件。

1.2.2. V2Ray 跟 Shadowsocks 有什么区别?

区别还是有的,Shadowsocks 只是一个简单的代理工具,而 V2Ray 作者将 V2Ray 定位为一个平台,任何开发者都可以利用 V2Ray 提供的模块开发出新的代理软件。
了解 Shadowsocks 历史的同学都知道,Shadowsocks 是 clowwindy 开发的自用的软件,开发的初衷只是为了让自己能够简单高效地科学上网,自己使用了很长一段时间后觉得不错才共享出来的。V2Ray 是 clowwindy 被喝茶之后 V2Ray 项目组为表示抗议开发的,一开始就致力于让大家更好更快的科学上网。

1. 安装

1.1. 时间校准

对于 V2Ray,它的验证方式包含时间,就算是配置没有任何问题,如果时间不正确,也无法连接 V2Ray 服务器的,服务器会认为你这是不合法的请求。所以系统时间一定要正确,只要保证时间误差在一分钟之内就没问题。
对于 VPS(Linux) 可以执行命令 date -R 查看时间:
$ date -R
Sun, 22 Jan 2017 10:10:36 -0500

1.2. 客户端安装

这里下载 V2Ray 的 Windows 压缩包,如果是 32 位系统,下载 v2ray-windows-32.zip,如果是 64 位系统,下载 v2ray-windows-64.zip。解压之后会有 v2ray.exe 和 config.json 这两个文件,config.json 包含 V2Ray 官方服务器的配置,也就是说你可以不自己搭建服务器而直接使用 V2Ray 提供的服务器科学上网。在不修改 config.json 的情况下,双击运行 v2ray.exe,可以直接科学上网。除以上两个文件外压缩包还有其它文件,文件 readme.md 是这些文件的说明,你可以通过记事本或其它的文本编辑器打开查看。本指南不再详述。
但是现在实际上还不能科学上网,因为 V2Ray 将所有选择权交给用户,它不会自动帮你设置系统代理,因此还需要在浏览器里设置代理。以火狐(Firefox)为例,点菜单 -> 选项 -> 高级 -> 设置 -> 手动代理设置,在 SOCKS Host 填上 127.0.0.1,后面的 Port 填 1080,再勾上使用 SOCKS v5 时代理 DNS (这个勾选项在旧的版本里叫做远程 DNS)。操作图见下:
如果使用的是其它的浏览器,请自行在网上搜一下怎么设置 SOCKS 代理。

1.3. 服务器安装

1.3.1. 脚本安装

在 Linux 操作系统, V2Ray 的安装有脚本安装、手动安装、编译安装 3 种方式,选择其中一种即可,本指南仅提供使用使用脚本安装的方法,并仅推荐使用脚本安装,该脚本由 V2Ray 官方提供。该脚本可以在 Debian 系列或者支持 Systemd 的 Linux 操作系统使用。
除非你是大佬,或者能够自行处理类似 command not found 的问题,否则请你使用 Debian 8.x 以上或者 Ubuntu 16.04 以上的 Linux 系统。 本指南默认使用 Debian 8.7 系统作为示范。
首先下载脚本:
$ wget https://toutyrater.github.io/install-release.sh
--2017-08-04 23:23:10--  https://toutyrater.github.io/install-release.sh
Resolving toutyrater.github.io (toutyrater.github.io)... 151.101.129.147, 151.101.1.147, 151.101.193.147, ...
Connecting to toutyrater.github.io (toutyrater.github.io)|151.101.129.147|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 9960 (9.7K) [application/x-sh]
Saving to: ‘install-release.sh’

install-release.sh                  100%[====================================================================>]   9.73K  --.-KB/s   in 0s     

2017-08-04 23:23:10 (53.5 MB/s) - ‘install-release.sh’ saved [9960/9960]
然后执行脚本安装 V2Ray:
$ sudo  bash install-release.sh 
Installing curl
Updating software repo
Installing curl
Selecting previously unselected package curl.
(Reading database ... 36028 files and directories currently installed.)
Preparing to unpack .../curl_7.38.0-4+deb8u5_amd64.deb ...
Unpacking curl (7.38.0-4+deb8u5) ...
Processing triggers for man-db (2.7.0.2-5) ...
Setting up curl (7.38.0-4+deb8u5) ...
Installing V2Ray v2.33 on x86_64
Donwloading V2Ray.
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   608    0   608    0     0   2403      0 --:--:-- --:--:-- --:--:--  2412
100 2583k  100 2583k    0     0  1229k      0  0:00:02  0:00:02 --:--:-- 1847k
Installing unzip
Installing unzip
Selecting previously unselected package unzip.
(Reading database ... 36035 files and directories currently installed.)
Preparing to unpack .../unzip_6.0-16+deb8u3_amd64.deb ...
Unpacking unzip (6.0-16+deb8u3) ...
Processing triggers for mime-support (3.58) ...
Processing triggers for man-db (2.7.0.2-5) ...
Setting up unzip (6.0-16+deb8u3) ...
Extracting V2Ray package to /tmp/v2ray.
Archive:  /tmp/v2ray/v2ray.zip
  inflating: /tmp/v2ray/v2ray-v2.33-linux-64/readme.md  
  inflating: /tmp/v2ray/v2ray-v2.33-linux-64/systemd/v2ray.service  
  inflating: /tmp/v2ray/v2ray-v2.33-linux-64/systemv/v2ray  
  inflating: /tmp/v2ray/v2ray-v2.33-linux-64/v2ray  
  inflating: /tmp/v2ray/v2ray-v2.33-linux-64/vpoint_socks_vmess.json  
  inflating: /tmp/v2ray/v2ray-v2.33-linux-64/vpoint_vmess_freedom.json  
PORT:40827
UUID:505f001d-4aa8-4519-9c54-6b65749ee3fb
Created symlink from /etc/systemd/system/multi-user.target.wants/v2ray.service to /lib/systemd/system/v2ray.service.
V2Ray v2.33 is installed.
看到类似于这样的提示就算安装成功了。如果安装不成功脚本会有红色的提示语句,这个时候你应当按照提示除错,除错后再重新执行一遍脚本安装 V2Ray。对于错误提示如果看不懂,使用翻译软件翻译一下就好。
在安装完 V2Ray 之后,修改配置文件重启 V2Ray 即可,配置文件路径为 /etc/v2ray/config.json。
使用以下命令启动 V2Ray:
$ sudo systemctl start v2ray
停止运行 V2Ray:
$ sudo  systemctl stop v2ray
重启 V2Ray:
$ sudo systemctl restart v2ray
在首次安装完成之后, V2Ray 不会自动启动,需要手动运行上述启动命令。而在已经运行 V2Ray 的 VPS 上再次执行安装脚本,安装脚本会自动停止 V2Ray 进程,升级 V2Ray 程序,然后自动运行 V2Ray。在升级过程中,配置文件不会被修改。
对于以上脚本,还有更多用法,在此不多说了,可以执行 bash install-release.sh -h 看帮助。

1. VMess

VMess 协议是由 V2Ray 原创并使用于 V2Ray 的加密传输协议,如同 Shadowsocks 一样为了对抗墙的深度包检测而研发的。在 V2Ray 上客户端与服务器的通信主要是通过 VMess 协议通信。
本小节给出了 VMess 的配置文件,其实也就是服务器和客户端的基本配置文件,这是最简单的配置了。
V2Ray 使用 inbound 和 outbound 的概念,这个概念非常清晰地体现了数据包的流动方向,同时也使得 V2Ray 功能强大复杂的同时而不混乱,结构清晰明了。简单来说,V2Ray 就是一个盒子,这个盒子有出口和入口,我们将数据包通过某个入口放进这个盒子里,然后这个盒子以某各机制(这个机制其实就是路由,后面会讲到)决定这个数据包走哪个出口并将数据包发出去。建议选看一下 V2Ray 的工作原理

1.1. 配置前的准备

实际上,根本不用准备什么,只要有一个文本编辑器(text editor)就可以修改配置了。但我还是打算啰嗦一些,因为我发现新手容易犯语法(格式)不正确的错误,这个很正常新手上路对路况总会不是很熟悉;另外一个就是不会使用工具,用了很多年电脑文本编辑还是 Windows 自带的记事本(在我身边有不少敲代码的,平常看某个代码文件很少打开 IDE 或者使用好点的文本编辑器,而是直接用记事本看),用水果刀切菜可以吗?当然可以,建议你亲自体验一下。如果你会用工具,会非常高效的而且装有一些插件可以语法检查,将代码格式化。
文本编辑器有许多,比如说 Sublime Text、VS code、atom、notepad++,上面这些都是跨平台的,具体如何使用请自行 google 吧。这些软件都可以做到高亮显示、折叠、格式化等,建议使用,如果你不想安装软件,网上也有一些在线的 json 编辑器,还自动检查语法。如果你非要用 Windows 的记事本我也无话可说。
下面是一张 Windows 自带的记事本对比 Sublime Text 查看同一个 json 文件的图片,孰优孰劣大家心中自有判断。 
又比如格式化功能: 
对于 Linux 有一个软件叫 jq,可以执行这样的指令检查配置文件的语法是否正确:
$ jq . config.json
这里的 config.json 是当前目录下的 config.json。特别注意命令中的点 . 不能省去。
当我把 "23ad6b10-8d1a-40f7-8ad0-e3e35cd38297" 后的逗号 , 删去时:
(从 v2.11 起新增了一个注释功能,配置文件允许 // 和 /**/ 注释。但是 JSON 的标准格式的没有注释的,也就是说如果你给配置文件加了注释,再使用上文我说的格式化功能会报错说你的 JSON 语法(格式)不对。)

1.2. 配置

以下给出了 VMess 的配置文件,包含客户端和服务器端,将你的配置替换成下面给出的配置即可正常使用(注意服务器地址须按你的实际情况修改)。修改完配置之后要重启 V2Ray 才能使用新配置生效。
另外再强调一遍,V2Ray 的认证基于时间,请确保服务器和客户端的时间准确,误差一分钟内即可

1.2.1. 客户端配置

{
  "inbound": {
    "port": 1080, // 监听端口
    "protocol": "socks", // 入口协议为 SOCKS 5
    "settings": {
      "auth": "noauth"  //socks的认证设置,noauth 代表不认证,由于 socks 通常在客户端使用,所以这里不认证
    }
  },
  "outbound": {
    "protocol": "vmess", // 出口协议
    "settings": {
      "vnext": [
        {
          "address": "serveraddr.com", // 服务器地址,请修改为你自己的服务器 ip 或域名
          "port": 16823,  // 服务器端口
          "users": [
            {
              "id": "b831381d-6324-4d53-ad4f-8cda48b30811",  // 用户 ID,必须与服务器端配置相同
              "alterId": 64 // 此处的值也应当与服务器相同
            }
          ]
        }
      ]
    }
  }
}
在配置当中,有一个 id(在这里的例子是 b831381d-6324-4d53-ad4f-8cda48b30811),作用类似于 Shadowsocks 的密码(password), VMess 的 id 使用的是 UUID。关于 id 或者 UUID 没必要了解很多,在这里只要清楚以下几点就足够了:
  • 相对应的 VMess 传入传出的 id 必须相同(如果你不理解这句话,那么可以简单理解成服务器与客户端的 id 必须相同)
  • 由于 id 使用的是 UUID,我们可以使用任何 UUID 生成工具生成 UUID 作为这里的 id。比如 UUID Generator 这个网站,只要一打开或者刷新这个网页就可以得到一个 UUID,如下图

1.2.2. 服务器配置

{
  "inbound": {
    "port": 16823, // 服务器监听端口
    "protocol": "vmess",    // 主传入协议
    "settings": {
      "clients": [
        {
          "id": "b831381d-6324-4d53-ad4f-8cda48b30811",  // 用户 ID,客户端与服务器必须相同
          "alterId": 64
        }
      ]
    }
  },
  "outbound": {
    "protocol": "freedom",  // 主传出协议
    "settings": {}
  }
}

1.3. 原理简析

根据上文给出的配置,在这里简单的介绍一下 V2Ray 的工作原理。

1.3.1. 客户端

请看 inbound,port 为 1080,V2Ray 监听了一个端口 1080,协议是 socks。之前我们已经把浏览器的代理设置好了(SOCKS Host: 127.0.0.1,Port: 1080),假如访问了 google.com,浏览器就会发出一个数据包打包成 socks 协议发送到本机(127.0.0.1指的本机,localhost)的 1080 端口,这个时候数据包就会被 V2Ray 接收到。
再看 outbound,protocol 是 vmess,说明 V2Ray 接收到数据包之后要将数据包打包成 VMess 协议并且使用预设的 id 加密(这个例子 id 是 b831381d-6324-4d53-ad4f-8cda48b30811),然后发往服务器地址为 serveraddr.com 的 16823 端口。服务器地址 address 可以是域名也可以是 IP,只要正确就可以了。

1.3.2. 服务器

接着看服务器,服务器配置的 id 是 b831381d-6324-4d53-ad4f-8cda48b30811,所以 V2Ray 服务器接收到客户端发来的数据包时就会尝试用 b831381d-6324-4d53-ad4f-8cda48b30811 解密,如果解密成功再看一下时间对不对,对的话就把数据包发到 outbound 去,outbound.protocol 是 freedom(freedom 的中文意思是自由,在这里姑且将它理解成直连吧),数据包就直接发到 google.com 了。
配置中的 alterId 也是作为认证的,具体请看 V2Ray 用户手册。只要确保服务器和客户端配置文件的 alterId 相同就行了,但要注意 alterId 的值越大会使用 V2Ray 占用更多的内存。根据我的经验,对于一般用户来说,alterId 的值设为 50 到 100 之间应该是比较合适的。
简单来说就是:浏览器打包 ---> V2Ray 客户端接收 -> V2Ray 客户端发出 ---> V2Ray 服务器接收 -> V2Ray 服务器发出 ---> 目标网站

1.4. 注意

为了让浅显地介绍 V2Ray 的工作方式,本节中关于原理简析的描述有一些地方是错误的。但我知识水平又不够,还不知道该怎么改,暂且将错就错。正确的工作原理在用户手册的 Effective V2Ray 有详细的说明。

1.5. 排错指引

按照前文的指导操作,通常都能成功部署 V2Ray。然而总会有部分读者可能是看漏某些地方,导致虽然安装好了却无法连接。如果出现了这样的问题,可以尝试按下面的步骤一一进行排错。

1.5.1. 打开客户端闪退

可能原因:客户端的配置文件上不正确。
修正方法:请仔细检查配置文件并修改正确。

1.5.2. 客户端提示 Socks: unknown Socks version:

可能原因:客户端配置的 inboud 设置成了 socks 而浏览器的代理协议设置为 http。
修正方法:修改配置文件使客户端的 inboud 的 protocol 和浏览器代理设置的协议保持一致。

1.5.3. 客户端提示 Proxy|HTTP: failed to read http request > malformed HTTP request "\x05\x01\x00"

可能原因:客户端配置的 inboud 设置成了 https 而浏览器的代理协议设置为 socks4 或者 socks5。
修正方法:修改配置文件使客户端的 inboud 的 protocol 和浏览器代理设置的协议保持一致。

1.5.4. 服务器执行 systemctl status v2ray 输出提示 Main: failed to read config file...

可能原因:服务器的配置文件不正确。
修正方法:请仔细检查配置文件并修改正确。

1.5.5. 执行 cat /var/log/v2ray/error.log 或者 systemctl status v2ray 出现 rejected Proxy|VMess|Encoding: invalid user

可能原因:服务器与客户端的系统时间或者 id 不一致或者 alterId 不一致。
修正方法:请校准系统时间或将 id 以及 alterId 修改一致

1.5.6. 以上几点都排除之后,请仔细检查:

1). 浏览器的代理设置中的端口号与客户端的inbound 的port 是否一致
2). 客户端中的outbound 设置的address与vps 的ip是否一致
3). 客户端中的outbound 设置的address与服务器的outbound 的 port 是否一致
4). VPS 是否开启了防火墙将连接拦截了
5). 客户端是否安装在如学校、公司之类的场所,如果是,确认这些单位是否有防火墙拦截了连接
对于 1) 到 3),可以通过检查配置确定是否有问题。对于 4) 和 5),你需要与 VPS 提供商和单位网管联系沟通。

评论

此博客中的热门博文

网络基础_报文三层转发

ShadowsocksR服务端伪装成 正常网站流量

v2ray安装【实现tls+web+ws】