logo NodeSeekbeta

大厂白嫖指南】无公网 IP 别再氪金了!Docker + Cloudflare Tunnel 零成本内网穿透实战(附三路方案硬核对比与填坑优选)

各位 大佬 好,新人入站报到。

人在国内大内网环境下,没有公网 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 边缘节点之间的国际链路发生了剧烈抖动。

pmZO3mF.png!

好在 CF 隧道的重连机制非常强硬,几分钟后无需人工干预,全部自动报 200 - OK 满血复活。这也是白嫖免费大厂方案不可避免的小插曲。
三、 5分钟保姆级极简部署教程

如果你也想彻底甩掉向日葵和 frp 的服务器成本,直接照搬我的这套配置:

步骤 1:在 Cloudflare 后台创建隧道

  1. 登录 CF 网页端,进入左侧 Zero Trust 后台。
  2. 依次点击 Networks -> Tunnels -> Create a Tunnel。
  3. 起个名字(如 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 秒超时的断流现象。

目前我个人的优化思路是:

  1. 客户端访问侧(比如在外使用的手机/电脑),可以通过本地 hosts 固定到国内测速最快的 Cloudflare 优选 IP 节点。
  2. 通过自建优质的境外 VPS(如 CN2 GIA/AS9929 线路)作为中转,或者套一层本地分流代理去拉取穿透域名的流量。

不知道论坛里的各位技术大佬,在玩 CF Tunnel 的时候还有什么更高级的国内节点优选或防断流加速套路吗?欢迎在评论区回帖盖楼,优质技术回复必双手奉上鸡腿!

12
  • 用过的人告诉你,你用10天就知道问题了
    天天连接错误,国内连 cf 本身就是一个非常不理智的决定,一天掉线多次都是正常的
    私有玩玩可以,绝对不要用在生产服务上。

  • 好教程,帮顶

  • 虽然看着很有AI味。但是确实是实用的知识。支持

  • 用过前两种方式,帮顶

  • (这里记得上传并插入你的 Uptime Kuma 故障监控截图) xhj001

  • bd

  • 没到你的截图呢?是不是没上传上来

  • bd

  • 我一般用樱花,用自动签到的脚本刷点流量,当做保底也还行

  • mark

12

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有59918位seeker

🎉欢迎新用户🎉