这几天墙貌似升级,之前的SS全部被封杀,没办法,只好v2ray一把了。把整个历程记录一下,以备今后架设使用。顺道感谢一下,万能的胖仔,为我提供技术支持。
先贴个文档,简易版V2ray手册,说简易,其实也不简易,挺多的,耐着性子看完了。实在是没心情再看官方的document了,这个差不多就够了。
原理篇
原理上,和SS一样,都是为了和墙大作战,不过,比SS更强大和复杂,所以可以更好地对抗墙:
简单来说,SS 功能单一,V2Ray 功能强大。听起来似乎有点贬低 SS呢?当然不!换一个角度来看,SS 简单好上手,V2Ray 复杂配置多。
我的理解,就是客户端建立一个到v2ray主机的通道,上面跑VMess协议,然后到了服务器端解密解包,然后帮助路由出去,回来的包再按照这个路数回来即可。
{浏览器} <--(socks)--> {V2Ray 客户端 inbound <-> V2Ray 客户端 outbound} <--(VMess)--> {V2Ray 服务器 inbound <-> V2Ray 服务器 outbound} <--(Freedom)--> {目标网站}
除了加密,就是伪装了,这个很赞,V2ray可以伪装成各类协议,比如伪装成一个web服务器,也可以伪装成用一个tcp的标准服务、STMP的流媒体、甚至是微信的视频服务器啥的,一堆选择,总有一款适合您。当然TLS支持是必须滴。
不过胖仔告诫说,如果犯懒使用tcp或者KCP,就跟之前的SS没啥区别,就跟裸奔一样,一定要伪装成,TLS的Websocket服务器,这样,才可以躲避万恶的墙的扫描。最好再准备一个宣扬我党政策的大主页,就绝对安全了,哈哈。
服务端配置
我犯懒,直接谷歌了一个教程,一键安装之,很不错,还有个shell菜单引导你,省去了配置修改config.json,不过,你最好还是提前通读一下简易配置文档先。
我本来一键式用最简单的方式,也就是tcp,设置的,都没搞啥KCP协议,恩,很快就跑起来了,然后安装了V2RayX,通了,很高兴。(细节大家就读这个小哥哥的文档即可,还是写的很赞的)。
然而,胖仔恐吓我,说,这种方式跟裸奔没啥区别,必须要TLS+WebSocket方式,寻求终极安全。鉴于这两日被墙强奸的痛楚,就只好硬着头皮去鼓捣tls+ws方式。感谢热心似火的胖仔,给我提供了爽爽的一键安装脚本,满心欢喜运行一把,fail了,细看,应该是因为胖仔这个是for Ubuntu的,我的是CentOS,没关系,读读脚本,自己搞定,否则,再去滋扰人家,多不好意思啊。
细看了一下,其实也不难,大致流程就是:
- 装个Nginx
- 申请个免费的TLS证书,改造自己的服务器成为https
- 然后把nginx的websocket请求代理给本地的v2ray的端口为10000的服务
- v2ray端配置成Webscoket+TLS方式即可
nginx就不用说了吧,yum直接搞定。
就是先调用~/.acme.sh去申请个证书,acme是啥,是一个免费提供TLS安全证书的脚本,细节也没兴趣搞了,感兴趣可以去看看这篇,恩,随便搜了一篇贴给你。
然后,胖仔的脚本帮助生成了一个SSL的配置,真好,省去的我这个SSL配置盲的工夫。
然后就差配置v2ray了,于是,我有启动小哥哥的配置脚本,菜单上一选,搞定。
好啦,重启v2ray、nginx服务,然后,去配置客户端喽。
新服务器配置流程
前面讲的有点乱,把配置过程重新捋一捋:
- 先改成证书登录
ssh-copy-id -i ~/.ssh/id_rsa.pub root@IP
# 取消sshd的密码登录
# vim /etc/ssh/sshd_config
PasswordAuthentication no
ChallengeResponseAuthentication no
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
- 配置你的域名
去DNS域名配置的网站,配置上A记录:IP <-> 域名,这个是为了给服务器配置一个域名, 域名一定是要有的,因为https服务需要的证书,需要绑定一个固定域名,如果没有,买个去吧,推荐狗爹goddady。
- 安装必要工具
一般初始服务器都很干净,需要装一些工具,我的是centos7:
yum install -y vim # vi实在难用
yum install -y net-tools # ping啥的
yum install -y lrzsz # 上传下载的小工具
yum install -y wget
- 去服务器上,安装nginx
我的是centos7,yum源不带nginx,所以需要用epel:
yum install epel-release
yum install nginx
备份原有配置,使用我提供的配置nginx.conf,主要是设置证书和websocket的路径。 然后先别着急重启nginx服务器呢,等下面的证书安装完成后再重启。
- 安装证书
运行我提供的cert.sh,他会运行acem的脚本去为你申请一个证书,命令需要一个参数,就是你的域名, 运行完后,会在/etc/v2ray/目录下创建你的证书,并且把更新证书的命令放到cron里,当然这些都是自动化的。
cert.sh YOUR_DOMAIN_NAME
然后,就可以重启nginx服务了,systemctl restart nginx
,如果正常的话,去你的浏览器,敲入你的https://你的域名,就可以正常访问你的网站了,这就说说明你的证书有效了。
- 安装v2ray
wget https://install.direct/go.sh
chmod +x go.sh
./go.sh
然后备份/etc/v2ray目录中的config.json,使用我提供的配置文件config.json, 注意1点,使用就配置中的那个id,就是很长的那个uuid。 这个uuid是一个自动生成的,当然你也可以重新生成,但是不如就用最开始安装生成的那个。
然后重启服务systemctl restart v2ray
。
- 最后,安装一个bbr,这是一个帮助加速网络的脚本,主要是优化了tcp协议栈的处理,也是一键式的:
./bbr.sh
这个安装完需要重启。
客户端
我发现了2个客户端,一个是v2rayX,一个v2rayU,抱歉,都是for Mac的,如果您需要windows的,自行谷歌吧,哦不,自行百度吧。
客户端其实和服务器端没啥区别,你去官网下载的话,其实,就是很对付的给你弄一个交叉编译版本,比如mac、windows版本而已,你还是去人肉编辑config.json,好变态,所以,v2rayX/v2rayU,就给你给套了个配置的壳子,好用多了。其实,底层还是包了个v2ray内核。
V2rayU,我没有使用,这里只说说V2RayX的设置吧,V2RayU自行对比设置吧。
V2RayX的设置
V2rayX很好用,而且这篇文档也讲的很清楚,我就不贴图了,仔细阅读即可。我这里丹丹说说websocket+TSL的配置吧。
- Address:地址不能写IP了,要写一个域名,建议走一个info买的便宜域名,别用国内自己常用的域名,防止喝茶
- Port:端口,恩,443,TLS嘛
- Network:这里选择Websocket即可
- 然后点开“transport setting…”,配置2个地方:
-
- Websocket path是你服务器上的websocket对外服务的路径,比如/mymsg 在”header”里面输入{“Host” : “xxx.yourdomain.info”},恩,你绑的域名
-
- TLS 勾选Use TLS,然后在Server Name处填入”xxx.yourdomain.info”
恩,差不多了,然后把log level改成debug,暗中观察日志即可,有错排错,谷歌之即可。
遇到的一些问题
- 别忘了绑定的主机到一个域名,恩,买个info的,防止喝茶
- nginx配置过程中,主要是websocket服务要绑定个路径,这个其实可以通过chrome浏览器就可以测试(其实,万恶的墙也是这样来侦测你的),方便排查
- 没事就观察v2rayx的客户端日志、v2ray服务器端日志、nginx日志,然后股沟之,一般问题都轻松搞定
关于主机/VPS
如果你要买主机,首推谷歌的免费的主机,白送你一年的试用,详细请看这里
如果你想买其他的,我知道的只有搬瓦工和NFPHost,不过我的两台VPS都阵亡了,最近不曾使用他们了。我还去问了一下搬瓦工客服,说换个ip大概需要50块钱人民币左右,呵呵,暂时先算了,看看未来可以自动解封么。。。
我一般都买个100元RMB上下的,就够了,太贵的也没啥必要。不过以后再买,就直接搞v2ray了。
使用CloudFare加速啦!
还是这篇教程,里面讲的很清楚,如何建立cloudflare的加速,其实,就是让你先去访问cdn,通过cdn缓存v2ray的数据,从而达到加速的目的。
教程讲的很清楚,我就补充一些内容吧:
使用worker方式代理
这个教程里提到加速方式是“worker”方式,说白了,就是直接在网页里嵌入一段js,然后,cloudfare会给你代理的域名一个代理域名,你访问的时候,就访问这个代理域名,代理域名会把你要的页面发给你,并且缓存。这种方式的好处是,你对目标网站相关的内容不需要做任何修改。
不过,这种方式,需要对v2ray客户端进行修改:
- 把v2ray的host地址,改成这个cloudfare给你生成的代理地址,形如:late-waterfall-1a2b.xxxxxx.workers.dev,xxxxxx就是你的cloudfare的work名字
- 在websocket的header要把伪装主机改成这个名字:
{ "Host" : "late-waterfall-1a2b.xxxxxx.workers.dev" }
然后,再试试,OK啦,去油管上测试一下视频,果然快了很多啊。
使用DNS方式代理
除了这种worker的方式,其实还有一种更好的方式,至少我是认为更好的,这个好处是,这个域名是对外的,任何访问这个域名的人,都会被Cloudflare加速。
参考这篇,在cloudflare里,创建你的域名加速。cloudflare的wizzard还是很有好的,你可以按照他的步骤很容易地设置起来你的域名的CDN。
麻烦点的是,他需要接管你的DNS解析,把之前你在别地方的DSN解析替换掉,换成cloudflare的。这就需要你去你的DNS购买提供商那里把naming server从原有的解析服务器替换成cloudflare的。
其他的都很简单,剩下的就是静静等待,有个半天就生效了,生效以后你可以看到的ip已经被proxy了。
另外,cloudflare的免费服务每天可以有10万次,不过对我们来说,足够了。
挑选一个最牛逼的代理
生命不息,折腾不止,教程里面会让我们继续折腾,就是找一个cloudflare最快的主机,啥意思?我们知道,CDN就是在你要访问的时候,截获你的访问,把你导向到一台缓存服务器,cloudfare其实准备了无数这样的服务器,我们得找出一台最快的,然后固定住它,一直就用它啦,多好啊。
开搞,首先得搞一份所有的cloudfare的CND服务器列表,大神们已经干了这事了,可以参照这个脚本,不过,是个bat,而且附带的也是个fping.exe,可是我的是mac啊。
好在是胖纸已经帮我搞了一份这个ip.txt了,而我只需要brew install fping
,然后跑一下这个脚本,就可以得到最快的IP啦:
fping -f ip.txt -c 4 --interval=1 -s|sort -r -k6|grep " 0% loss"|tail -n 20 >fastip.txt
mkdir -p temp
for ip in `cat fastip.txt|awk '{print $1}'`
do
echo "test ip:${ip} speed..."
curl --resolve apple.freecdn.workers.dev:443:${ip} https://apple.freecdn.workers.dev/105/media/us/iphone-11-pro/2019/3bd902e4-0752-4ac1-95f8-6225c32aec6d/films/product/iphone-11-pro-product-tpl-cc-us-2019_1280x720h.mp4 -o temp/${ip} --connect-timeout 2 --max-time 10
done
ls -lS temp > realfastip.txt
cat realfastip.txt |awk 'BEGIN{while(getline line <"fastip.txt"){split(line,arr," ");list[arr[1]]=line}}{print $0 "\t" list[$NF]}'
echo "press ENTER key to continue..."
read
rm -rf temp
不过,我跑了几次,发现每次都不是很稳定,最快的IP变来变去,算啦,随便挑一个把….
接下来,要回去修改一下v2ray的配置,把host地址,改成这个IP,然后就完美了。
实测了一下:
之前没有用Cloudflare,大概是1.5-2Mbps,使用Cloudflare加速后,可以到3.5-4Mbps,修改成最快的IP后,可以到5-6Mbps。
我家用的是超烂的长城宽带,万能的胖纸使用的移动宽带,可以加速到20-40Mbps,煞是让人羡慕ing….
不过,由于这个CDN的节点速度不稳定,未来可能会有更好的IP优化,也可能当前使用的IP会退化,最好的办法是写一个定时器,去fping一圈,每次优选一个最好的IP,然后动态更新你的v2ray主机名字,这样就超级完美了,不过,懒得再折腾了,目前已经相当满意了。
更新
2022.12
2022.12,由于众所知之的原因,墙又一次升级,居然把443端口给封了,现象就是,只要是我的服务器有任何针对443的访问流量,IP立刻就会被封,大约十分钟后,又给你放开,但是只要访问,又封,无语嘞。
按理说,v2ray本身就加密,加上ssl/tls,再次加密,不会有什么问题,但是,我看网上说,可能墙启动了人工智能识别,我倒是觉得没那么牛逼,其实就是看你日日莫名其妙上传这么多流量,而且还是443的websoket,就无脑给你封掉,大概率是那些翻墙的人吧。
我把443换成80的ssl,依然被封,网上查了,用高位端口,也一样,只要你之前被盯上,估计短期就不会解封的。好吧,我只好再去买台了。
这次,并没有再买阿里的新加坡服务器了,一个是因为zone里没有新加坡了,只有香港,而且288元/年的套餐也没有了,最便宜要400。靠!所以,就转向了aws,aws的lightsail每个月3.5刀,就他了。
然后,就需要重装一遍,自己很久不搞了,几乎又把之前的坑都试了一遍,觉得有必要再记录一遍:
- 装完nginx,要配置下服务器的域名,acme要验证你的域名,我本来用–domain,它是直接用一个域名提供商的api+token去远程调用api插入一个txt记录,这个倒是简单,但是我死活不通timeout。最后,我只好用–nginx,也就是自动让acme去改nginx的conf配置,然后验证我这个域名对应的服务器是靠谱的,所以才需要提前配置好server_name,再nginx上绑好域名。
- acme,需要root身份,否则,他要重启nginx的时候,会一堆的nginx权限报错,nginx的主进程必须要root启动,只是子进程可以指定用户,我就是用非root装的,改了一堆的文件权限,才通过,唉,下次直接用root装
- acme已经在2021年切刀zerossl来提供证书了,所以有一个注册过程
~/.acme.sh/acme.sh --register-account -m xxxxxx
- v2ray也是涉及到权限的细节,有一个问题,说啥md5加密不再使用啥的,需要加入一个环境变量
Environment="V2RAY_VMESS_AEAD_FORCED=false"
到/etc/systemd/system/v2ray.service
中,才可以 - 别忘嘞做时钟和时区对齐,否则也报错
- 最最后,别忘嘞加入crontab,来定期同步最新的证书
总结一下: 买机器、装nginx、注册新2级域名、绑到nginx上、安装acme、注册到openssl、申请和安装证书、安装v2ray、修改v2ray环境变量、修改各种文件权限、修改时区、加入acme的定期更新证书到crontab,酱紫。
整一台机器得需要个2~3个小时。
再次记录一下这些关键细节点,方便下次重装。
2022.12.5
购买的东京aws服务器又被封了,ip没有,80端口被封,这次没办法,只好再做修改,挂上了cloudflare的d代理。
具体是,把namesilo中的ip解析nameserver改成了cloudflare的,并且在cloudflash中加入站点,并且,把dns解析都改在cf来解析了。其中,每个A记录,都有一个proxy的选项,勾选后,这个子域名,就会被代理。也就是,每次访问可能都是一个不同的ip,真实的ip会被隐藏在后面了,省的被发现了。
不过,后来和胖纸聊,他说主要原因是tls导致的,建议把tls关上,他现在就不用tls。本来我认为是v2ray的vmess加密+tls(ssl)的加密,会双保险。但是他说,可能墙已经识别出tls的某些特征,建议我不用tls,直接用http,用vmess加密就够了。
于是,就把旧机器删了,再买了一台,反正也不用再搞域名ssl证书也就是acme那些麻烦玩意了,很快就搞定了一台。
另外,用cloudflare的代理,发现它果然可以帮助我隐藏真实ip,而是每次都是个不同的ip,但是,被代理后速度从200ms变成了800ms,靠,这根本没法用。虽然可以通过一个脚本可以检测出最优的代理edge ip,但是还是太麻烦,算了,不代理了,只要不再用tls导致再被封就好。
最后,又优化了一下网络,开启了bbr,是一个谷歌的网路流量优化的算法,需要在服务器上开启,开启后,速度快了将近一倍。 bbr已经在内核5.x上默认内嵌了,只要开启即可。默认的bbr速度就很好了,不过还有大神做了不同的调优版本的内核,但是都需要重新下载新的内核,一个是不安全,另外一个是我看了对比,优化幅度不是特别大,开启默认的bbr效果就已经提升明显了,没必要再精益求精了。
好吧,如果再出问题,就删掉再买一台,再花个半小时搞定,嗯,就这么办!也只有这么办了,好讨厌的墙。
接下来,把我详细的步骤,列举出来,方便朋友们架设,也方便以后自己来搞。之前的那些内容太繁琐了,啥SSL的, 现在,模式变得非常简单,不需要SSL/TLS了,就用vmess+http。
1. 购买域名和主机
- 买一个域名,推荐去namesilo(注:这步不是必须的,可以没有域名,只用IP)
- 需要去aws买一台主机,可以在淘宝上买代金券,每年成本可以降得很低,自行搜索aws代金券即可。(大约每年140元人民币)
- 需要配置域名和aws主机的绑定,买完域名在namesilo里就干了。(注:这步不是必须的,可以没有域名,只用IP)
- 推荐使用ubuntu服务器20.04LTS版本
2. 配置服务器
【准备SSH登录】
使用密钥方式登录服务器:
准备key: 从aws下载私有key到~/.ssh并修改访问权限:
chmod 600 ~/.ssh/xxxx.pem
登录服务器:
ssh -i ~/.ssh/xxxx.pem <服务器IP>
【安装各种软件】
登陆后,依次运行下面的命令:
更新apt源
sudo apt-get update
安装nginx
sudo apt install nginx
配置nginx
sudo vim /etc/nginx/nginx.conf
events {worker_connections 1024; }
user www-data;
worker_processes auto;
pid /run/nginx.pid;
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
server {
server_name <你的域名(这行可以不要,如果没有域名的话)>;
root /usr/share/nginx/html;
listen 80 default_server;
location /msg {
proxy_redirect off;
proxy_pass http://127.0.0.1:10000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
}
}
}
修改一下root密码,方便后续安装,因为v2ray需要以root身份安装
sudo passwd root
切换到root用户
su -
以root身份安装v2ray
bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)
安装后,配置v2ray
vim /usr/local/etc/v2ray/config.json
(之前,需要去UUID在线生成生成v2ray的id,配置里需要用)
{
"log": {
"access": "/var/log/v2ray/access.log",
"error": "/var/log/v2ray/error.log",
"loglevel": "warning"
},
"inbounds": [
{
"port": 10000,
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "<v2ray的id,自动生成的,这个很重要,将来客户端连接需要配置个id>",
"alterId": 64
}
]
},
"streamSettings": {
"network": "ws",
"wsSettings": {
"path": "/msg"
}
},
"sniffing": {
"enabled": true,
"destOverride": [
"http",
"tls"
]
}
}
//include_ss
//include_socks
//include_in_config
//
],
"outbounds": [
{
"protocol": "freedom",
"settings": {}
},
{
"protocol": "blackhole",
"settings": {},
"tag": "blocked"
},
{
"protocol": "freedom",
"settings": {},
"tag": "direct"
}
//include_out_config
//
],
"dns": {
"server": [
"1.1.1.1",
"1.0.0.1",
"8.8.8.8",
"8.8.4.4",
"localhost"
]
},
"routing": {
"domainStrategy": "IPOnDemand",
"rules": [
{
"type": "field",
"ip": [
"0.0.0.0/8",
"10.0.0.0/8",
"100.64.0.0/10",
"127.0.0.0/8",
"169.254.0.0/16",
"172.16.0.0/12",
"192.0.0.0/24",
"192.0.2.0/24",
"192.168.0.0/16",
"198.18.0.0/15",
"198.51.100.0/24",
"203.0.113.0/24",
"::1/128",
"fc00::/7",
"fe80::/10"
],
"outboundTag": "blocked"
},
{
"type": "field",
"inboundTag": ["tg-in"],
"outboundTag": "tg-out"
}
,
{
"type": "field",
"domain": [
"domain:epochtimes.com",
"domain:epochtimes.com.tw",
"domain:epochtimes.fr",
"domain:epochtimes.de",
"domain:epochtimes.jp",
"domain:epochtimes.ru",
"domain:epochtimes.co.il",
"domain:epochtimes.co.kr",
"domain:epochtimes-romania.com",
"domain:erabaru.net",
"domain:lagranepoca.com",
"domain:theepochtimes.com",
"domain:ntdtv.com",
"domain:ntd.tv",
"domain:ntdtv-dc.com",
"domain:ntdtv.com.tw",
"domain:minghui.org",
"domain:renminbao.com",
"domain:dafahao.com",
"domain:dongtaiwang.com",
"domain:falundafa.org",
"domain:wujieliulan.com",
"domain:ninecommentaries.com",
"domain:shenyun.com"
],
"outboundTag": "blocked"
} ,
{
"type": "field",
"protocol": [
"bittorrent"
],
"outboundTag": "blocked"
}
//include_ban_ad
//include_rules
//
]
},
"transport": {
"kcpSettings": {
"uplinkCapacity": 100,
"downlinkCapacity": 100,
"congestion": true
},
"sockopt": {
"tcpFastOpen": true
}
}
}
修改启动文件
vim /etc/systemd/system/v2ray.service
加入这行,这个是因为v2ray有个小bug,需要这样修改下,感兴趣可以自行谷歌:
Environment="V2RAY_VMESS_AEAD_FORCED=false"
启动v2ray
systemctl enable v2ray;systemctl restart v2ray
安装网络工具包,然后查看端口80和10000是否运行?
apt install net-tools
netstat -lntp
开启bbr,加速: 这个是一个优化方法,可以让网速提速1倍,感兴趣可以自行搜索原理:
echo net.core.default_qdisc=fq >> /etc/sysctl.conf
echo net.ipv4.tcp_congestion_control=bbr >> /etc/sysctl.conf
sysctl -p
sysctl net.ipv4.tcp_available_congestion_control
lsmod | grep bbr
bbr开启的话,正常结果为:
> sysctl -p
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
>sysctl net.ipv4.tcp_available_congestion_control
net.ipv4.tcp_available_congestion_control = reno cubic bbr
>lsmod | grep bbr
tcp_bbr 20480 1
调整时钟:必须要跟网络时间服务器同步,否则,客户端和服务器不一致,会连接不上。
apt-get install ntpdate
ntpdate cn.pool.ntp.org
tzselect
echo "TZ='Asia/Shanghai'">>~/.profile ; export TZ
3、配置客户端
- windows上用v2rayN
- MAC上用v2rayU
- 安卓上用pv2rayNG
- IOS苹果上很麻烦,默认的国内appstore没有v2ray客户端,需要去国外的appstore上安装。具体步骤是:1、参考这篇去注册个美国apple ID,然后切换到美国市场。2、安装一个叫oneclick的免费客户端,他们都推荐收费的ShadowRocket,但是我没法设置信用卡,只好用免费的oneclick了,我感觉挺好用的。
以mac上的配置为例,展示配置细节:
(注:如果没有购买和配置域名,不需要填写headers)
其他平台上,配置大同小异。
其他
- 配置中,肯定会遇到很多坑,耐心排查和百度(还没能翻墙)应该都可以解决
- 客户端软件肯定需要先翻墙,才能下载,这个时候就是先有鸡先有蛋的问题了,建议先找个免费的vpn啥的下载下来
- 账号尽量不要分享给其他人,现在查得严,倒不是怕其他人滥用,而是,稍微用的人多,就会封IP
- 为了防止失联,建议买2台,互备,淘宝优惠券相当实惠,而且,GFW时不时会封一下,这时切换到另外一台,不影响使用
2023.4.17
针对chatgpt的增强
chatgpt火了,但是,必须要翻墙才可以;随着翻墙的人多,chatgpt开始限制大陆地区的ip。特别是aws的IP,全封。阿里的海外服务器,开始还可以,但是后来,也封了。
后来,有人提出,用cloudclare的warp服务,来规避ip被封。本质上,我理解,就是在你的ip之外,再设置一个代理,每次都更换自己的ip到一个变动ip,也就是代理的代理。
开始还可以,但是用了一段时间后,估计是chatgpt发现某个ip上来的请求太多了,就开始报429的错误码。
最后,又谷歌半天,发现需要多尝试一些warp IP,直到你切换到某个没有过多人用的IP,才可以稳定到这个ip上,才可以。
具体做法:
1、给服务器套上cloudflare的warp服务
curl chat.openai.com
如期的出现1020错误码。
为库安装GPG Key:
curl https://pkg.cloudflareclient.com/pubkey.gpg
sudo gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg
添加源到库:
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main"
sudo tee /etc/apt/sources.list.d/cloudflare-client.list
update APT:
sudo apt update
安装Warp:
apt install cloudflare-warp
注册Warp 运行命令给设备注册:
warp-cli register
打开代理模式:
warp-cli set-mode proxy
连接Warp:
warp-cli connect
查验
curl ifconfig.me --proxy socks5://127.0.0.1:40000
结果会显示一个被代理后的cloudflare提供的代理ip,再测试不使用socks5时候还是1020错误代码,第二条命令带上socks5,没有1020错误代码提示了。
2、更新v2ray配置
上面的warp服务,只是让你的服务器,可以对外服务器的时候,可以提供一个新的代理ip。 现在,要把这个代理ip服务,和你的v2ray服务结合起来。 也就是,一般翻墙的时候,不使用这个代理ip(原因是,再代理一次速度会慢很多);如果是访问chatgpt的时候,就用这个新的代理ip去访问chatgpt。
修改你的v2ray配置,再outbounds和routings部分,加入一下的配置:
# outbounds
{
"tag": "chatgpt",
"protocol": "socks",
"settings": {
"servers":[
{
"address": "127.0.0.1",
"port" : 40000
}
]
}
}
# routings
{
"type":"field",
"outboundTag":"chatgpt",
"domain" :[
"chat.openai.com",
"ip138.com"
]
}
说明:
- 40000,就是新的warp服务的端口
- 可以看出来,只有在路由到chat.openai.com域名的时候,才会走这个warp代理ip服务
- 为何要搞搞ip138.com路由呢?是为了测试用这个网站解析ip的时候,可以看到新的代理ip
- 重启v2ray,完事
不过,有的代理ip因为用的人太多,所以会报429的错误,所以接下来,要解决429错误的问题嘞。
2、狂刷warp,直到获得一个稳定IP
解决错误码429的办法,就是重新登陆warp服务,不断地尝试获得新的ip,直到某个ip不再报错,即可。
warp-cli disconnect && sleep 3 &&warp-cli connect
不断刷下边的这条命令,再刷新chatgpt的页面验证是否可以正常使用。
即使在晚上的最高峰,往往刷个5次就能找到一个合适的节点实现chatgpt的访问。并且这个节点很长时间内都不会失效
参考:
最后
这年头,翻出去不容易,口袋越收越紧了,年轻淫们,可以人肉翻就赶紧翻吧。我呢,为了看看油管,翻翻股沟,唉,这年头,生活、学习都不易啊。