使用 cloudflare tunnel 暴露内网服务
前言
在补存货之前,想先写下最近弄的这个,网上的关于 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 |
配置方式有 cli 和 web,现在默认的是 web,你也可以通过 cli 使用创建 tunnel 用配置文件管理,配置文件方法配置的选项,web 基本上都有
我的服务在 WAF 后面,WAF 上需要严格校验来源域名并且仅能使用 HTTP/2 连接,类似下面的玩法但是又麻烦了些
手动创建了一个专门回源用的域名,做如下配置,试了一下不行
# vi .cloudflared/config,yaml |
最开始怀疑是没有走 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】