前言

在补存货之前,想先写下最近弄的这个,网上的关于 cloudflare tunnel 教程已经非常多了。我的主服务器区的公网 ip 已经被收回,在目前 ISP 打击 PCDN -> 一刀切打击大上传带宽的现在,以及在可以预见的将来,收回公网 ipv4 ,乃至拒绝分配或者仅分配内网 ipv6 是难以避免的,这几个月考虑了不少方案,最后还是决定使用 cloudflare tunnel 作为 “后【提速降费】时代” 保留博客的最后保底方案

原因如下:

  • 不需要上云,过年云和带宽的成本是个大问题
  • v4 和 v6 都可以访问
  • 个人免费使用,赛博菩萨好!
  • 其他一些不便言说的问题……

好处还是很多,唯一缺点就是国内访问速度不佳,但是这个不需要你去买带公网 ip 的昂贵家宽,不需要额外花一分钱,那还要什么自行车

玩法

既然网上的教程烂大街了,我再重复赘述就显得很啰嗦,去网上找找详细图手把手教的看下开通那部分就行,这里主要说说我踩的一些坑

我选的是二进制方法,装一个 cloudflared,目前我的主服务器区使用的移动网络,有 ipv6 ,出于这条宽带的特殊性质,我不便把单栈 v6 直接拿出来跑服务,所以我在服务器段之外单独划了一个 vlan 装的,使用 cf 给的命令,跑不起来,看日志,发现移动似乎是屏蔽了 quic 协议,所以去改下 systemd 文件,加上 --protocol http2 让他走 http2

vi /etc/systemd/system/cloudflared.service
# ExecStart 结尾添加 `--protocol http2`
ExecStart=/usr/bin/cloudflared --no-autoupdate tunnel run --token [token] --protocol http2

systemctl daemon-reload && systemctl restart cloudflared.service

配置方式有 cli 和 web,现在默认的是 web,你也可以通过 cli 使用创建 tunnel 用配置文件管理,配置文件方法配置的选项,web 基本上都有

我的服务在 WAF 后面,WAF 上需要严格校验来源域名并且仅能使用 HTTP/2 连接,类似下面的玩法但是又麻烦了些

https://www.reddit.com/r/selfhosted/comments/wpvy8c/using_cloudflare_tunnel_with_nginx_proxy_manager/

手动创建了一个专门回源用的域名,做如下配置,试了一下不行

# vi .cloudflared/config,yaml
tunnel: xxxxxx
credentials-file: /root/.cloudflared/xxx.json

ingress:
- hostname: blog.cocoa.xin
service: https://cf-xxxxxxxx-blog.cocoa.xin:24680
originRequest:
originServerName: cf-arisu-blog.cocoa.xin # 设置回源 SNI 域名
- service: http_status:404

warp-routing:
resolve:
# 手动配置域名和ip的关系,是因为回源时必须使用域名,并且改 /etc/hosts 不好使(cf 自己单独走他自己的解析,不走系统的)
- host: cf-xxxxxxxxx-blog.cocoa.xin
ip: 192.168.1.2 # 假设这个是 WAF 内网地址

最开始怀疑是没有走 HTTP2 的原因,改回 Web 配置方式,配置了走 http2,调了一下午,还是不行

最后没有办法,在 WAF 上给 cf 开了一个内网回源用的 http 端口,走 http 协议,设置 host 主机名(httpHostHeader),有5秒盾的,只能关闭5秒盾,否则二次跳转会有问题

另外邮件会被默认隐藏,去默认 Dashboard【Scrape Shield】里面找【隐藏电子邮件地址】关闭这个功能就行

别的注意事项基本没有,WAF 的 5 秒盾测了一下发现没有什么用了,因为来源 IP 是一样的,他这个似乎不传递客户端 IP

今天先上了 wdv2 和 blog 两个站,测了一下联通流量和宽带访问速度还不错,电信的一般,移动的不大行,海外的很好,可能和节点有关系,之前也看过有【优选 ip 】这个玩法,但是应该没有办法找到三网优化的节点,所以暂时不做

后续的话,博客和部分站这边需要改改 CI/CD 流程,替换 blog.cocoa.xin 域名下 luckykeeper.site 域名的资源,之后我会把跳转站重新做一下,改成导航站的形式,供各位自由选择要走的线路

恳请各位有需求访问本站的同学关注并收藏新的备用域名 【cocoa.xin】,博客站备用访问地址【https://blog.cocoa.xin】