2020年10月31日更新:
搬瓦工vps的IP被封(11)BT宝塔面板+V2Ray+WebSocket(ws)+TLS+Nginx+Cloudflare

2020年10月29日更新:
此方案已经失效,原因是v2ray.fun面板调用的是v2ray官方原脚本https://install.direct/go.sh,该脚本已被v2fly官方删除,而v2ray.fun面板作者在v2ray.fun的安装脚本中未更新新的官方脚本地址,导致无法安装v2ray,进而导致所有基于v2ray.fun的操作全部被推翻。

以下是原文,除开v2ray.fun面板的设置,其它依旧可供参考。可能在某一天,我会写一篇新的文章

前言一:IP被封的检测和解决思路已经写成系列文章,建议在按照文章步骤操作时先看一下这篇文章《搬瓦工vps的IP被封(0) 前言及日志目录》,也许看完这篇文章,可以少走一点弯路。

为什么写前言,因为前言很重要,里面包含了我遇到了哪些问题以及解决的思路。很多网友只是单纯的利用搜索引擎找到我写的某篇文章,然后也不知道有没有具体去看完,就发留言或者邮件跟我说,“哎呀,博主,我遇到了问题。”、“博主,你看我用这种方式为啥还是不行呢?”诸如此类的。

前言二:有不少网友问我,“博主,我只有一台vps,搭建了网站和v2ray,现在IP被封了,网站打不开,v2ray 也连不上了,怎么办?”我之前都是建议直接放弃其中一个环境,也就是说要么挽救网站,要么挽救v2ray,然后坐等解封就行了;但是,时不时还是有网友留言或者发邮件来问我。其实用谷歌搜索相关关键字,很容易找到相关教程;好吧,我还是写一下吧,为此,特意找了一台vps来搭建环境,使用Cloudflare中转网站及v2ray的流量。

本文的方式是在vps上安装宝塔面板并搭建Lnmp网站环境,网站搭建好之后,使用Nginx对V2ray流量进行分流,通过网站来伪装V2ray的流量。假如vps的IP被封了,那么可以利用Cloudflare中转网站以及V2ray的流量,来达到访问网站以及科学上网的目的。

文中“网站”均以WordPress为例,其它CMS框架也可以参考。

PS:我个人不建议用这种方式,如果IP没有被封,我不建议在同一台vps上搭建网站和v2ray;如果IP被封了,我依旧建议挽救其中一个就行了。

以下正文:

准备工作如下:
1、将域名解析到vps的IP;

1.1、如果IP被封了,需要将域名的DNS服务器更换成Cloudflare的DNS服务器,并且把需要解析的域名解析到vps的IP上,注意:小黄云要成灰色状态,也就是DNS only;
(参照《搬瓦工vps的IP被封(4) Cloudflare+V2Ray+Caddy+WebSocket+TLS》
1.1.1、本博客使用的域名是在NameSilo注册的,输入本站域名“eveaz.com”或者“eveaz”可以直减1美刀;阿里云域名注册、其它渠道或者免费域名请自行搜索。
1.1.2、没注册域名的网友或者在NameSilo上注册了域名但是不会更改NS服务器,请移步《言小五系列教程之NameSilo域名注册&续费&管理》

1.2、如果IP被封了,需要准备一个没有被封IP的vps或者一个可用的上网节点用于SSH连接vps以及打开宝塔面板;参考下方文章:
《搬瓦工vps的IP被封(2) Xshell如何设置代理SSH》
《搬瓦工vps的IP被封(5) Xshell如何使用V2RayN客户端代理SSH连接vps》
《搬瓦工vps的IP被封(6) Xshell如何使用ss客户端代理SSH连接vps》
1.2.1、如果找不到合适的可用节点,又或者不想为了vps的IP被封的事情来回折腾,建议购买搬瓦工自建机场Just My Socks的 ss & v2ray 节点,无需担心IP被封,三网CN2 GIA线路。
Just My Socks方案如下:

方案名称带宽流量地区设备限制价格购买
LA 5002.5Gbps500G/月洛杉矶5个$5.88/月链接
LA 10005Gbps1T/月洛杉矶不限制$9.88/月链接
London 5002.5Gbps500G/月伦敦5个$6.8/月链接
London 10005Gbps1T/月伦敦不限制$11.29/月链接
Tokyo 100100Mbps100G/月东京3个$29.99/月链接
HK CMI+NTT Plan 5002.5Gbps500G/月香港5个$8.99/月链接
Hong Kong 100100Mbps100G/月香港3个$34.99/月链接
IPLC HK BUSINESS 100100Mbps100G/月深圳-香港3个$15/月链接
IPLC HK 300 V2300Mbps300G/月深圳-香港3个$21/月链接
综合优势:IP被封后台自动更换新的IP,即买即用,提供shadowsocks和v2ray节点,支持UDP流量。
购买教程:言小五系列教程之搬瓦工Just My Socks详细购买及使用教程与优惠码
相关评测:BandwagonHost搬瓦工官方机场Just My Socks的网络质量怎么样?
其它说明: IPLC 为深圳三网入口,香港出口,无需审查(不过墙),解锁ChatGPT。

2、将vps重装至Centos7;

目前搬瓦工最有性价比的几款VPS

机房线路内存CPUSSD流量带宽价格购买
洛杉矶DC3电信CN2 GT1G1核20G1T/月1Gbps$49.99/年链接
洛杉矶DC4联通直连1G2核20G1T/月1Gbps$49.99/年链接
洛杉矶DC3移动直连1G1核20G1T/月1Gbps$49.99/年链接
日本大阪软银线路512M1核10G500G/月1Gbps$69.99/年链接
洛杉矶DC6三网CN2 GIA-E1G2核20G1T/月2.5Gbps$169.99/年链接
日本大阪软银线路1G2核20G1T/月2.5Gbps$169.99/年链接
相关教程:言小五系列教程之BandwagonHOST(搬瓦工)的vps购买及使用教程&优惠码

步骤如下:
3、vps上安装宝塔面板,安装Lnmp环境,搭建WordPress网站;(这里只叙述过程,不作演示!!!)
3.1、SSH连接上vps,安装宝塔面板6.x;
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

##如果IP被封了,建议用下方的宝塔官方美国备用节点:
yum install -y wget && wget -O install.sh http://128.1.164.196:5880/install/install_6.0.sh && sh install.sh

3.2、登陆宝塔面板,一键安装Lnmp环境:根据vps配置自行选择,例如:
Nginx 1.15/MySQL 5.5/PHP 7.0/pure-Ftpd 1.0.49/phpMyAdmin 4.7

3.3、搭建WordPress网站并申请https证书,确保网站能够通过 https://域名 打开,宝塔网站管理SSL选项开启强制HTTPS;

4、安装配置V2ray;
4.1、SSH里面运行脚本安装V2ray.fun面板:(安装完毕之后在SSH界面输入 v2ray 即可管理面板)
wget -N --no-check-certificate https://raw.githubusercontent.com/FunctionClub/v2ray.fun/master/install.sh && bash install.sh
安装到最后会提示
请输入默认用户名(默认admin):可自行修改,举例为默认;
请输入默认登陆密码(默认admin):可自行修改,举例为默认;
请输入监听端口号(默认5000):可自行修改,举例为默认 ;

4.2、宝塔面板 “安全” – “防火墙” 放行上面的V2ray面板监听端口(默认5000);

4.3、登陆V2ray.fun控制面板;登陆方式是:IP:5000,输入账号(admin)、密码(admin)登陆;
控制面板 – 修改连接 :
协议类型:VMess;
主端口:10086;(端口号自行修改,后面会用到)
UUID:默认;(可点击旁边的按钮生成)
加密方式:(auto);
传输协议:WebSocket;(点击修改的时候会提示输入域名,下方有写)
TLS:默认关闭;(默认的就是关闭状态,别管它!!!)
Mux.cool:默认关闭;(默认的就是关闭状态,别管它!!!)

4.3.1、修改传输协议为 WebSocket 时会提示输入域名;

我这里添加域名是v2ray.eveaz.com,自行根据需要更改;然后点击确认,之后v2ray.fun面板页面可以关掉了;

4.4、添加V2ray的ws path 路径;
4.4.1、编辑 /etc/v2ray/config.json 文件,进入编辑界面,就在前几行,修改”path”: “”,为”path”:”/ws/”, ,这里的“/ws/”可以自行修改,但是要跟后面的操作一致;”Host”: “v2ray.eveaz.com”,其中v2ray.eveaz.com改成自己的域名;
修改前:
"inbound": {
"streamSettings": {
"network": "ws",
"wsSettings": {
"path": "",
"headers": {
"Host": "v2ray.eveaz.com"
}
}
},
"protocol": "vmess",
"port": 10086,
"settings": {
"clients": [
{
"alterId": 100,
"security": "auto",
"id": "375bc108-8f08-45e0-8478-0120a4864aff",
"level": 1
}
]
}
},

修改后:
"inbound": {
"streamSettings": {
"network": "ws",
"wsSettings": {
"path": "/ws/",
"headers": {
"Host": "v2ray.eveaz.com"
}
}
},
"protocol": "vmess",
"port": 10086,
"settings": {
"clients": [
{
"alterId": 100,
"security": "auto",
"id": "375bc108-8f08-45e0-8478-0120a4864aff",
"level": 1
}
]
}
},

5、打开宝塔面板,在网站配置文件的最后一个“}”之前添加如下参数;要注意,是location /ws ,不是location /ws/ ;proxy_pass http://127.0.0.1:10086; (这一行中的端口10086跟前面4.3步骤在V2ray.fun面板修改的主端口一致)
location /ws {
proxy_redirect off;
proxy_pass http://127.0.0.1:10086;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
}

截图如下:

6、宝塔面板 “安全” – “防火墙” 放行放行V2ray主端口也就是举例中的 10086 ;

7、在宝塔面板里面重启Nginx,在SSH里面重启V2ray;重启V2ray的命令如下:
service v2ray restart
7.1、2020年07月25日补充:
这时候在浏览器中打开伪装域名v2ray.eveaz.com,显示的是wordpress网站;
打开v2ray.eveaz.com/ws/,显示的是 Bad Request。如果不是,按文章步骤4.4和步骤5重新检查一遍。
还需要注意:这两个链接都是强制https打开的。

8、Win系统使用V2rayN客户端,添加VMess服务器,按照步骤4.4.1中的相关参数填写;
强调一下,参数参照下方截图中填写,端口是443!!!

9、如果IP没有被封,那么按步骤操作的话,在v2rayN客户端面板更新v2rayCore至4.20.0、更新PAC规则、启动系统代理就可以科学上网了;

10、如果IP被封了,不用Cloudflare的CDN是无法科学上网的;那么继续按步骤操作;
10.1、在Cloudflare的域名控制台,Crypto选项(“Crypto”选项卡也叫“SSL/TLS”,图标没变,选项卡位置也没变。)确认 Universal SSL Status 状态为 Active Certificate;SSL方式改为Full;

10.2、在DNS选项下面把域名解析的小黄云点亮;

10.3、这个时候,v2ray以及网站已经开始走Cloudflare的CDN流量了,意思就是说可以科学上网了,网站也可以打开了;但是,还需要对CDN的缓存做一些设置,才能让WordPress网站的后台能够正常访问;(之所以需要设置,是因为如果不设定规则的话,后台wp-admin页面会被CDN缓存,那就只能访问网站前台而无法进入后台了);
10.4、点击Page Rules 进入缓存设置页面,点击右方的 Create Page Rule 创建页面规则;

10.4.1、点击Create Page Rule会弹出一个小窗口,有一个输入域名的页面;

10.4.2、输入域名之后,点击 Add a Setting 新增规则;注意:免费版只能添加三个规则;
10.4.3、第一个规则,首页缓存规则:https://v2ray.eveaz.com/* ;永远在线 Always Online:On;缓存等级 Cache Level:Cache Everything (首页全部缓存);缓存时间 Edge Cache TTL:a month(一个月);点击 Save and Deploy 保存并部署;

10.4.4、第二个规则,后台缓存规则:https://v2ray.eveaz.com/wp-admin* ,缓存等级 Cache Level:Bypass,优先顺序级别为默认 First ;点击 Save and Deploy 保存并部署;

10.4.5、第三个规则,评论页面缓存规则:https://v2ray.eveaz.com/*comment-* ,缓存等级 Cache Level:Bypass,优先顺序级别为默认 First ;点击 Save and Deploy 保存并部署;

10.4.6、三个规则添加完成之后是这样的:

10.5、最后一步:在WordPress网站后台安装Cloudflare插件及配置;
10.5.1、在网站后台插件中心搜索Cloudflare,安装并启用;

10.5.2、打开Cloudflare插件设置界面;点击中间的 Sign in here;

10.5.3、进入到插件登陆页面;这里需要用Cloudflare的登陆邮箱及API Key登陆;点击下方的Get your API Key from here;

10.5.4、会弹出一个小窗口,这是Cloudflare的API界面(如果浏览器没有登陆到Cloudflare的话需要输入账号密码登陆一次);点击API Tokens,点击API Keys下方的Global API Key 右边的View;根据提示输入Cloudflare的密码和验证码;

10.5.5、输入Cloudflare的密码和验证码之后API Key就显示出来啦;复制API Key;关闭小窗口;

10.5.6、关闭小窗口之后应该回到10.5.3的登陆页面了(如果没有回到登录页面,就自己走回去-,-),输入Cloudflare登陆邮箱和API Key就进入插件设置界面了;把最下面的Automatic Cache Management 开关点成On状态就行了;意思就是网站内容更新自动更新CDN的缓存;

10.5.7、Cloudflare插件配置延伸:如果你的站点被攻击了,可以在插件里一键开启Cloudflare著名的5秒盾;点击插件右上方的“Enable “i’m Under Attack” Mode” 就行了(没事别点这个5秒盾,开了5秒盾,网站是相对安全了,但是v2ray连接会报错)。

效果如下:

11、v2ray.fun面板在这篇文章中唯一的作用就是方便生成或者修改v2ray参数,并不需要用它来开启tls和Mux.cool。

12、2019年10月01日补充:
有网友使用LEDE软路由 v2ray for openwrt – 2.3.7 插件进行上网的,以往都是先导出vmess链接,然后再到插件里面直接导入vmess链接添加节点,但是按照本文的Nginx方案安装运行之后,无法通过vmess链接直接导入,以至于不能上网。我在下方提供一个插件的v2ray.json模版,按照自身参数进行修改就行了。
需要改4个位置:
"address": "v2ray.eveaz.com",
##将v2ray.eveaz.com改成自己的域名
"id": "49680fd8-20fa-4ee6-a4a8-e8cee5b911ea",
##将49680fd8-20fa-4ee6-a4a8-e8cee5b911ea改成自己的id,这个id也叫uuid
"serverName": "v2ray.eveaz.com"
##将v2ray.eveaz.com改成自己的域名
"Host": "v2ray.eveaz.com"
##将v2ray.eveaz.com改成自己的域名

v2ray.json模板如下:
{
"outbound": {
"protocol": "vmess",
"settings": {
"vnext": [{
"address": "v2ray.eveaz.com",
"port": 443,
"users": [{
"id": "49680fd8-20fa-4ee6-a4a8-e8cee5b911ea",
"alterId": 100,
"security": "auto"
}]
}]
},
"streamSettings": {
"network": "ws",
"security": "tls",
"tlsSettings": {
"allowInsecure": true,
"serverName": "v2ray.eveaz.com"
},
"tcpSettings": null,
"kcpSettings": null,
"wsSettings": {
"connectionReuse": true,
"path": "/ws/",
"headers": {
"Host": "v2ray.eveaz.com"
}
},
"httpSettings": null
},
"mux": {
"enabled": true
}
}
}

53 thoughts on “搬瓦工vps的IP被封(8) V2Ray+WebSocket(ws)+TLS+Nginx+网站+Cloudflare

  1. 殷向阳说道:

    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://**.*****.tk/ws/): > x509: certificate signed by unknown authority] > v2ray.com/core/common/retry: all retry attempts failed
    这是怎么回事啊大佬

    1. 言小五说道:

      @殷向阳 x509: certificate signed by unknown authority是证书错误。如果你在nginx里面安装的ssl证书是cloudflare的,那么需要在cloudflare里面点开代理开关。文章已经写的比较清楚了,在最后需要重启nginx和v2ray。

  2. ZDZ说道:

    您好,大神,按照您的教程,WIN7+CHROME+V2RAYN,连接出现以下错误代码,请问是什么原因,应该怎么解决,谢谢!
    [Warning] failed to handler mux client connection > 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
    (ws://vv2019.********.com:433/ws/): > dial tcp 104.18.53.143:433: i/o timeout] >
    v2ray.com/core/common/retry: all retry attempts failed
    2019/11/22 10:00:18 tcp:127.0.0.1:52976 accepted tcp:mail.google.com:443 [proxy]

    1. 言小五说道:

      @ZDZ vv2019.********.com:433/ws/ 域名后面跟着一个443端口是什么鬼?

      1. lmsorry说道:

        @言小五 老哥,我的错误和他的有点类似,能帮我看看哪里出错了吗,好痛苦
        2020/07/25 17:12:29 [Warning] [1862377146] 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://hostwinds.*****.ml/lm): > read tcp 192.168.31.93:57421->104.168.***.***:443: i/o timeout v2ray.com/core/transport/internet/websocket: failed to dial WebSocket > v2ray.com/core/transport/internet/websocket: failed to dial to (wss://hostwinds.*****.ml/lm): > dial tcp: operation was canceled] > v2ray.com/core/common/retry: all retry attempts failed

        1. 言小五说道:

          @lmsorry 很简单,hostwinds.*****.ml/lm这个链接使用浏览器打开显示404,而且不是强制https链接,正常情况下,打开这个链接应该显示Bad Request;也就是说你的nginx本机端口转发没生效,检查一下nginx配置。

          1. lmsorry说道:

            @言小五 十分感谢,可以连上了。可(v2ray ws+TLS+Nginx)youtube速度只有80+Kbps。v2ray h2有几百Kbps。在ssh里测速下载有700Mbit/s,上传有200Mbit/s。是不是我哪里没有设置对,还是没有配置加速是正常现象。哪种方式速度能快一点

            1. 言小五说道:

              @lmsorry 如果你的IP是被封了,那么搜索一下CF自选IP;如果IP没有被封,那么亦可参考。你这个测速脚本可能不是实际测速,建议换别的脚本。vps自身网络加速参考bbr、bbrplus和锐速。

  3. EasyGod说道:

    请问在被屏蔽的服务器上怎样通过宝塔安装lnmp环境?由于IP被封锁,导致无法连接宝塔的下载链接。或者有国外的比较方便的面板吗?

    1. 言小五说道:

      @EasyGod 这个问题问的好。

      1. easygod说道:

        @言小五 其实也可直接使用80端口。虽然这样直接放弃网站,但是免去了很多步骤,

        1. 言小五说道:

          @easygod 那说说我写这篇文章是为啥呢?

    2. MaxPeng说道:

      @EasyGod 宝塔面板不是有美国的备用服务器吗

  4. 萌新说道:

    大佬你好,不知道你最近有没有测试这个方案,我昨天试了下,宝塔面板的下载源服务器在国内,然后VPS被墙之后连不上国内的下载源,导致宝塔面板的所有插件服务全都无法安装,没法进行下一步设置,请问有什么解决办法么?

    1. 言小五说道:

      @萌新 文章前言二中已经说的很明白了。

  5. xtvants说道:

    TCP直連,那不就不需要cdn了,沒有cdn會和諧?
    我的ip已經被封了,一定要用cdn呀!

    1. 言小五说道:

      @xtvants 那就不要什么自行车了吧?

发表评论

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