基于v2ray的websocket+tls+web实现安全网络代理

前言

原来使用的代理最近一直无法使用了,原来使用的是酸酸乳,可能是因为使用的人太多了, 目标太明显,所以被和谐了。好吧,既然目标太明显的不行,那就换个小众点的吧。之前尝试使用goflyway,但是没有配置成功,所以索性就换了V2Ray的websocket+tls+web方式。好了,废话不多说,下面开始正题吧。

准备

首先你得准备一台能够作为代理的服务器,至于服务器存在的物理位置,取决于你的用途吧,如果能够使用域名的话就更好了。

服务器端安装配置

注意,我的命令都是在root权限下执行的,如果想更安全的配置服务器,可以选择使用非root账户配合sudo进行安装配置操作。

1、校验时间

对于 V2Ray,它的验证方式包含时间,就算是配置没有任何问题,如果时间不正确,也无法连接 V2Ray 服务器的,服务器会认为你这是不合法的请求。所以系统时间一定要正确,只要保证时间误差在一分钟之内就没问题。

对于 VPS(Linux) 可以执行命令 date -R 查看时间:

输出结果中的 -0400 代表的是时区为西4区,如果转换成东 8 区时间则为 2018-07-2 09:57:05

如果时间不准确,可以使用 date --set 修改时间,或者使用ntpdate与ntp服务器同步。

2、V2Ray服务器安装

V2Ray可以在以下平台中运行:

可以看到支持的平台非常丰富,Windows与Mac OS的运行非常简单,只需要解压目录,直接运行v2ray或v2ray.exe就可以了。

我这里使用的是Debian 9,并使用脚本安装:

当 yum 或 apt-get 可用的情况下,此脚本会自动安装 unzip 和 daemon。这两个组件是安装 V2Ray 的必要组件。如果你使用的系统不支持 yum 或 apt-get,请自行安装 unzip 和 daemon。

此脚本会配置自动运行脚本。自动运行脚本会在系统重启之后,自动运行 V2Ray。目前自动运行脚本只支持带有 Systemd 的系统,以及 Debian / Ubuntu 全系列。

3、UUID生成

VMess 的 id 使用的是 UUID 格式,作用类似于passwd,客户端与服务器端的UUID相同才能进行VMess连接。你可以使用UUID生成工具随即生成一个(如后面会说到的V2RayN客户端辅助工具),或者访问 UUID Generator 获得一个,还能够在Linux中使用命令cat /proc/sys/kernel/random/uuid生成。

4、V2Ray配置文件

使用脚本安装完成后,需要完成配置文件的修改,脚本安装后的配置文件存放位置为/etc/v2ray/config.json。具体配置文件如下:

这里需要注意的是,JSON是不支持注释的,所以如果需要复制配置文件,请务必删除//注释,以免造成配置文件错误。还可以使用V2Ray自带的配置检测功能对配置文件进行检测,如下:

这里显示配置没有问题,如果配置存在问题,检测会提示配置文件错误的地方。

5、Caddy安装

在完成V2Ray的安装和配置后,下面就需要实现Web+TLS的功能了。我们可以使用源码或脚本的方式安装Caddy,但是因为Caddy使用的是Go语音编写的,可能需要golang的编译器,存在一些门槛,所以推荐脚本方式安装。运行下面的命令,等待脚本执行完成。

注意:这里Caddy目前对个人使用是免费的,对于商业用途是收费的,我们是个人使用,所以就选择Personal

为什么选择Caddy而不用Nginx或者Apache等等,主要的原因是Caddy的配置简单,并且Caddy可以自动去申请和维护免费的SSL证书,这点要比NG和HTTPD要简单省事的多。(原谅我的懒惰)

6、Caddy配置

我选择使用生产环境的配置,这样比较规范吧。一般情况下会放到 /etc/caddy 里。

除了配置文件,caddy 会自动生成 ssl 证书,需要一个文件夹放置 ssl 证书。

因为 ssl 文件夹里会放置私钥,所以权限设置成 770 禁止其他用户访问。

创建好这些文件和目录了之后,我们需要把 caddy 配置成一个服务,这样就可以开机自动运行,并且管理起来也方便。因为目前大多数发行版都使用 systemd 了,所以这里只讲一下如何配置 systemd,先下载服务配置文件:

caddy.service文件中以下三项配置选项的注释符#删除,如下:

启动Caddy服务。

7、Caddyflie配置

第四行的 tls 指令告诉 caddy 为网站开启 https 并自动申请证书,后面的 email 参数是告知 CA 申请人的邮箱。(caddy 会默认使用 let’s encrypt 申请证书并续约,很方便吧)

这里需要注意一点的是,因为caddy.service中默认的进程运行用户和用户组为www-data,所以日志文件也需要让www-data用户能够有权限读写,当然你也可以选择将日志文件存放在配置文件目录中。

8、启动Caddy和V2Ray

这里配置完成后,就可以启动Caddy了,启动前可能还需要运行ulimit -n 8192对最大文件打开数进行修改,否则在启动Caddy时会报关于最大文件打开数的提示,导致启动失败。

客户端安装配置

客户端的安装配置相对简单,我们这里使用windows的平台来举例说明,首先去github上的v2ray-core项目中下载对应windows的最新的程序包,传送门

下载后直接解压出目录。

《基于v2ray的websocket+tls+web实现安全网络代理》

我们可以在目录中看到一个config.json的配置文件,打开配置文件(建议使用notepad++或ultraedit编译,最好不要使用记事本,避免BOM编码的问题),配置文件如下:

这里配置文件需要注意的是,确保UUID、域名和端口,还有WebSocket所使用的HTTP协议路径与服务器端相匹配。

配置完成后,在解压目录中运行v2ray.exe文件,弹出命令窗口,显示v2ray正在运行。

《基于v2ray的websocket+tls+web实现安全网络代理》

这样就可以配置浏览器中的代理设置,并使用浏览器通过V2Ray代理访问各类Web站点。

《基于v2ray的websocket+tls+web实现安全网络代理》

这里补充一下,还可以使用一些第三方开发的图形化客户端进行代理设置,更方便的对v2ray进行配置。如:V2RayN、V2RayW等等。

这里我们列举V2RayN这款Windows客户端进行说明,在GitHub上下载该客户端。传送门

下载后将文件解压至v2ray-windows程序目录中,双击打开V2RayN.exe文件,如下图所示:

《基于v2ray的websocket+tls+web实现安全网络代理》

添加WMess服务器。

《基于v2ray的websocket+tls+web实现安全网络代理》

配置服务器参数,这里就与配置config.json文件的一样,实际上就是通过图形界面的配置生成一个config.json文件。

《基于v2ray的websocket+tls+web实现安全网络代理》

配完成后,启动代理,测试访问。

《基于v2ray的websocket+tls+web实现安全网络代理》

《基于v2ray的websocket+tls+web实现安全网络代理》

手机客户端介绍

IOS客户端

可以在苹果商店中搜索Kitsunebi及Kitsunebi Lite。

Android客户端

V2RayNG:GitHub(作者一直在维护,推荐使用)

V2Ray Go:GitHub(这个很久没有更新了,不推荐使用)

BifrostV:直接百度下载

BBR加速配置

bbr这个东西真乃神器,所以如果你的代理服务器在国外,强烈建议开启bbr的功能。我的小鸡使用的是debian 9,默认内核是支持bbr加速的,但是没有开启。如果你的系统过于陈旧,需要更新linux内核至4.9以上并编译安装bbr,具体的安装步骤可以去百度,网上有大把的教程。

开启方法

1、修改系统变量

2、保存生效

3、查看内核是否已开启BBR

显示以下即已开启:

4、查看BBR是否启动

显示以下即启动成功:

5、测试BBR效果

可以看到,开启BBR后,在油土鳖上开1080P毫无压力。

《基于v2ray的websocket+tls+web实现安全网络代理》

参考博文

这里同时需要感谢以下的博文作者,这些博文在我搭建和使用目前这套系统中提供了很大的帮助。

V2Ray的作者Victoria Raymond:https://www.v2ray.com

V2Ray 配置指南 :https://toutyrater.github.io

Caddy – 方便够用的 HTTPS server 新手教程:https://lengzzz.com/note/caddy-http-2-web-server-guide-for-beginners

Debian 9快速开启Google BBR的方法,实现高效单边加速:https://www.moerats.com/archives/297/

 

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注