各位 大佬 好,新人入站报到。
人在国内大内网环境下,没有公网 IPv4,想在外面随时访问家里的物理服务器和 Docker 容器,一直是刚需。很多人一上来就去买向日葵、花生壳的付费版,或者去租一台公网 VPS 自己搭 frp。
今天我以自己的真实测试数据,跟大家聊聊为什么以大厂 Cloudflare 为底座的 CF Tunnel(Argo 隧道)才是不花一分钱的终极解法,并附上我的 Docker 一键部署配置与晚高峰防断流填坑方案。
一、 三路内网穿透方案硬核对比
在折腾这套方案前,我深度对比了目前市面上最主流的三种穿透路线:
| 对比维度 | 传统商业穿透(如向日葵) | 自建 frp 转发方案 | CF Tunnel 大厂隧道 |
|---|---|---|---|
| 资金成本 | 极高。免费版限速,稍微能用就要按月氪金。 | 中等。必须额外买一台带公网 IP 的境外或国内 VPS。 | 完全免费。只要有一个域名,大厂全功能无限期白嫖。 |
| 带宽流量 | 极度抠搜。限制 1M/2M 带宽,传个大文件直接卡死。 | 受限于你的 VPS 带宽。买 5M 的小鸡,穿透上限就被死死卡在 5M。 | 大厂无限量。官方不限流量,实测国内带宽还可以。 |
| 安全SSL | 裸奔。HTTPS 证书要么单独买,要么配置极其繁琐。 | 必须自己在 VPS 上用 Nginx 申请配置证书,较为折腾。 | 天生自带 HTTPS。云端边缘节点自动颁发大厂免费证书. |
| 网络门槛 | 无需技术背景。 | 必须开放 VPS 的公网端口,容易被防火墙扫描主动探测。 | 安全无缝。本地通过加密隧道主动向外握手,家里不用开任何端口。 |
二、 我的本地内网 Docker 容器全家桶架构
目前我在家里的一台旧物理设备上利用 Docker 部署了这套私有云,并通过一条 CF 隧道(隧道名:my-node),用不同的子域名全部安全地映射到了公网:
- docker.***.top -> Portainer 可视化面板(本地端口 9000)
- ql.***.top -> 青龙面板(本地端口 5700)
- tools.zhtest.top -> IT-Tools 极客小工具箱(本地端口 8082)
- git.***.top -> 自建 Git 仓库服务
- jk.***.top -> Uptime Kuma 状态监控面板(本地端口 3001)
大家可以看到,今天下午 13:19 左右发生了一次非常有意思的“全线扑街”。所有的容器服务集体报 timeout of 48000ms exceeded。由于我本地容器和硬件一切正常,这波断网是典型的国内大内网 CGNAT 节点到 CF 境外 Anycast 边缘节点之间的国际链路发生了剧烈抖动。
好在 CF 隧道的重连机制非常强硬,几分钟后无需人工干预,全部自动报 200 - OK 满血复活。这也是白嫖免费大厂方案不可避免的小插曲。
三、 5分钟保姆级极简部署教程
如果你也想彻底甩掉向日葵和 frp 的服务器成本,直接照搬我的这套配置:
步骤 1:在 Cloudflare 后台创建隧道
- 登录 CF 网页端,进入左侧 Zero Trust 后台。
- 依次点击 Networks -> Tunnels -> Create a Tunnel。
- 起个名字(如 my-node)并保存。在安装环境选择 Docker,复制命令中那一长串长得像乱码的 Tunnel Token。
步骤 2:本地 Docker Compose 一键拉起隧道
进入你家里的 Linux 服务器,直接创建 docker-compose.yml 文件:
version: '3.8'
services:
cloudflare-tunnel:
image: cloudflare/cloudflare-tunnel:latest
container_name: cloudflared
restart: always
network_mode: "host"
command: tunnel --no-autoupdate run --token 你的_TUNNEL_TOKEN
运行 docker compose up -d 本地拉起,去 CF 网页端刷新,隧道状态秒变绿色的 HEALTHY。
步骤 3:在云端配置域名分流路由(重大避坑指南!)
在 CF 的 Public Hostname 页面为你的 Docker 服务添加子域名。
这里的关键填坑细节:
很多人习惯把内网地址填成 Docker 默认的虚拟网桥网关 http://172.17.0.1:8080。我实测发现这种跨网桥的跨局域网通信极其不稳,很容易莫名其妙报 502/503。
正确且最稳的做法:因为我们的 cloudflared 容器已经启用了 network_mode: "host",这里直接无脑填写你本地局域网的真实物理 IP(如 http://192.168.1.16:5700)或者直接填 http://localhost:5700,稳定性立刻提升十倍!
步骤 4:进阶安全防护(防脚本小子扫后台)
既然把青龙、Portainer 这类高危后台放到了公网,为了防止被恶意扫描,强烈建议大家多走一步:在 CF 后台点击 Access -> Applications,给你的这些子域名加一个“邮箱验证码拦截外壳”(Pin码机制)。只有你自己的邮箱收到验证码并验证成功后,才能真正触达你内网的容器。
四、 抛砖引玉:关于国内晚高峰延迟的优化思考
众所周知,CF Tunnel 走的是 CF 境外的 Anycast 节点。在国内没有独立公网 IP、晚高峰高丢包的情况下,偶尔会出现我截图里那种 48 秒超时的断流现象。
目前我个人的优化思路是:
- 客户端访问侧(比如在外使用的手机/电脑),可以通过本地 hosts 固定到国内测速最快的 Cloudflare 优选 IP 节点。
- 通过自建优质的境外 VPS(如 CN2 GIA/AS9929 线路)作为中转,或者套一层本地分流代理去拉取穿透域名的流量。
不知道论坛里的各位技术大佬,在玩 CF Tunnel 的时候还有什么更高级的国内节点优选或防断流加速套路吗?欢迎在评论区回帖盖楼,优质技术回复必双手奉上鸡腿!

用过的人告诉你,你用10天就知道问题了
天天连接错误,国内连 cf 本身就是一个非常不理智的决定,一天掉线多次都是正常的
私有玩玩可以,绝对不要用在生产服务上。
好教程,帮顶
虽然看着很有AI味。但是确实是实用的知识。支持
用过前两种方式,帮顶
(这里记得上传并插入你的 Uptime Kuma 故障监控截图)
bd
没到你的截图呢?是不是没上传上来
bd
我一般用樱花,用自动签到的脚本刷点流量,当做保底也还行
mark