利用v2ray WS(websocket) TLS cdn拯救被封banwagon IP并突破封锁

前情提要:

其实一点也不想折腾了,主要是太浪费时间了,但处在这样一个环境下如果不去做点事情改变一下恐怕又不是自己想要的答案(反正就是矛盾)。大家也都知道最近高考的事情,不知道的也就没必要知道了,知道了太多也不好啊。你需要知道的就是你的科学上网工具用不了,你以前用的恢复的方法不灵光了,你准备过一段时间再看看会不会好转,谁知过一段时间也没发生对你有利的变化,这时你坐立不安,准备看看还有没有其他办法,那么接下来我给大家临时提供一个方法,可能一时半会也达不到让你感叹一句“哇靠,这速度逆天了,油土鳖几十万的速度”,但可以让你被ban的IP恢复访问,让你可以科学上网的同时还能够稳稳的,然后等待解封(不过这句话说出来可能会打脸,我向来不惮以醉。。。。)。废话一箩筐,下面正式开始。

准备工作:

  1. 一台vps(哪家的不重要,我这里以搬瓦工举例,因为被ban了,当然没有被ban可不可以,当然可以,但我劝你一句“还是老老实实的用aisiaisi或酸酸乳之类的,套了cdn虽然一定程度上可以预防你的IP被ban,但速度上就不太友好了)

  2. 一个域名(免费和收费的都可以,一年也花不了几个钱,少抽一包烟,少喝一瓶饮料有了,当然了烟吗还是要抽的,饮料还是要喝的),这里我推荐一家免费的freenom

  3. cdn, 这里用的是 cloudflare , 你可以自己注册一下。

  4. 耐心,这个我觉得很重要,不要一碰到问题,就放弃了。

  5. 最好还要能够有一个美国的科学上网代理,这个自己找一下咯,相信你既然选择v2ray了,这个问题难不倒你的

  6. 说一下我 这边的搭建环境centos7.x, nginx, 怎么说呢,这篇不针对没有命令行操作基础的,如果贸然行动,中途产生的任何不适行为后果自负咯,还是推荐新手用233blog的一键脚本,我不用不是我不想用,是我服务器已经用了nginx作web服务器的网站,用它的脚本觉得有点多余了,反正吗,萝卜白菜,各有所爱。

整体过程:

  1. 申请免费 域名,当然了你有付费的域名也可以,不推荐国内域名:
    不知道哪里是注册新域名的入口,看下图:

1

然后输入你想要的域名,你可以发挥你的想象力来起一个,这里我以v2gay举例:

2

点上图中的Check Availability看是否可用

3

从上图的所有可用结果中选一个,这里我用.ml后缀的,那么就是v2gay.ml,点击check it now 开始结算:

4

按上图箭头所☞方向操作

5

按照上图选择一年的期限,然后点Continue按钮

6

上图开始输入邮箱进行验证,相信到这一步你应该还没注册账号,别急,从这一步开始就是了

7

一封邮件已进入你的邮箱,进入邮箱去验证,点击下图连接去验证一下:

8

接下来会让你输入一些个人信息:

9

这样你就拥有了一个一年有效期的免费域名,你可以到这里去管理你的域名:

10

  1. 好了,我感觉这样写下去我要吐血,现在给这个域名套上cdn,这样你所有通过客户端发来的请求要先经过cdn来中转,我也不知道我说的对不对,如果错误请大佬指正,我在此谢过了,cloudflare的注册我就不写了,我相信如果你看到了这篇文章,你也可以找到如何搞定他的文章,我这里就说一下如何添加网站,如何让cloudflare来接管你的域名以及一些注意事项:

进入仪表盘,添加你刚注册的域名,这里是 v2gay.ml ,

11

12

点击add site之后:

13

直接next,选择free

14

点击两次confirm:

15

开始解析:

16

上图中红色框框里分别输入你申请的域名和你的vps的IP地址,这个不用我说了吧
还是看下图吧:

17

其实到这里会不会有些小老弟会认为域名可以解析了,实则不然,因为你域名是在其他公司注册的,按道理你应该在其他公司解析,现在我们移花接木一下,把freenom的域名服务器改为cloudflare的,明不明白就那样吧,也许以后会的。
按上图添加好域名后,继续下一步:

18

我们来到freenom的后台,菜单如下:

Services→My Domains→Manage Domain

19

Management Tools

20

把cloudflare里给的域名服务器地址copy过来,黏贴到下图这里,然后点change nameservers:

21

22

然后再cloudflare仪表盘点continue:

23

接着就要等一会了,系统正在对域名进行判定,接着我们改一下域名的crypto:

24

把网站加密方式改为full,有可能你会说默认就是full啊为啥要改呢,那你点点其他菜单再回来看看还是不是full呢?照着改就行了:

25

至此我们域名申请和套cdn的设置告一段落,leisi了啊。

如何判定我们的域名已经解析成功了呢? 可以在Windows系统的开始→运行里输入cmd:
然后ping 域名(替换成你申请的域名),如过解析出ip就代表可以解析了,不管能不能ping通,这时IP还是你vps的IP,我们最后再把他变成cdn的IP。

26

  1. 接下来安装nginx,用来监听TLS的443端口,然后转发给V2Ray的WebSocket监听的端口,有点接力的感觉。

依次运行下面命令:

1
2
3
4
5
6
yum update
yum install epel-release -y
yum install nginx -y
systemctl start nginx
systemctl enable nginx
systemctl status nginx

是不是感觉还没开始就已经结束了,对就是这么快,😎,至于上面命令我为啥没写注释,我怕你们复制进去命令行啊,具体意思复制到百度里看一下什么就知道了。 这一步不出意外的话,你们把你们的vps的IP或域名输入到你的浏览器,应该可以看到一个nginx的默认页(如果IP没被封的话),还是提醒一下防火墙策略,开放80和443端口

27

  1. 这一步我们来搞一个ssl证书为我们的域名,用到了lets encrypt,当然了下面的命令都是开源社区的大佬们自动化好了的,我们要做的其实不多:

具体如何使用请参考certbot官网, 我这里直接给出命令:

1
2
3
4
yum install certbot python2-certbot-nginx
certbot --nginx certonly
certbot renew --dry-run
certbot renew

上面第二条命令需要你输入一个邮箱,然后大写的A,然后大写的N,最后数字1,这样你的证书就申请好了。
证书和密钥位置:

1
2
/etc/letsencrypt/live/your-domain/fullchain.pem
/etc/letsencrypt/live/your-domain/privkey.pem

上面可能还需要你把自动续签加到定时任务里,我这里就不做了,🙄

上一步我们安装了nginx,但还没有修改配置文件,在这里我们一并配置tls和v2ray,
首先,创建一个文件,并编辑:

1
2
touch /etc/nginx/conf.d/default.conf
vim /etc/nginx/conf.d/default.conf

下面是配置文件default.conf里的内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
server {
listen 443 ssl;
server_name your-domain; #配置文件里凡是有you-domain的要替换成自己的真实域名
ssl_certificate /etc/letsencrypt/live/your-domain/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
error_page 497 https://$host$request_uri;
location /gay/ { #这里就是针对v2ray配置文件的请求位置配置,并且这里要和接下来v2ray配置文件里的路径保持一致
proxy_redirect off;
proxy_pass http://127.0.0.1:port; #这里的port端口别和其他服务的端口冲突了,v2ray的服务端端口,也要和v2ray的配置文件的端口对应起来, 出现问题想一下防火墙对应的端口打开了没, 等我们安装了v2ray后会给我们一个端口,这里要改一下。
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
}
# note that these lines are originally from the "location /" block
root /usr/share/nginx/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
server {
listen 80;
listen [::]:80;
server_name your-domain;
return 301 https://your-domain$request_uri;
}

好了针对nginx的配置(TLS或者说WS)告一段落,接下来就是我们今天的主角“v2ray”,耐心看到这里的,日后必成大器,😋

  1. v2ray的安装和配置:

写到这里再啰嗦一句,没事可以把官方文档看一下,还有这个非官方文档, 有些东西我也讲不太清楚,需要你自己理解一下。

这里还有一些安装前的注意事项,可以看一下,没准你的问题就出在这上面,开始安装:

1
2
bash <(curl -L -s https://install.direct/go.sh)
systemctl enable v2ray

好了,就是这么简单,两条命令搞定,难在配置,安装成功把命令行输出的port和uuid复制到文本编辑器里,我们配置的时候会用到

28

接下来我们来改一下v2ray服务端的配置文件:

1
2
3
cp /etc/v2ray/config.json /etc/v2ray/config.json.bak
echo "">/etc/v2ray/config.json
vim /etc/v2ray/config.json

把下面配置复制到config.json文件里去:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
{
"log": {
"access": "/var/log/v2ray/access.log",
"error": "/var/log/v2ray/error.log",
"loglevel": "warning"
},
"inbounds": [{
"port": port, #上面保存到记事本的端口号
"listen":"127.0.0.1",
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "uuid", #上面保存到记事本的uuid
"alterId": 64
}
]
},
"streamSettings": {
"network": "ws",
"wsSettings": {
"path": "/gay/" #这里要和nginx配置文件里的location指令里的path对应起来
}
}
}],
"outbounds": [{
"protocol": "freedom",
"settings": {}
}
]
}

在测试我们的成果之前,我们要验证一下我们的配置都正确与否:

1
2
nginx -t
/usr/bin/v2ray/v2ray -test -config /etc/v2ray/config.json

29

30

启动nginx和v2ray并检查两者的运行状态:

1
2
3
4
systemctl start nginx
systemctl start v2ray
systemctl status nginx
systemctl status v2ray

如果命令返回都有Active: active (running)这种字符代表状态正常

之前我们在cloudflare添加网站的时候,我们添加解析A记录时是把小云朵点灰的,现在可以把他点成橙色了,这样就套上了cdn了

31

Crypto选项卡里,选择full:

32

好了,到这里我们的服务端的东西都配置完毕,下面是检查我们劳动成果的时候了,这里我只说明Windows客户端如何使用,其他的平台你们网上搜一下,很多的。

  1. v2ray windows客户端配置:

下载这个客户端, 并解压缩:

运行v2rayN.exe这个文件,添加VMess服务器:

33

配置如图:

34

配置好了后,点击确定,测试下可以用不:

先右键客户端,启用http代理:

35

参数设置,v2ray设置,自定义GFWList地址,填入: 右键复制我

36

更新PAC,这里也可以看一下是否能更新成功,如果没问题的话,说明你已经可以访问互联网了:

37

38

至于安卓和其他平台的你们网上搜一下,很多教程的,好了到这里我们已经 实现了v2ray结合其他技术拯救被封ip和实现科学上网,文章中如有表达不合理的地方还请指正,也欢迎留言讨论你的折腾之路

这里分享一下如何知道我们nginx里关于v2ray的请求路径配置是否正常了呢?

39

生活不止眼前的苟且,还有那片海