使用xray面板v2-ui搭建基于vless+ws(tls)+nginx+cloudflare CDN+优选ip组合的方法

这篇文章不想写的像标题这么长,简单点,你写文章的方式简单点

最近闲的发慌,总想着折腾点东西。主要是搞了oracle的机子,也不能吃灰不是,我放博客是单独购买的vps。

原先我也是买机场的节点用的,后来看TG群里各种撸oracle的机子,各种自己用各种技术搭建科学上网工具。我也跟着照猫画虎,有样学样的操弄起来。就我这半瓶水的水平注定是各种坑的,因此也就有了本文的出现,希望给朋友们带来填坑的一种思路吧!

谁适合看

  • 有Linux使用经验的人,不会的要能Google,就像你遇到问题了,也可以使用Google搜到本文一样。
  • 要能理解组合里的各种名词是用来干什么的,做到看到这个词,脑海中有对应的中文翻译,我知道这很难,但看多了就记住了。
  • 别对本文有过多期待,只把它作为一个参考,实在觉得看着没多大用处的话就右上角×。
  • 遇到问题淡定的人,自己先想办法解决它,实在不行,再去求助。

哪些准备

  • 一台Ubuntu 18.04以上的有公网ip的vps,当然你要是CentOS也行,这就需要自行对应命令了。
  • 一个域名,免费的有freenom  , 付费的有namesilo  。我两家都有域名,可以根据自己的情况注册,这个实在不会,就用Google了。
  • cloudflare有一个账号,没有的话先注册个,然后把你域名注册商处的nameserver换成cloudflare家的,并把你的域名解析到你的vps的公网ip。
  • 如果你实在不想敲更多的命令,可以安装宝塔面板,这个不影响的,只是为了让自己伪装的更难被发现。

步骤可能会有些跳

  1. 安装宝塔面板,我安装的是国际版的,安装方法参考官网 ,当然你也可以安装国内的,无非是使用习惯的问题,这里只是为了安装软件和配置时更“方便”点而已。
    国际版安装好了之后,是这个样子的。
    宝塔面板国际版
  2. 在你购买的域名管理后台,把nameserver换成cloudflare的,方便把域名由cloudflare托管。域名服务器设置

这里举例以example.com演示,从这里开始就要换成自己的域名了,然后ip地址的话,使用自己vps的公网ip地址,到cloudflare里,添加域名解析。
域名解析设置
域名解析设置

过个5分钟,打开Windows下的命令行窗口,然后ping一下自己的域名,检查是否已经解析到自己的vps的公网ip地址了,如果正常说明域名已经托管在cloudflare了,如果不对可能要等一些时间。

  1. 安装v2-ui面板,参考官方教程
    面板搭建好了之后,你应该可以通过:http://example.com:65432 访问面板,进里面做进一步的配置,这里说一下,如果访问网址后打不开,可能需要到宝塔面板放行端口65432。
  2. 在宝塔里添加上一步解析的域名,然后为域名申请ssl证书。
    • 添加站点:宝塔添加站点
    • 为站点部署ssl证书,部署证书之前,确保没有其他应用占用80端口,例如NGINX等:
      配置ssl
      按下图选择,申请证书:
      申请证书
      还有把上图中Force https开关打开。
      这样我们试着浏览器中输入域名后,应该可以打开一个带安全锁的网页。
      测试打开域名
  3. 然后宝塔里安装一下NGINX,为反代v2-ui面板和xray节点做准备。
    在App Store里搜索NGINX安装下,可以安装下1.18.0以上的版本。安装好了后,默认会给你生成一些针对网站的配置文件,这一步基本不用动什么。
  4. 进入v2-ui面板配置面板证书,修改面板访问路径,实现NGINX反代后免输入端口来访问。
    • 在面板设置里,修改面板端口,比如原先是65432,我现在修改为23456,并在宝塔安全里放行23456,以后就可以通过23456端口来访问v2面板了。也可以把65432端口删除,保证开放最少的端口。
    • 把网页根路径也修改下,这个可以自由发挥,但是建议使用英文有意义的字母和数字组合,你自己要记住。例如:/freedom
    • ssl 证书文件路径和ssl 密钥文件路径,这两个路径可以使用之前为网站申请的证书路径,使用绝对路径,可以到NGINX的配置文件里找到。
      证书文件路径
      把上边证书和私钥的绝对路径复制黏贴到v2-ui面板设置里。然后重启面板。修改内容如下图所示:
      v2面板设置
      修改过后,你应该可以通过类似如下形式访问面板了,
      https://example.com:23456/freedom 这里的域名端口以及/后面的要替换成你自己设置的才可以。
    • 下面进入宝塔那边进行v2面板反代设置。
      找到你之前添加的网站,点击操作列下的配置,进入网站配置文件设置里,添加反代配置。
    • 复制以下NGINX配置,替换/后面的freedom为自己面板上的路径标识符,然后proxy_pass中的端口和freedom都相应修改下,改为自己v2面板中设置好的。
      面板反代配置

      location ^~ /freedom {
      proxy_pass https://127.0.0.1:23456/freedom;
      proxy_set_header Host host;
      proxy_set_header X-Real-IPremote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      }

这段代码的意思就是说当客户端对 www.example.comf/freedom 发起请求时,实际被代理到本地的23456端口,路径是/freedom。瞎理解。这样的话,我们就是访问v2-ui面板而不需要加端口了。

  • 下面我们在v2-ui面板中添加一个vless节点,然后进行反代。进入面板的账号列表,单击加号添加,设置如下:添加vless节点

下面我们在宝塔面板的站点配置里,添加以下反代配置。

        {
          if (http_upgrade != "websocket") {
        return 404;
    }
            proxy_pass http://127.0.0.1:23456;
            proxy_redirect off;
            proxy_http_version 1.1;
            proxy_set_header Upgradehttp_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $http_host;
            proxy_read_timeout 300s;
}

可以看到我们只需要修改location后面的/freedom,这个改为你那边在v2里设置的,然后就是proxy_pass的端口23456,修改为你自己的设置。注意:这里端口不要使用23456了,location后面的/freedom也要修改,因为我在上面对站点进行反代使用过了,你自己重新设置为你v2节点里的。
节点反代配置
配置好了,可以保存过后,重启下NGINX。这样节点的反代就设置好了。

  1. 客户端配置,其实到这里我们的vless节点配置工作已完成90%了,我都感觉没有多大的难度,但真正难的是你明明按照别人的教程一字不落的操作下来,最后满怀希望的去客户端配置了一通,最后打不开油管,上不了谷歌,心里一万只那个动物飘过哈。我就是在这里翻车的,v2ray给我的感觉是配置好了,它好用,但要用好,用出花来,那就要下点功夫,当然了我还是推荐你去用一键脚本,如果你也像我一样总觉得一键脚本缺点什么,其实就是不折腾不舒服斯基,再加上一点探索的欲望,那可以一步一步的这样做,扯远了。我们先来测试下不加cdn,不优选ip的情况下可不可以翻,如果这都不可以,那也就谈不上开减速cdn和优选了。
    • 这里说一下我这边使用的客户端是Qv2ray ,可以参照教程安装下,客户端需要配置核心插件才能使用,我这里有个问题是我使用的xray核心,导入链接和扫二维码都报:"1: Unsupported share link format.",我是手动配置的客户端,如果你实在不想手输的话,你可以使用v2rayNG,我测试了下可以,这样是我最后我实在没招了,反复检查前面服务端配置和反代,后面只要一打开cdn,客户端输入优选ip就连不上了,后来想了下会不会是客户端的问题,一换客户端,之前困扰了好多天的问题,就这样解决了,FxxK.
      v2ray客户端配置
      v2ray客户端配置
      配置好了后,右键配置好的节点,连接到此服务器,测试打开Google之类的,没问题证明之前的配置正常,如果有问题的话,那就是你之前有错,需要仔细检查下,再往下进行。
    • 由于我这边网速比较差,就这样只开启bbr的情况下,哦,忘了说了,你在连上vps之后,什么都没操作之前可以把bbr安装上,这个就不说了,网上有教程的。看油管勉勉强强1080,连接速度也就2Mbps的样子。不套cdn测速
    • 虽然套cloudflare,常常被恶搞成减速cdn,还是要尝试下,万一可以带来惊(jing)喜(xia)呢?
      之前我们在cloudflare解析的域名,那个点灰的按钮,可以打开了,变成橙黄色,就证明网站走cdn了,当然了生效时间可能不是那么快,反正我这边为了排查cdn连不上的问题,每一次都要等好久,我也是醉了,你套了cdn后,要打开window命令行窗口,ping一下自己的域名,如果已经不是自己vps的ip了,证明已经走cdn了,这样说可能比较模糊,我放几张图。
      开启cloudflare的cdn
      是否开启cdn测试
      如果到这里你的节点还可以正常连接的话,那恭喜你的节点已经走cdn了。你客户端也不需要改动什么,就是这一步要确认你开启cdn,节点是否正常连接,顺便打开油管娱乐测下速度,给我的感觉是套了cdn后,客户端这边连接的延迟有点高,然后如果cloudflare那边给你分配的边缘节点比较远的话,可能是适得其反的,其实不理想是常态。先看测速吧!
      套cdn后测速
    • 如果上一步你套cdn后,节点连不上了,别慌,有可能答案在这一步,我之前记得优选ip是要开启cloudflare的加密模式为安全的,这样回源的时候和你的vps会有一个认证吧。这一步也是优选ip能否成功的关键。
      更改cloudflare加密模式
      边缘证书里要可以显示你的域名,还要开启通用ssl。
      开启通用SSL
      边缘证书里要有你的域名,状态要显示有效,我这里等了好久才显示。
      添加边缘证书
      如果你想让你的cloudflare的设置快速点生效,可以试一下这样清除下缓存。缓存时间调低一点。
      清除cloudflare缓存
      调整浏览器缓存TTL
      查看自己网站的证书是否已经变成cloudflare这边的了。
      查看浏览器ssl证书
      如果上边都确保没有问题的话,我们就可以去优选ip了。
      better-cloudflare-ip ,解压后运行,输入你的实际带宽,这里建议不要输入太大的数值,可能因为选不到ip,无限循环下去,如果你100M的带宽的话,你可以从50开始实验,你自己根据实际情况来输入这个数值。
      运行CF优选ip脚本

      最后优选出的ip。
      优选ip
      把优选出的ip,输入到你v2ray客户端的主机里。
      修改v2ray客户端配置为优选ip
      如果链接上了后,客户端刷的日志没有大量报错,并且还能继续打开油管之类的,证明你的优选ip这一步没有问题了,这种还是不够自动化,更多玩法,需要你自行解锁。
      优选ip后测速
  2. 遇到的问题。
    • 上边的内容可能你实验过后,不是那么回事,还请仔细检查下,有些时候可能是文章写的不够好,也有可能自己看走眼了,都有可能,
      开启cdn后连不上,客户端报:"app/proxyman/outbound: failed to process outbound traffic > proxy/vless/outbound: failed to find an available destination > common/retry: [transport/internet/websocket: failed to dial WebSocket > transport/internet/websocket: failed to dial to (wss://): > x509: certificate has expired or is not yet valid: ] > common/retry: all retry attempts failed"。
      这里有可能是你的证书有问题,检查下自己生成证书的过程是否是使用宝塔来自动生成的。另外就是cloudflare有没有证书显示。
    • Qv2ray客户端日志:"app/proxyman/outbound: failed to process outbound traffic > proxy/vless/outbound: failed to find an available destination > common/retry: [transport/internet/websocket: failed to dial WebSocket > transport/internet/websocket: failed to dial to (wss://): > remote error: tls: handshake failure] > common/retry: all retry attempts failed"
      这个一看还是证书问题,但是我在这个问题上处理了好久,我参考了大量文章,别人都是一遍过,我前面确保没有问题,就是这一步优选ip输入客户端后就连不上。最后我联想到v2ray的配置文件很重要,我的Qv2ray是无法导入vless链接的,我就试了其他客户端,这一试,问题解决了,我又想FxxK了。首先可以确认的一点v2-ui生成的配置文件在导入v2rayNG后,是要稍微修改下的,不知道是v2-ui的问题还是客户端的问题,然后使用手机扫描v2rayNG电脑客户端的二维码,可以连接,证明问题有可能出在配置文件上,我比对了下v2rayNG的json文件,和Qv2ray的配置文件,发现了Qv2ray识别出的连接,缺少出站设置配置。
      右键你的Qv2ray里的节点,然后编辑为复杂配置,添加自由出站。
      编辑为复杂配置
      添加freedom outbound
    • 报错:"app/proxyman/outbound: failed to process outbound traffic > proxy/vmess/outbound: failed to find an available destination > common/retry: [transport/internet/websocket: failed to dial WebSocket > transport/internet/websocket: failed to dial to (wss://): 403 Forbidden > websocket: bad handshake] > common/retry: all retry attempts failed"。
      有可能是你节点的反代配置错误,可是试着把宝塔里站点配置文件的节点反代的部分的http改为https试一下。
  3. 这边文章就到这里吧。感觉TL;DR。可能会有总结的不到位的情况,只是提供个思路,比如问题和解决方案可能是一对多的关系,每个人的环境不一样,问题可能太多变化,有问题可以留言讨论,感谢你的耐心阅读,后面可能会继续优化这篇文章。

2021年6月27日                                        2 评论

In Ubuntu, 工具使用, 科学上网

# # # # # # # # # #

言下之意

cyp0633说道:

也许是讲得最细的之一,nb

xxxx说道:

感谢分享,很详细!

发表回复