本文属于简洁版,是基于本博客两篇文章的的更新补充版本,使用v2ray官方的一键安装脚本安装v2ray,并配合自定义的config.json实现网站与v2ray共存并使用Cloudflare的CDN中转。

两篇文章如下:
搬瓦工vps的IP被封(10) V2Ray+WebSocket(ws)+TLS+Nginx+Cloudflare
搬瓦工vps的IP被封(8) V2Ray+WebSocket(ws)+TLS+Nginx+网站+Cloudflare

为啥不写一个全新的版本呢?主要是因为我的现有域名已经用于生产环境,不能再像之前那样从零开始;写这篇文章的主要原因是因为前几天经过网友提醒才发现这两篇文章中使用的v2ray.fun脚本失效了,所以我写这篇文章用于解决此问题。而且此次,我只是用了一个二级域名做了一下测试,很多步骤无法复现,所以,请谅解!

本文通用VMess和VLESS,文章内含两种协议的config.json模版。

完了,还是改不了我写文章会喜欢在文章开头写一堆废话的“优点”。

1、准备工作:
1.1、一台全新安装Centos 7的VPS。
1.2、一个拥有所有权的域名。
1.3、注册Cloudflare账号。

2、本文省略了哪些步骤?
2.1、省略了域名注册步骤;
参考《言小五系列教程之NameSilo域名注册和续费及管理

2.2、省略了将域名NS服务器替换成Cloudflare的NS服务器步骤;
参考《搬瓦工vps的IP被封(4) Cloudflare+V2Ray+Caddy+WebSocket+TLS》一文3.4至4.2.4步骤。

2.3、省略了Cloudflare 15年证书相关申请操作步骤;
参考《搬瓦工vps的IP被封(10) V2Ray+WebSocket(ws)+TLS+Nginx+Cloudflare》一文2.1-2.32步骤。

2.4、省略了宝塔面板安装以及新建网站步骤;
参考《搬瓦工vps的IP被封(10) V2Ray+WebSocket(ws)+TLS+Nginx+Cloudflare》一文3.1-3.5步骤。

以下为具体更新补充的步骤:
3、接上面2.4步骤,这个时候打开网站,谷歌浏览器会提醒网站证书不安全直接会终止连接,火狐浏览器也会提醒证书不安全,但是有个高级按钮选择继续,就可以打开网站。能显示网站首页就行了。这是因为“源证书仅对 Cloudflare 与源服务器之间的加密有效。”意思就是15年证书是Cloudflare签发给你的域名用于Cloudflare的CDN与你的服务器之间进行加密传输的,不是用于呈现给浏览器的。

4、安装和配置v2ray:
4.1、先安装 curl,命令如下:
yum install -y curl
我测试的时候已经安装过了,所以提示Nothing to do

4.2、安装unzip
yum install -y unzip
我测试的时候已经安装过了,所以提示Nothing to do

4.3、安装v2ray,官方脚本fhs_install-v2ray;如果输入命令并回车之后卡住的,再按一次回车就行了。
bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh) --version v4.45.2

4.4、编辑v2ray的配置文件,先下载这个config.json模版,vi 编辑config.json,把里面的两个{}删掉,然后复制我给的模版,按下面提到的参数修改一下即可。
模版文件下载地址:https://files.eveaz.com/ ,模版参数略有变化,以模版为准。
vi /usr/local/etc/v2ray/config.json
需要修改的参数位置如下:
"Host": "v2fly.eveaz.com"
##将v2fly.eveaz.com改成自己的域名;必须改!!!
下面4个位置可根据自身需要修改:(不了解就不要改)
"path": "/ws/", ##这里是路径,配合Nginx转发;
"port": 10010, ##这里是需要Nginx转发的端口;
"alterId": 0, ##这里是额外ID,不能改!要是改了,在2022年01月01日就用不了了。
"id": "00b93379-2d11-4392-a600-52f1d7ea0148", ##这里是UUID。

4.4.1、不会 vi 编辑的在宝塔面板-文件根目录/usr/local/etc/v2ray 文件夹可以找到config.json,默认的config.json里面就两个大括号,删掉,粘贴我写的v2ray_config.json模版文件进去,然后再修改即可。

4.5、赋予v2ray,service日志写入权限;
chown -R nobody /var/log/v2ray
解释:这是因为v2ray.service为了安全性,使用了用户nobody来读取v2ray服务端程序的config.json配置和写入v2ray相关日志。如果不赋予权限,那么启动v2ray的时候就会报错。报错代码如下:
systemd[1]: v2ray.service: main process exited, code=exited, status=23/n/a
systemd[1]: Unit v2ray.service entered failed state.
systemd[1]: v2ray.service failed.

4.6、设置v2ray开机启动,命令行输入:
systemctl enable v2ray
4.6.1、启动v2ray,命令行输入:
systemctl start v2ray
4.6.2、查看v2ray启动状态,命令行输入:
systemctl status v2ray

4.6.3、如果显示如上图那样,就是v2ray启动成功了。

5、回到宝塔面板网站设置,站点管理 – 配置文件,在最下面一个}之前添加下面规则代码,然后保存。

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


5.1、在宝塔面板重启Nginx。

5.2、这个时候火狐浏览器打开网址,你的域名后面加上/ws/,比如我的域名是v2fly.eveaz.com,那么我打开的网址就是 https://v2fly.eveaz.com/ws/ ,网页显示内容为Bad Request。

5.3、基本上到这里就ok了,回到Cloudflare,域名的小黄云点亮,即Proxied;然后等到DNS生效就行了;这个时间不固定,要看你本地用的DNS服务器够不够快了,生效时间1分钟到15分钟不等;简单点来说,你在本地ping一下你的域名,当显示为Cloudflare的IP的时候,就是生效了。
参考《搬瓦工vps的IP被封(10) V2Ray+WebSocket(ws)+TLS+Nginx+Cloudflare》一文步骤7。

5.4、当DNS生效之后,就可以用客户端进行连接了。如果DNS没生效,客户端会报错 x509证书错误,报错信息如下:
[Warning] [1446008233] v2ray.com/core/app/proxyman/outbound: failed to process outbound traffic > v2ray.com/core/proxy/vmess/outbound: failed to find an available destination > v2ray.com/core/common/retry: [v2ray.com/core/transport/internet/websocket: failed to dial WebSocket > v2ray.com/core/transport/internet/websocket: failed to dial to (wss://v2fly.eveaz.com/ws/): > x509: certificate signed by unknown authority] > v2ray.com/core/common/retry: all retry attempts failed

以上更新补充步骤结束。

6、其它补充:
6.1、每次修改v2ray的config,json,都需要重新启动一下v2ray,v2ray重启命令如下:
systemctl restart v2ray
6.2、如果需要卸载v2ray,请用下面的命令:
bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh) --remove
6.3、各种客户端的使用,这里就不再写了,请查看本站关于IP被封整个系列的历史文章吧。

7、客户端报错补充:
7.1、如果v2rayN客户端如下错误,那么只能说明你本地与Cloudflare之间的网络太垃圾了,一般这个报错是断断续续的,也就是时不时报错,这个时候上网还是正常的;如果长期都是报错,那么…我还能说啥呢?只能说明你与Cloudflare分配给你的CDN的IP无缘份呗,开个玩笑,可能是刚好连接的Cloudflare的IP与你本地网络连接不通畅,等一段时间就好了,这个时间可能是几分钟,可能是几个小时,可能是几天。
报错代码如下:
2020/10/31 09:52:58 tcp:127.0.0.1:18212 accepted tcp:github.com:443 [proxy]
2020/10/31 09:52:59 [Warning] [3743557583] v2ray.com/core/app/proxyman/outbound: failed to process outbound traffic > v2ray.com/core/proxy/vmess/outbound: failed to find an available destination > v2ray.com/core/common/retry: [v2ray.com/core/transport/internet/websocket: failed to dial WebSocket > v2ray.com/core/transport/internet/websocket: failed to dial to (wss://v2fly.eveaz.com/ws/): > dial tcp 104.27.140.57:443: operation was canceled v2ray.com/core/transport/internet/websocket: failed to dial WebSocket > v2ray.com/core/transport/internet/websocket: failed to dial to (wss://v2fly.eveaz.com/ws/): > dial tcp: operation was canceled] > v2ray.com/core/common/retry: all retry attempts failed
2020/10/31 09:52:59 tcp:127.0.0.1:18215 accepted tcp:medium.com:443 [proxy]
2020/10/31 09:52:59 tcp:127.0.0.1:18223 accepted tcp:oauthaccountmanager.googleapis.com:443 [proxy]

7.2、其它报错:
参考《搬瓦工vps的IP被封(10) V2Ray+WebSocket(ws)+TLS+Nginx+Cloudflare》一文步骤8,12,13。

52 thoughts on “搬瓦工vps的IP被封(11) BT宝塔面板+V2Ray+WebSocket(ws)+TLS+Nginx+Cloudflare

  1. TANG ZONGHUANG说道:

    大佬你好,为啥端口老是崩溃

    1. 言小五说道:

      @TANG ZONGHUANG 不太明白你所说的端口崩溃是什么意思。

  2. hon说道:

    V2Ray 4.45.2 (V2Fly, a community-driven edition of V2Ray.) Custom (go1.18.3 linux/amd64)
    A unified platform for anti-censorship.
    2023/09/26 11:51:26 Using config from STDIN
    2023/09/26 11:51:26 [Info] main/jsonem: Reading config: stdin:

    输入v2ray就是出来这个。用客户端连接,测速提示远程服务器返回错误:(500)内部服务器错误。
    VPS时间是正确的,v2ray启动状态是active (running) ,怀疑是v2ray安装有问题

    1. 言小五说道:

      @hon 抱歉,日志过于简洁,算不出来出了什么问题。
      查看v2ray状态命令:systemctl status v2ray

  3. Kaguya说道:

    大佬你好,多年前使用您的这篇教程搭建了梯子目前还在正常使用,但是今天买了个新的VPS也是按照这篇教程做下来,却无法使用,我通过浏览器直接使用域名可以看到网页,就是‘站点创建成功’和‘Bad Request’,使用v2ray测试服务器延迟也有读数,但是测试服务器速度却是0,新系统的时候有试过用XUI创建vmess的链接,经测试是有速度的,但是我不会使用xui和域名这些设定,所以还是按照这篇教程做了一遍,最后就是变成0速度了,就算再用xui创建也是0速度,想问一下,是不是我哪里操作有问题还是什么其他的问题?应该如何解决?

    1. 言小五说道:

      @Kaguya 测试服务器速度为0不代表服务端配置错误。具体应该看下WIN系统电脑使用v2rayN客户端,连接节点之后,查看客户端下方日志情况。

  4. Hoshino说道:

    大佬你好,我按照你的教程进行了安装,安装之后使用客户端链接,没有报错,使用v2ray进行服务器延迟测试是有数值的,但是测试服务器速度却是0速度,在全新系统的情况下使用了xui创建了vmess的链接是有速度的,但是按照教程来做之后却变成0速度了,想问一下是不是我哪里做错了还是什么其他的问题?

    1. 言小五说道:

      @Hoshino 测试服务器速度为0不代表服务端配置错误。具体应该看下WIN系统电脑使用v2rayN客户端,连接节点之后,查看客户端下方日志情况。

      1. Hoshino说道:

        @言小五 感谢回复,我后面又重新安装新系统重新走了一遍教程,现在没问题了,之前测速0速度下方日志栏没有显示任何错误,或者说测速下面就没有任何信息了吧,后面重新走一遍我觉得可能是额外ID没有弄好吧,我直接把之前照着这个教程的配置文件拿过来改了域名就用了,忘了把额外ID改成0了,虽然客户端和服务端的额外ID设置也都是一样,但可能是因为这个原因才导致0速度吧 _(:3」∠)_

  5. Yongjie yongjie说道:

    大佬我按照蚊帐的教程一步一步的去操作,ping v2ray.may*****.top 和文中显示一样,ping v2ray.may*****.top/ws/显示Bad Request也正常,但是客户端就是连不上服务器,服务器端的配置参考你的如下:
    {
    "log": {
    "loglevel": "warning",
    "access": "/var/log/v2ray/access.log",
    "error": "/var/log/v2ray/error.log"
    },
    "inbound": {
    "streamSettings": {
    "network": "ws",
    "wsSettings": {
    "path": "/ws/",
    "headers": {
    "Host": "v2ray.may*****.top"
    }
    }
    },
    "protocol": "vmess",
    "port": 10010,
    "settings": {
    "clients": [
    {
    "alterId": 0,
    "id": "00b93379-2d11-4392-****-52f1d7ea0148"
    }
    ]
    }
    },
    "routing": {
    "domainStrategy": "AsIs",
    "rules": [
    {
    "type": "field",
    "ip": [
    "geoip:private"
    ],
    "outboundTag": "block"
    }
    ]
    },
    "outbounds": [
    {
    "protocol": "freedom",
    "tag": "direct"
    },
    {
    "protocol": "blackhole",
    "tag": "block"
    }
    ]
    }

    客户端配置如下
    {
    "policy": {
    "system": {
    "statsOutboundUplink": true,
    "statsOutboundDownlink": true
    }
    },
    "log": {
    "access": "",
    "error": "",
    "loglevel": "warning"
    },
    "inbounds": [
    {
    "tag": "socks",
    "port": 10808,
    "listen": "127.0.0.1",
    "protocol": "socks",
    "sniffing": {
    "enabled": true,
    "destOverride": [
    "http",
    "tls"
    ],
    "routeOnly": false
    },
    "settings": {
    "auth": "noauth",
    "udp": true,
    "allowTransparent": false
    }
    },
    {
    "tag": "http",
    "port": 10809,
    "listen": "127.0.0.1",
    "protocol": "http",
    "sniffing": {
    "enabled": true,
    "destOverride": [
    "http",
    "tls"
    ],
    "routeOnly": false
    },
    "settings": {
    "auth": "noauth",
    "udp": true,
    "allowTransparent": false
    }
    },
    {
    "tag": "api",
    "port": 58773,
    "listen": "127.0.0.1",
    "protocol": "dokodemo-door",
    "settings": {
    "udp": false,
    "address": "127.0.0.1",
    "allowTransparent": false
    }
    }
    ],
    "outbounds": [
    {
    "tag": "proxy",
    "protocol": "vmess",
    "settings": {
    "vnext": [
    {
    "address": "v2ray.may*****.top",
    "port": 443,
    "users": [
    {
    "id": "00b93379-2d11-4392-****-52f1d7ea0148",
    "alterId": 0,
    "email": "t@t.tt",
    "security": "auto"
    }
    ]
    }
    ]
    },
    "streamSettings": {
    "network": "ws",
    "security": "tls",
    "tlsSettings": {
    "allowInsecure": false,
    "serverName": "v2ray.may*****.top"
    },
    "wsSettings": {
    "path": "/ws/",
    "headers": {
    "Host": "v2ray.may*****.top"
    }
    }
    },
    "mux": {
    "enabled": false,
    "concurrency": -1
    }
    },
    {
    "tag": "direct",
    "protocol": "freedom",
    "settings": {}
    },
    {
    "tag": "block",
    "protocol": "blackhole",
    "settings": {
    "response": {
    "type": "http"
    }
    }
    }
    ],
    "stats": {},
    "api": {
    "tag": "api",
    "services": [
    "StatsService"
    ]
    },
    "routing": {
    "domainStrategy": "AsIs",
    "rules": [
    {
    "type": "field",
    "inboundTag": [
    "api"
    ],
    "outboundTag": "api",
    "enabled": true
    },
    {
    "id": "4659372106250585022",
    "type": "field",
    "outboundTag": "direct",
    "domain": [
    "domain:example-example.com",
    "domain:example-example2.com"
    ],
    "enabled": true
    },
    {
    "id": "4619598472571593614",
    "type": "field",
    "outboundTag": "block",
    "domain": [
    "geosite:category-ads-all"
    ],
    "enabled": true
    },
    {
    "id": "5023461631667776794",
    "type": "field",
    "outboundTag": "direct",
    "domain": [
    "geosite:cn"
    ],
    "enabled": true
    },
    {
    "id": "4854155624867858395",
    "type": "field",
    "outboundTag": "direct",
    "ip": [
    "geoip:private",
    "geoip:cn"
    ],
    "enabled": true
    },
    {
    "id": "5214046018346267394",
    "type": "field",
    "port": "0-65535",
    "outboundTag": "proxy",
    "enabled": true
    }
    ]
    }
    }

    1. 言小五说道:

      @Yongjie yongjie 一眼看过,服务端配置文件没啥问题,客户端配置文件好像多了个没必要的email参数。具体应该看下WIN系统电脑使用v2rayN客户端,连接节点之后,查看客户端下方日志情况。

发表评论

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