前言
11 月份 Frp 的机到期了,发现能用 CF 白嫖内网穿透,于是开始了折腾
准备
- ImmortalWrt 23.05
- 两个域名且绑定在 Cloudflare
- CF 账号以及开通 SAAS 不多说
开始
首先在 ImmortalWrt 上面安装好 luci-app-cloudflared
(ImmortalWrt 自带相关软件包,我未深入研究其他安装方式。Linux 系统的安装方法有很多,这里不再赘述,详情可参考官方 GitHub 页面:Cloudflare/cloudflared )
SSH 连接到设备
注意:如果和我一样是是用 ImmortalWrt 提供的软件包,可以输入 cloudflared update
来更新软件,不会影响 luci 的兼容
cloudflared tunnel login
这时候打开客户端跳出来的链接,登录 Cloudflare 后选择你的副域名(辅助域名),例如:back.com
电脑这时候会下载 “cert.pem” 到 /root/.cloudflared
,需要自己把他移动到 /etc/cloudflared/
或者用 luci 界面上传
如果下载失败可以手动点击控制台的链接下载到电脑,重命名后,再用上面的方式传输到 OpenWrt
创建隧道,随意命名
cloudflared tunnel create XXX
这时候 /root/.cloudflared
下面会有一个 <UUID>.json
文件,同样把它弄到 /etc/cloudflared/
文件夹里面去
添加一个域名,这个域名将作为回退源,建议使用子域名,这里以 op.back.com 为例
cloudflared tunnel route dns <UUID or NAME> op.back.com
创建配置文件 config.yml
tunnel: <UUID>
credentials-file: /etc/cloudflared/<UUID>.json
ingress:
- hostname: back.com
service: http://localhost
# Example of a rule responding to traffic with an HTTP status:
- service: http_status:404
验证配置是否有效
cloudflared tunnel ingress validate
运行隧道
cloudflared tunnel run <UUID or NAME>
或去 luci 启动
迁移本地配置
迁移到云端更便于管理,避免使用抓包 PUT 请求
去 Cloudflare 的 Tunnel 界面查看是否为 HEALTHY
进入该 Tunnel 的管理界面,一路确认就可以迁移了
这时候可以添加主域名的穿透了,Add a public hostname –> op.a.com
–> http://192.168.8.1:80
还可以继续添加同一 IP 不同端口的服务到,a.com 的其他子域名下面(我自己折腾,同一内网不同 IP 也是可以的,如:回退源为 192.168.8.1,但是我穿透 192.168.8.2 的服务,用网站测速也是有加速效果的,这里没有佬的研究成果,效果不敢保证)
设置优选域名
- 在 Cloudflare 中直接设置
- 主域名的一个子域名(cdn.a.com)托管到腾讯云、阿里云等提供 DNS 分线路解析服务的平台,进行境内境外分流
方法一
到 辅助域名(back.com )的管理页面
添加一条 DNS 记录,用作优选域名,如:cdn.back.com
把该域名 CNAME 到一个优选域名(切记关闭小黄云),请自行挑选:CloudFlare 公共 Cname 域名
方法二
dnspod 或其他 dns 平台,添加主域名的随机一个子域名,如:cdn.a.com
这里以腾讯云为例
复制主机记录和记录值去 CF 添加,同时添加 NS 记录指向 f1g1ns1.dnspod.net
和 f1g1ns2.dnspod.net
,然后在高级设置中关闭暂停解析
如下图添加解析,境内指向优选域名 / IP,境外指向你的回退源
然后在我的域名界面,点击该加速域名的 “更多” –> “开始解析”
设置回退源
辅助域名(back.com)管理界面,左侧边栏 –>SSL/TLS–> 自定义主机名
设置回退源为 op.back.com
设置自定义主机名为 op.a.com
(还有其他服务一并添加)
复制好 “主机名预验证 TXT 名称” 和 “主机名预验证 TXT 值”
就是 _cf-custom-hostname.op.a.com
证书验证(_acme-challenge.op.a.com)不用管,CNAME 到回退源他会自动消失的
主域名设置
现在去主域名(a.com)设置 DNS 记录
由于我们在 Tunnel 已经添加过主域名的记录,所以这里会有 CNAME 的记录,且内容为我我们的容器 ID
把容器 ID 改为我们的优选域名(cdn.a.com)关闭小黄云,这样就用上了
再把 “主机名预验证 TXT 名称” 和 “主机名预验证 TXT 值” 添加好,这时候可以回到,辅助域名(back.com)自定义主机界面,看 “证书状态” 和 “主机名状态” 是否都变成了有效,到此就大功告成了
去 ITDOG 和 ZHALE 的网站测速看看(带上 https://,慢速检测),出口 IP 有十个以上就是成功了
设置截图
Public hostname
辅助域名(back.com DNS 设置)
自定义主机名设置
主域名(a.com DNS 设置)
加速域名设置(cdn.a.com)
注意事项
OpenWrt 上面跑了科学的话,请跳过这两个域名的流量嗅探,或者 OpenWrt 不要走代理,不然会连接不到 Cloudflare
region1.v2.argotunnel.com
region2.v2.argotunnel.com
最好走直连,或者把 CF Tunnel 的服务 IP 走直连,不然家里的梯子断了就连不回来了
思路来源于
https://blog.xmgspace.me/archives/cloudflare-tunnel-via-proxy.html
https://www.nodeseek.com/post-201141-1
免费计划 API Tokens 只能创建 50 个,也就是你只要授权 50 次,就会报错:Quota limit exceeded, you can create no more than 50 tokens.
所以要记得删除无用的:https://dash.cloudflare.com/profile/api-tokens
详细请见:https://blog.tsinbei.com/archives/1505
End
其实优选后的提升不是很大😂