最近chatGPT封的厉害,次元链的服务变得非常不稳定,外加openai近期升级了安全策略,开始大规模封禁ip和账号。封禁ip主要针对机场或者自建的节点,但是封账号就会变得很大条。很多机场提供商的海外节点是集群化的,经常切换节点ip,或账号同时挂载了多个地区的IP(共享号),或者频繁尝试通过不支持的区域访问(如香港),最终导致会导致chatgpt账号本身被封。
另外一个起因是有朋友委托去弄一条专属线路,于是把这个小项目的工程笔记贴出来,希望帮到有缘人。
其实最核心的一步就是开启warp服务,然后通过warp代理ipv4/ipv6的流量。对于稳定的线路没必要从头折腾,是可以直接开启warp服务的。wireguard不建议使用,因为chat GPT本质上是在翻,wireguard的方式进行直接通信会被识别,这个代理的过程是不应该跨墙的,而要放在外边完成。活儿细致一点用xray或者v系协议的配置,去代理本地wg流量,粗旷一点就直接让warp代理整个机器的流量,结果是一样的,都能达到所谓的“原生IP”的效果。
经过这番处理的机器,在上层做一次代理转发进行分流,让本机专门用来处理openai的流量。根据流量特征进行分组,可以显著降低封号和封ip的概率。
问题
- 域名
- 是否需要购买
- amce.sh进行ssl加密
- 这个是否会导致域名需要重新购买?
- 是否可以加密子域名?
- 子域名与二级域名是否冲突?
- 用了一个旧的垃圾域名,所以暂时不用关注同一个二级域名在多个服务器间同步的问题
- 面板
- xrayr https://xrayr-project.github.io/XrayR-doc/dui-jie-sspanel/sspanel/sspanel_custom_config.html
- 支持多节点拓展,但有过黑历史,造成大规模节点崩溃
- xui
- https://github.com/vaxilu/x-ui
- 知晓Cloudflare 注册邮箱
- 知晓Cloudflare Global API Key
- 域名已通过cloudflare进行解析到当前服务器
- 涉及到域名问题,是否可以加密子域名
- 用了一个旧的垃圾域名,所以暂时不用关注同一个二级域名在多个服务器间同步的问题
- xrayr https://xrayr-project.github.io/XrayR-doc/dui-jie-sspanel/sspanel/sspanel_custom_config.html
TODO问题
- 配置转订阅地址
- 编辑客户端模版,限制只在openai时访问外网
- 编辑服务端模版,限制只接受openai入站
行动路径
购买vps+垃圾域名
- 套warp+v2ray,理论上不需要高配置只需要大带宽
- vultr的ip质量低下,大量滥用导致很多ipv4都已被墙,因此生成服务器实例后的第一件事就是去ping.pe检测ip质量。
初始化服务器
开放端口80 443 34728
echo "Now, display default allowed ssh ports" semanage port -l | grep ssh echo "Now, add 34728 to default allowed ssh ports" semanage port -a -t ssh_port_t -p tcp 34728 echo "Now, display default allowed ssh ports" semanage port -l | grep ssh echo "Now, enable 80 443 34728 at firewalld service" sudo firewall-cmd --permanent --list-port sudo firewall-cmd --zone=public --add-port=80/tcp --permanent && sudo firewall-cmd --zone=public --add-port=80/udp --permanent && sudo firewall-cmd --zone=public --add-port=443/tcp --permanent && sudo firewall-cmd --zone=public --add-port=443/udp --permanent && sudo firewall-cmd --zone=public --add-port=34728/tcp --permanent && sudo firewall-cmd --zone=public --add-port=34728/udp --permanent && sudo firewall-cmd --reload echo "Now, display allowed firewalld ports" sudo firewall-cmd --permanent --list-port
firewall-cmd –zone=public –add-port=80/tcp –permanent && firewall-cmd –zone=public –add-port=80/udp –permanent && firewall-cmd –zone=public –add-port=443/tcp –permanent && firewall-cmd –zone=public –add-port=443/udp –permanent && firewall-cmd –zone=public –add-port=34728/tcp –permanent && firewall-cmd –zone=public –add-port=34728/udp –permanent && sudo firewall-cmd –reload
修改默认ssh端口 34728
删除22端口
支持ssh登录
curl chat.openai.com 测试ip本身是否能访问
知晓Cloudflare Global API Key
- api key,不安全,需要换成api token,否则黑客一旦攻克则cloudflare上所有服务全部暴露在攻击面之下。
安装ngx
sudo yum install epel-release sudo yum install nginx sudo systemctl start nginx sudo systemctl status nginx
amce支持ssh
curl https://get.acme.sh | sh -s [email protected] cd && cd .acme.sh export CF_Key="xxxxxxxxxxxxxxxxx" && export CF_Email="[email protected]" ./acme.sh --issue --nginx --dns dns_cf -d yourdomain.com -d '*.yourdomain.com' --server letsencrypt
【问题】好神奇,上面命令执行之后,nginx还没配置证书,访问域名就直接https了,而且泛域名支持了
2021年8月开始,acme开始使用ZeroSSL作为CA服务,导致在centos7直接issue会发生类似于“Can not resolve _eab_id”的报错。通过指定
--server letsencrypt
来使用let’sencrypt,换回原来的配方。# 安装证书到nginx ./acme.sh --install-cert -d yourdomain.com \ --key-file /etc/nginx/cert/yourdomain.com/key.pem \ --fullchain-file /etc/nginx/cert/yourdomain.com/cert.pem \ --reloadcmd "service nginx force-reload" acme.sh --install-cert -d yourdomain.com \ --key-file /root/.acme.sh/yourdomain.com_ecc/yourdomain.com.key \ --fullchain-file /root/.acme.sh/yourdomain.com_ecc/fullchain.cer \ --reloadcmd "service nginx force-reload"
域名解析到服务器
- 如果用了全新的域名,就暂时不用关注同一个二级域名证书在多个服务器间同步的问题
- 执行了通配符解析
安装warp
安装x-ui
bash <(curl -Ls https://raw.githubusercontent.com/vaxilu/x-ui/master/install.sh)
x-ui比较傻瓜,蜜罐概率貌似较小
x-ui 管理脚本使用方法: x-ui - 显示管理菜单 (功能更多) x-ui start - 启动 x-ui 面板 x-ui stop - 停止 x-ui 面板 x-ui restart - 重启 x-ui 面板 x-ui status - 查看 x-ui 状态 x-ui enable - 设置 x-ui 开机自启 x-ui disable - 取消 x-ui 开机自启 x-ui log - 查看 x-ui 日志 x-ui v2-ui - 迁移本机器的 v2-ui 账号数据至 x-ui x-ui update - 更新 x-ui 面板 x-ui install - 安装 x-ui 面板 x-ui uninstall - 卸载 x-ui 面板
x-ui会自动安装了xray
- 确认xray是否运行
通过x-ui安装最新内核的bbr
- 检验是否开启成功
反向代理问题
- 修改x-ui根路径
- 域名和网站是同一个
- 添加入站
- 监听ip: 0.0.0.0
- 端口随便写?:54321
- ws
- ws路径自定义
- tls关闭
配置nginx
- 反向代理x-ui面板
安装v2ray
- ws伪装
- 开启tls
- 套cdn
- 配置分流规则
配置node环境
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash && cd && source ~/.bashrc && nvm install 14.20.1 && nvm use 14.20.1 && npm install pm2 -g && npm install yarn -g
配置xray分流策略
一部分受限制,一部分全量翻。合理利用xray规则,配合ngxin就可以实现。
受限部分
xui配置入站
- ws路径:/hello
- 端口:20237
nginx
location /hello { # 与x-ui中的ws路径保持一致 proxy_redirect off; proxy_pass http://127.0.0.1:20237; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; # Show real IP in v2ray access.log proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
全量部分
xui配置入站
- ws路径:/hithere
- 端口:20238
nginx
location /hithere { # 与x-ui中的ws路径保持一致 proxy_redirect off; proxy_pass http://127.0.0.1:20238; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; # Show real IP in v2ray access.log proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
xray配置增加路由规则,根据坚挺端口判断
线上订阅,不建议用开源的sub-web。x-ui的入站只提供二维码,不提供订阅地址,而clash系列客户端最简单的导入方式是订阅。这种服务随便写个express脚本都能解决,用开源的反而不安全。找一个现成的规则模版,用yaml解析后,修改一下配置对象,然后再解析回yaml。
nginx问题:
Ref:
- 比较清晰的讲了用cloudflare teams刷warp的全过程
- 手动配置教程
- p3terx warp双栈手动设置
- acme分发
- acmeDeliver分发
- v2ex的v2ray配置
- x-ui反向代理教程
- vmess转订阅地址,源码没看,不确定是否安全
IP质量,ChinaMobile影响不会很大,CN2基本上也用不起,主要看China Unicom和Telecom,是可以接受的:
套CDN: