关注Java领域相关技术 记录有趣的事情

搭建备用梯子:V2ray+WebSocket+TLS,保姆级教程

US-B.Ralph
US-B.Ralph
2020-01-18

前言

我一直都用现成机场,这样虽然速度有保障也不用担心自己机器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支持多种协议,安装并打开后点击状态栏v图标显示如下:
  • 选择服务器设置,并按照下图进行配置
    v2rayu配置vmess
  • 点击左侧确定后,最下边会显示很小的 save scuess

自由翱翔

点击状态栏v2rayu图标,选择 Turn v2ray-core On 如下图,此时我们可以通过v2rayu正常上网了,打开浏览器输入 googl.com 测试一下是否可以正常打开。
启动v2rayu

v2rayu日志查看

使用v2rayu的过程中如遇意外,可点击状态栏v2rayu图标,选择 查看v2ray日志:
打开日志

v2rayu代理模式

一般我们选择Pac模式,pac即 proxy automatically control 的缩写。能够根据配置文件自动分流哪些地址需要进行代理,哪些地址不需要进行代理。pac配置文件可通过pac图标中pac配置进行设置。

参考文档

US-B.Ralph
建站记录

Leave a Comment

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

16 − 13 =