本文最后一次在 2020 年 02 月29 日更新,部分内容可能已经过时!
以前就听说过这个工具。但当时整体看上去部署好麻烦,而且我的工具又并不是不稳定,再加上当时看这玩意儿要想做到只转发境外又很麻烦,所以也就一直没在意过它。但最近越来越发现,我的努比亚仿佛天生就屏蔽ss的流量,所以感觉可能还是换一换工具能好一些。说干就干,开始迁移

介绍

V2Ray是近几年十分流行的网络工具,其功能强大,用途不限于如此,但因其能有效跨越而广为人知。有如下大放异彩的特点:

  • 开源。是Project V的核心工具,源代码开源;
  • 多协议支持。传输层支持TCP、mKCP、WebSocket等,上层协议支持Socks、ss、以及自定义的VMess等;
  • 可同时支持多个入站和出站协议,每个协议独立工作;
  • 多平台支持。原生支持Windows、Linux、MacOS三大常用平台,安卓、iOS两大移动平台有丰富的第三方工具;
  • 隐蔽性。流量可伪装成网页流量,更难被检测和干扰。

一句话总结:更好更强大,但更难上手和用好。

部署

现在已经有一键脚本。直接使用即可(Linux)。

curl -L -s https://install.direct/go.sh | bash

安装完成后,配置文件为/etc/v2ray/config.json,其中,”inbounds”下的这几项信息需要记录:port(端口)、clients中的id(用户id)和alterId(额外id),它们将在配置客户端时用到。

在VPS中放行上面提到的port,然后启动服务:

systemctl enable v2ray
systemctl start v2ray

即可使用。

但当前是没有什么伪装措施的,或者说,仅仅是使用了默认的vmess方法进行“混淆”。一旦检测到,那么必然就会露馅。所以接下来进行进一步的“打扮”。

伪装

通过一个正常的网站进行伪装,一来可以合理的解释为什么会有数据传送到这个ip上;二来可以走一层cdn,进一步伪装服务器ip和真实的作用;三来可以套上一层https,数据包就又加密了一次;四来,如果你的vps被屏蔽了,套上cdn还能让你的vps起死回生。

但这需要你有一个域名。

至于解析和cdn,我选择通过cloudflare来实现。当然也可以用其他的,比如直接使用域名商的域名解析。使用cf的好处在于可以直接提供cdn和https,省去了另行配置cdn和申请域名签名的步骤。

当然,如果有更好的cdn服务商就不要用cloudflare了…都快用烂了。

先将域名解析配置好。一级域名肯定是你自己的(比如是123.com)至于使用哪个二级域名无所谓(比如v.123.com,接下来以这个域名为例),或者直接使用主域名也可以。注意把cf的小云彩点亮以使用cdn功能——嫌慢的话就点灭,但https需要你为域名申请一个证书。

切换到SSL/TLS标签,将加密模式切换到Flexible;切换到Edge Certificates子标签,启动Always user HTTPS

至此,cf设置完成,接下来设置服务器。

进入到你服务器的宝塔面板(我一直在用宝塔面板,如果你使用单纯的环境,相信接下来的东西你也是会配置的),进行如下操作:

  1. 新建上述域名的网站。静态站还是动态站无所谓,反正有一个网站就行,这个网站也可以正常使用。比如说浏览器访问是你公司的wiki站点,实际上在提供v2ray服务
  2. 确定后,打开该站点的设置页—配置文件,在结尾的}前增加下述代码(开头是location 不知道为啥l总是显示不出来)

    location /v2ray { #使用软件访问v.123.com/v2ray,会连接到v2ray服务,浏览器访问则返502错误。这里的路径可以自定义
           proxy_redirect off;
        proxy_pass http://127.0.0.1:12345;   #v2ray的端口。应该与前边提到的port相同
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $Host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    其实就是反代,直接在网站设置的反向代理标签设置也可以。

  3. 修改前边生成的config.json,在inbounds下增加相关的配置,最终类似于这样:

     "inbounds": [{
        "port": 12345,
        "protocol": "vmess",
        "settings": {
          "clients": [
            {
              "id": "xxxxx",
              "level": 1,
              "alterId": 64
            }
          ]
        },   #上面的都是自动生成的,不必修改
        "streamSettings": {     # 载体配置段,设置为websocket
            "network": "ws",
            "wsSettings": {
              "path": "/v2ray"  # 与nginx中的路径保持一致
            }
          },
        "listen": "127.0.0.1" # 出于安全考虑,建议只接受本地链接
      }],

    注意:json文件不支持注释,上述配置中”#”号及后续内容都要删掉。

  4. 配置无误后,重启v2ray服务:systemctl restart v2ray

接下来浏览器访问域名,确定是https访问,并且出现首页内容,而URL输入映射到v2ray的地址(如前面假设的 v.123.com/v2ray),返回 Bad Request,则几乎可以说明配置完成了。接下来就到客户端了。

使用

Win和手机端的软件网上有很多,所以这里只说设置的内容

  • 地址/address:前边设置的域名(这里的例子应该写 v.123.com)
  • 端口/port:443
  • id:inbounds中的id
  • 额外id/alterId:inbounds中的alterId
  • 加密方式/Security:auto
  • 传输协议/network:ws
  • 伪装类型/type:none
  • 伪装域名留空
  • path:前边在nginx中设置的路径(这里的例子应该写/v2ray)
  • 启用tls传输

至于Linux,archlinuxcn源提供qv2ray,自带流量区分,即只处理出境流量。安装使用这个软件即可,设置同上。

已有 12 条评论

  1. 个人感觉威兔锐真的很不错,一键脚本也很完善。这两天酸酸乳一打开立马挂,威兔锐kcp协议的也会立刻挂,只有websocket+TLS的威兔锐很稳,配合上BBR速度比酸酸乳还快。 —— androidzhao androidzhao 发表。 回复TA
  2. 宝塔面板里申请https证书还是挺容易的,这样可以不点亮cf的小云彩还能快点。。。吧 —— marvel084 marvel084 发表。 回复TA
    1. 还是得看你的服务器到大陆是怎么走的,没准套一层cdn线路能少绕些路。另外还能挽救一下被墙的ip —— 等我稍后补充昵称 等我稍后补充昵称 [作者] 于 发表。 回复TA
  3. 感觉v2 ws+lts+cnd 挺好的 就是速度慢 我终于找到了一个可以rss的博客 —— lingling lingling 发表。 回复TA
    1. typecho应该都可以吧 网址加上/feed就行了 —— 等我稍后补充昵称 等我稍后补充昵称 [作者] 于 发表。 回复TA
  4. 我用archlinuxcn源装上了qv2ray 但是不会用啊 能不能写个图文教程 —— haojunmei haojunmei 发表。 回复TA
    1. 和win客户端配置的东西一样,打开新增窗口的步骤是 添加—订阅/手动输入—打开连接编辑器 —— 等我稍后补充昵称 等我稍后补充昵称 [作者] 于 发表。 回复TA
  5. 客户端的端口是443吗还是和配置的一样 —— oo oo 发表。 回复TA
    1. 最后都写了啊 —— 等我稍后补充昵称 等我稍后补充昵称 [作者] 于 发表。 回复TA
  6. 有错字哦,中间部署cloudflare的一行
    "切换到 SSL/TLS 标签,将加密模式切换到 Flexible;切换到 Edge Certificates 子标签,启动 Always user HTTPS"
    其中Always user HTTPS 是 Always use —— aha aha 发表。 回复TA
    1. 哎我这错字是经常的…习惯就好 —— 飞蚊话 飞蚊话 [作者] 于 发表。 回复TA
  7. 那个location显示不出来似乎是你有个左右移动的滚轮条,往左移动就看见了。。。复制的时候是有l的 —— aha aha 发表。 回复TA

添加新评论