基于宝塔面板搭建v2ray+cloudflare隐藏IP

本文最后更新于:21 天前

前言


昨天一个PT圈的朋友说自己机场进不去了,可能是跑路了。自己在do的vps又有用武之地了,哈哈~

之前为了折腾私人网盘搭了一个宝塔面板,然后Nginx跟trojan冲突了,虽然网上有解决方案,但是不能套CDN,弃了。万一IP被墙了转移太麻烦了~

最后选择的是V2Ray+WebSocket(ws)+TLS+Nginx+网站+Cloudflare的方案,在这里记录一下,免得下次又要重新配置。

原理是先在 VPS 服务器上用 V2Ray 伪装成一个网站,再用 CDN 中转。这时流量传递的顺序是这样的:

原理

主要实现就是两点:

  • 借助 V2Ray 客户端代理,将我们的流量被伪装成网站流量访问我们的域名。
  • 利用 CDN 中转 V2Ray 的 WebSocket 流量到我们的VPS。

这样,GFW 只知道你与 CDN 之间的联系,不知道 VPS 的实际地址,并且 CDN 会有很多 IP 地址,GFW 也不会随意封这些 IP,毕竟也有很多正规网站在使用,因此可以基本保证 IP 的安全。

准备工作


默认有VPS了,然后我用的是ubuntu18.04,不知道为啥,就是喜欢ubuntu的名字。然后有一个域名了,可以解析到你的VPS。然后接下来就是部署一个网站。我们使用宝塔面板进行搭建。

1、宝塔面板的安装:https://www.bt.cn/bbs/thread-19376-1-1.html

Ubuntu/Deepin安装命令:wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh

安装完成后会高速你登录网址以及账号密码,用小本本记录下来。(图片来自知乎)

安装截图

2、一键配置网站环境

就像你电脑上的游戏,有时候缺少某个环境就无法运行。

同样网站运行也需要一定的环境支持,这里我推荐的环境组合为

  • Nginx
  • PHP
  • Mysql

登录宝塔面板后如果你的服务器没有网站运行环境他会弹出一键安装窗口,如果要用到宝塔的证书服务,可能还需要注册一个宝塔账号,然后进行授权什么的。

搭建环境

3、建站。这个时候需要一个域名先,无论是买的还是免费的,我们假设这个域名就是tomorrow505.xyz。然后我们登录cloudfare(没有的话就注册一个,然后Add site将域名托管在cloudfare,不同的域名商家不一样),具体的教程参见:https://zhuanlan.zhihu.com/p/56423186

我们在自己域名对应的站点下创建一条A记录为v2ray指向我们的服务器。

19375f3595e7614cd.png

此时我们暂时不需要CDN,所以选择DNS only。现在我们就可以ping v2ray.tomorrow505.xyz了,返回的是VPS的真实IP。这个我们后边还会设置隐藏。使用这个域名建一个站:

295a28328dbdb704d.png

39fd1766354322154.png

提示我们需要部署SSL证书,宝塔面板自带部署证书的功能:https://cloud.tencent.com/document/product/400/50874

点击上图未部署位置,会跳转到下图,这里演示了用Let’s Encrypt申请的证书,并开启强制https访问。

477c5ebea8c378f2b.png

那么站点就搭建好了。使用上述域名访问可以看到下边的提示:

5.png

4、安装v2ray,基本上就是一键命令。

bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)

6.png

出现上图那样的提示就显示成功了,运行:chown -R nobody /var/log/v2ray赋予日志写入权限。

然后我们开始配置文件:/usr/local/etc/v2ray/config.json

{
  "inbound": {
    "streamSettings": {
      "network": "ws", 
      "wsSettings": {
        "path": "/ws/", 
        "headers": {
          "Host": "ws.v2ray.tomorrow505.xyz"
        }
      }
    }, 
    "protocol": "vmess", 
    "port": 9999, 
    "settings": {
      "clients": [
        {
          "alterId": 100, 
          "security": "auto", 
          "id": "00b93379-2d11-4392-a600-52f1d7ea0148", 
          "level": 1
        }
      ]
    }
  }, 
  "outboundDetour": [
    {
      "tag": "blocked", 
      "protocol": "blackhole", 
      "settings": {}
    }
  ], 
  "outbound": {
    "protocol": "freedom", 
    "settings": {}
  }, 
  "log": {
    "access": "/var/log/v2ray/access.log", 
    "loglevel": "warning", 
    "error": "/var/log/v2ray/error.log"
  }, 
  "routing": {
    "settings": {
      "rules": [
        {
          "ip": ["geoip:private"], 
          "type": "field", 
          "outboundTag": "blocked"
        }
      ]
    }, 
    "strategy": "rules"
  }
}

上边几个地方需要修改的:

"path": "/ws/", ##这里是路径,配合Nginx转发;可以不改。
"host":改成"ws.自己的域名";
"port": 9999, ##这里是需要Nginx转发的端口;
"alterId": 100, ##这里是额外ID;
"id": "00b93379-2d11-4392-a600-52f1d7ea0148", ##这里是UUID。可以从https://1024tools.com/uuid生成之后选择一个。需要和客户端对应。

接着在宝塔面板的安全页面放行9999端口。

8.png

然后根据图片的提示运行:

systemctl enable v2ray
systemctl start v2ray
systemctl status v2ray

7.png

可以看到正在running……

systemctl stop v2ray

接着进入宝塔面板,进入添加的网站,修改配置文件,在#SSL-END的前变添加如下代码,里面的9999是前面v2ray中配置的端口,必须对应起来:

9.png

location /ws {
        proxy_redirect off;
        proxy_pass http://127.0.0.1:9999;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
    }

在宝塔面板软件商店->已安装找到Nginx,重启Nginx:

10.png

此时v2ray服务端就算搭建好了,运行systemctl start v2ray开启服务,然后配置客户端,windows上下载v2rayN:https://github.com/2dust/v2rayN/releases

选择v2rayN-core版本,解压运行v2rayN.exe,然后进行如下配置:

12.png

13.png

上边图中标红的,换成自己的域名和UUID,其他的如果没有变化的就不用改了。然后右键v2rayN.exe运行起来的程序设置:

​ 系统代理->自动配置系统代理

​ 路由->绕过大陆

14.png

油管测速,还行吧。

最后记得到cloudflare中把云朵点亮,确保IP被隐藏了:

15.png

打开:https://tool.lu/ip/ 对结果进行验证:我们看到域名已经放到cloudfare代理下边了。

16.png

使用本方法可以保证网站和v2ray共存,后续还可以在vps上继续搭建网站。

总结


人生不易,且折腾着吧。

参考文献



本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!