V2Ray使用Cloudflare绕过IP封禁
发布时间:
最后更新:
正直某大事前夕,网络的审查越来越严,再加上我一直用IP直连我的般瓦工服务器,这下可好,直接被检测到并封禁了IP。
般瓦工是不能在IP被封禁的情况下迁移服务器的(真垃圾,我怀疑它们的业务是不是只有梯子,这么关心IP被封)。虽然可以给钱换IP,但这治标不治本,换了还会再封。
在等了三天之后仍无丝毫解封迹象,我决定自己动手解决这问题,于是便有了此文。
实现原理 #
简单说一下这种方案的原理,首先 Cloudflare 是全球最大的CDN厂商,它的IP肯定是不会被封,因为有太多正规
网站都用它,为了拆梯子把它封了是得不偿失的。
Cloudflare 有免费套餐,可以把自己的域名给它解析,之后所有的访问都会转到它的代理服务器上,它在把这些访问转发到真正的服务器。Cloudflare的线路很丰富,不可能被你封禁IP所影响,所以这么绕一下即可规避掉IP封锁。
当然,除了IP人家还能污染你域名……不过只要把Cloudflare的服务器IP加到Hosts文件里即可解决。
不过Cloudflare能到里面来做生意,自然要遵守一些规矩
的,比如它只能接受80和443端口的访问,其它端口全被封了……这要求我们的代理软件必须支持HTTP相关协议的连接,SS肯定不行,但V2Ray支持丰富的协议正好能够解决这个问题。
Cloudflare配置 #
首先去Cloudflare注册一个账号(这就不讲解了),然后点右上角的Add site
。如果它的网站没有出新版,那么你应该看见这个界面:
这里输入你的域名就好,注意必须输入一级域,就算你只想让v2ray.xxx.com
走Cloudflare代理,你也得让Cloudflare接管整个xxx.com
。
之后选择套餐,你要有钱可以选贵的,我倒是只用那个$0的。
第三步是修改域名解析服务器,让Cloudflare接管域名的解析。
在Replace with Cloudflare's nameservers部分会给两个域名,把它们填入域名。我这域名是在NameSilo注册的,结果如下图,注意原本的服务器有三个,但Cloudflare只给了俩,多余的要删掉:
改完了点下面的 Re-check 按钮,它会让你等它检查完,一般来说生效都挺快的,你可以等几分钟刷新一下看看,如果好了就会显示下图:
之后进入控制面板,点上面的DNS,然后点击Add Record,在出来的面板里填上子域名和IP之后保存,到这里Cloudflare的设置就完成了。
有几个教程里说要先把云朵点灰然后再点回来,这是为了让此期间服务器的IP还是原始的,可以直连。但我这情况已经是IP被封无法直连(至于怎么操作服务器见附录),所以没有必要做这些。
V2Ray配置 #
下载安装我就不说了官网就有,官网被墙了就看GitHub上的教程(不要告诉我GitHub也被墙了)。这里就说下V2Ray的配置文件,首先是服务端的配置:
{
"inbounds": [
{
"port": 80,
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "<GUID>",
"alterId": 64
}
]
},
"streamSettings": {
"network":"ws"
}
},
],
"outbounds": [
{
"protocol": "freedom",
"settings": {}
}
]
}
端口设置为80,因为Cloudflare服务器的80端口会自动代理到你的服务器上的80端口,当然要是想用TLS的话就是443了。其中的<GUID>
你得自己生成一个。
需要提醒下的是Cloudflare免费版不支持自定义端口,比如它的80端口转发到你的6666端口。这让我很意外,我觉得这应该是个很容易实现又很基础的功能,结果还必须要商业版才有,不得不佩服Cloudflare的阉割刀法。这也意味着服务器的端口肯定是要占用的,如果在80端口上还跑了网站的话就得做反向代理。
接着是客户端的配置:
{
"inbounds": [
{
"port": 1080,
"listen": "127.0.0.1",
"protocol": "http"
}
],
"outbounds": [
{
"protocol": "vmess",
"settings": {
"vnext": [
{
"address": "<域名>",
"port": 80,
"users": [
{
"id": "<GUID>",
"alterId": 64
}
]
}
]
},
"streamSettings": {
"network": "ws"
}
}
]
}
客户端基本上跟服务端一样,这里inbounds
可以根据自己的情况改改,outbounds
里填上自己的域名,GUID记得跟服务端的一样即可。
接下来启动V2Ray试试能不能访问国际网站,如果成功就大功告成了!
其它注意事项 #
关于TLS #
很多教程里都推荐使用 TLS + WebSocket,但V2Ray的Vmess协议本身就是加密传输的,再套一层并不能提高数据的安全性,反而还增加解密消耗。而且我用了俩月的非TLS还没出任何问题。
不过加上TLS的话连WebSocket握手部分也是加密的,可以暴露更少的信息,至于是不是用还看你自己的喜好了。
IP被封如何操作服务器 #
有一台没被封IP的机子做代理让SSH连接是最好的,但不幸的是我正好只有这一台,所以只能用点技巧了……
VPS服务商提供的控制面板里有个简单的控制台,用它来安装V2Ray并启动。可惜这控制台运行不了Vim,于是只能在本地先写好配置文件,然后上传到GitHub等公共平台上,再用wget
来下载。如果上传的文件公开可见就别忘了成功之后把GUID给改一下,以免泄露。