搭建备用梯子:V2ray+WebSocket+TLS,保姆级教程
前言
我一直都用现成机场,这样虽然速度有保障也不用担心自己机器IP被封,但是鸡蛋放一个篮子终归没那么保险。故利用vps搭建一个备用梯子,选择的方案是V2ray+WebSocket+TLS。
所需资源
v2ray
V2Ray 是 Project V 下的一个工具。Project V 是一个包含一系列构建特定网络环境工具的项目,而 V2Ray 属于最核心的一个。 官方中介绍Project V 提供了单一的内核和多种界面操作方式。内核(V2Ray)用于实际的网络交互、路由等针对网络数据的处理,而外围的用户界面程序提供了方便直接的操作流程。不过从时间上来说,先有 V2Ray 才有 Project V。 如果还是不理解,那么简单地说,V2Ray 是一个与 Shadowsocks 类似的代理软件,可以用来科学上网学习国外先进科学技术。
V2Ray 用户手册:https://www.v2ray.com
V2Ray用户手册: https://v2ray.cool
V2Ray 项目地址:https://github.com/v2ray/v2ray-core
V2Fly用户手册: https://www.v2fly.org/
V2Fly项目地址: https://github.com/v2fly/fhs-install-v2ray
macos可视化客户端
V2RayU 是基于 V2Ray Core 的一个 MacOS 客户端实现。
因为 V2Ray 只是实现了一整套的核心协议、加密算法、传输控制等等的功能,并没有提供对应的客户端工具。
所以,才会出现有很多款 V2Ray Client 可用的情况,这些 Client 都是基于 V2Ray Core 来进行封装开发的。也就是说核心功能是相同的,只是提供了不同体验的附加功能。
服务端
在安装v2ray前,服务器端已安装好了nginx并配置了ssl。
服务端安装
- 我们直接使用官方脚本进行安装
bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)
- 脚本会自动安装如下内容
installed: /usr/local/bin/v2ray
installed: /usr/local/bin/v2ctl
installed: /usr/local/share/v2ray/geoip.dat
installed: /usr/local/share/v2ray/geosite.dat
installed: /usr/local/etc/v2ray/config.json
installed: /var/log/v2ray/
installed: /var/log/v2ray/access.log
installed: /var/log/v2ray/error.log
installed: /etc/systemd/system/v2ray.service
installed: /etc/systemd/system/v2ray@.service
服务端配置
v2ray配置
- 根据v2ray安装结果的提示,打开配置文件
/usr/local/etc/v2ray/config.json
,进行如下配置
{
"log" : {
"access": "/var/log/v2ray/access.log",
"error": "/var/log/v2ray/error.log",
"loglevel": "info"
},
"inbounds": [{
"port": 8888, #v2Ray访问端口,自定义,需要和Nginx中监听端口一致
"listen":"127.0.0.1",
"protocol": "vmess",
"allocate": {
"strategy": "always"
},
"settings": {
"clients": [{
"id": "UUID", #自定义UUID,可以直接选择与putty中运行v2ray官方一键脚本保持一致
"alterId": 64,
"level": 1,
"security": "aes-cfb-128" #自定义加密方式
}]
},
"streamSettings": {
"network":"ws",
"wsSettings": {
"connectionReuse": false,
"path": "/ws" #自定义路径,但需要和Nginx中location一致
}
}
}],
"outbounds": [{
"protocol": "freedom",
"settings": {}
},
{
"protocol": "blackhole",
"settings": {},
"tag": "blocked"
}],
"routing": {
"rules": [{
"type": "field",
"ip": ["geoip:private"],
"outboundTag": "blocked"
}]
}
}
nginx配置
- 在nginx的server相关配置中添加如下配置信息
location /ws {
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Hosthttp_host;
proxy_set_header X-Real-IP remote_addr;
proxy_set_header X-Forwarded-Forproxy_add_x_forwarded_for;
set is_v2ray 0;
if (http_upgrade = "websocket") {
set is_v2ray 1;
}
if (is_v2ray = 1) {# 仅当请求为 WebSocket 时才反代到 V2Ray
proxy_pass http://127.0.0.1:prot;
}
if (is_v2ray = 0) {# 否则显示正常网页
rewrite ^/(.*) /mask-page last;
}
}
启动测试
启动
- 启动
systemctl start v2ray.service
- 查看状态
systemctl status v2ray.service
- 重启
systemctl restart v2ray.service
测试
至此,服务端的配置告一段落,v2ray服务端启动后可使用curl -i http://127.0.0.1:{port}/{path}
命令对服务器端进行测试,当显示如下信息时说明服务器配置成功
HTTP/1.1 400 Bad Request
content-type: text/html; charset=UTF-8
Sec-Websocket-Version: 13
X-Content-Type-Options: nosniff
Date: Sun, 12 Jan 2020 11:45:14 GMT
Content-Length: 12
Bad Request
客户端
v2ray客户端选择
v2ray客户端安装
- 使用brew进行安装
brew cask install v2rayu
- github官方库下载安装包
https://github.com/yanue/V2rayU/releases/tag/3.0.3
v2rayu配置
自由翱翔
点击状态栏v2rayu图标,选择 Turn v2ray-core On 如下图,此时我们可以通过v2rayu正常上网了,打开浏览器输入 googl.com 测试一下是否可以正常打开。
v2rayu日志查看
使用v2rayu的过程中如遇意外,可点击状态栏v2rayu图标,选择 查看v2ray日志:
v2rayu代理模式
一般我们选择Pac模式,pac即 proxy automatically control 的缩写。能够根据配置文件自动分流哪些地址需要进行代理,哪些地址不需要进行代理。pac配置文件可通过pac图标中pac配置进行设置。