Cloudflare Tunnel 实战:没有公网 IP,也能从外网访问家里的服务
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
先说清楚问题大多数家用宽带有一个限制:没有固定公网 IP。 没有公网 IP,意味着:
传统解法是 frp——租一台有公网 IP 的云服务器做中转。每年几百块的服务器费,还要自己运维,带宽也是成本。 Cloudflare Tunnel 的方案:在你的内网设备上运行一个叫
整个过程:不需要公网 IP,不需要开放路由器端口,不需要备案,完全免费。 Tunnel vs frp 对比如果你的用户主要在国外(比如做海外独立站开发调试),Tunnel 完胜。如果主要在国内且对延迟敏感,frp + 国内云服务器速度更快,但有成本。 前置条件
Step 1:开通 Zero TrustCloudflare Tunnel 属于 Zero Trust 产品线,需要先开通。 登录 Cloudflare 控制台 → 左侧菜单点「Zero Trust」→ 首次进入选择 Free 计划(不用填信用卡)→ 设置一个团队名称(随意,比如
Step 2:创建 Tunnel进入 Zero Trust 控制台 → 左侧「Networks」→「Tunnels」→「创建 Tunnel」。
点「保存 Tunnel」。 Step 3:在内网设备上安装 cloudflared创建 Tunnel 之后,控制台会显示一条安装命令(包含你专属的 Token)。根据你的设备类型选择对应方式: 📌 Linux(通用,含树莓派)控制台会给出类似这样的命令(以 Debian/Ubuntu 为例):
树莓派是 ARM 架构,下载对应版本:
安装后 cloudflared 会自动注册为系统服务,开机自启,无需手动管理。 📌 macOS
📌 Windows从控制台复制 Windows 版的安装命令(格式类似 安装后在 PowerShell(管理员)里执行:
📌 Docker(推荐,适合 NAS 和已有 Docker 的环境)
📌 群晖 NAS(DSM)群晖可以通过套件中心安装 Docker,然后用上面的 Docker 命令运行。 或者通过第三方套件源(如矿神源)直接搜索「Cloudflare Tunnel」安装套件,输入 Token 即可,不需要命令行。 验证连接成功安装完成后,回到 Cloudflare 控制台的 Tunnels 页面,看到 Tunnel 状态变为绿色的「Healthy」,说明连接成功。 Step 4:配置公开路由(把内网服务绑定到域名)连接成功后,要告诉 Cloudflare:访问哪个域名,转发到内网的哪个端口。 在 Tunnel 详情页,点「Public Hostname」→「添加公开主机名」。 以暴露一个跑在 8080 端口的 Web 服务为例:
点「保存」,Cloudflare 会自动在 DNS 里创建对应的 CNAME 记录。 几分钟后,打开浏览器访问 多服务并存:一个 Tunnel,多个子域名Tunnel 里可以同时配置多个「公开主机名」,每个对应不同的内网服务。比如:
每个子域名单独添加一条「公开主机名」规则,Cloudflare 自动路由,一台内网设备跑多个服务完全没问题。 进阶:暴露 SSH(命令行远程登录)除了 Web 服务,Tunnel 也支持暴露 SSH,在外网也能 服务端配置(内网设备上): 在「公开主机名」里添加一条:
客户端配置(你自己的电脑上): 需要在本地也安装 cloudflared,然后修改 SSH 配置文件: 在
之后正常 SSH 登录即可:
流量会经由 Cloudflare Tunnel 加密传输,比直接暴露 22 端口安全得多。 进阶:用 Access 加一层身份验证Tunnel 默认把内网服务直接暴露给所有人,如果你的服务本身没有密码保护(比如一些管理面板),建议加上 Cloudflare Access。 Access 可以要求访问者先登录(支持 Google、GitHub、邮件 OTP 等),验证通过后才能访问内网服务。 配置路径:Zero Trust → Access → Applications → 创建应用 → 选择 Self-hosted → 填入你的 Tunnel 域名 → 设置登录策略。 免费版 Access 支持 50 个用户,适合个人和小团队使用。 常见问题Q:国内访问速度怎么样? A:免费版 Tunnel 的节点在境外,国内访问会绕道,延迟通常在 100~300ms,适合偶尔访问管理页面,不适合高频访问或大文件传输。如果主要面向国内,建议搭配国内 CDN 或考虑其他方案。 Q:Tunnel 支持 UDP 吗(比如游戏服务器)? A:免费版 Tunnel 仅支持 HTTP/HTTPS/SSH/RDP 等基于 TCP 的协议,不支持 UDP。游戏服务器、DNS 服务等 UDP 场景需要付费的 Spectrum 产品。 Q:内网设备重启后 Tunnel 还能自动恢复吗? A:用 Q:一个 Cloudflare 账号可以建多少个 Tunnel? A:免费版没有明确限制,实测可以建很多个。一般建议按设备建 Tunnel(一台设备一个 Tunnel),同一台设备的多个服务用多条「公开主机名」规则区分。 Q:cloudflared 进程挂了怎么处理? A:检查状态:
Docker 方式:
Q:可以暴露局域网内其他设备的服务吗(不只是运行 cloudflared 的那台)? A:可以。URL 填内网 IP 而不是
只要运行 cloudflared 的设备和目标设备在同一局域网内,就可以这样转发。一台树莓派跑 cloudflared,可以把整个内网的所有服务都暴露出去。 安全建议Tunnel 虽然方便,但把内网服务暴露到公网本身就有风险,几点建议: 1. 有登录验证的服务才暴露:没有密码的管理面板(如部分 NAS 的内部服务)暴露前一定要加 Access 身份验证。 2. SSH 暴露要用密钥登录:禁止密码登录,只用 SSH 密钥,防暴力破解:
3. 不要暴露数据库端口:MySQL、Redis、PostgreSQL 这类服务不要直接暴露,通过应用层(Web 管理工具)访问。 4. 定期查看 Zero Trust 的访问日志:在 Zero Trust 控制台 → Logs 可以看到所有访问记录,有异常及时处理。 小结Cloudflare Tunnel 是目前个人和小团队内网穿透的最优解:
操作流程回顾:
如果你有多个内网服务,花 30 分钟配好之后,从世界任何地方都能访问家里的设备,而且比 frp 方案省钱、省心得多。
参考链接
阅读原文:原文链接 该文章在 2026/4/21 10:13:04 编辑过 |
关键字查询
相关文章
正在查询... |