Cloudflare Tunnel 是目前最安全、免费且无需公网IP的内网穿透方案,通过建立加密隧道直接连接云端,彻底解决了传统端口映射的安全隐患与配置难题。
为什么选择 Cloudflare Tunnel 替代传统穿透工具
很多开发者在搭建个人博客、远程桌面或开发测试环境时,首先想到的是 FRP 或 Ngrok,但这两种方案各有痛点:FRP 需要自备服务器并开放高危端口,Ngrok 免费版限速严重且域名不稳定,业内专家指出,随着零信任安全架构的普及,直接暴露端口到公网已成为高危操作,Cloudflare Tunnel 的核心优势在于“无端口暴露”,它不需要在你的路由器上设置复杂的 NAT 映射,也不需要购买昂贵的云服务器作为中转节点。
安全性对比:从“开门迎客”到“隐形守护”
传统内网穿透就像给家里装了一扇直接通向街道的门,任何知道地址的人都能尝试闯入,而 Cloudflare Tunnel 建立的是一个单向加密通道,你的本地服务仅与 Cloudflare 的边缘节点通信,外部流量必须经过 Cloudflare 的安全过滤才能到达你的内网,这种架构下,黑客无法直接扫描到你的内网 IP 和端口,极大地降低了被攻击的风险。
成本与稳定性:免费方案的真实现状
对于个人用户和小团队而言,成本是首要考量,市面上许多商业穿透服务按月收费,且价格不菲,Cloudflare Tunnel 的基础功能完全免费,且依托于 Cloudflare 全球庞大的 CDN 网络,带宽和稳定性远超个人搭建的 FRP 节点,据行业共识认为,在中小规模应用场景中,其可用性已达到企业级标准,足以支撑日常开发、演示甚至轻量级生产环境的需求。
Cloudflare Tunnel 内网穿透实操部署指南
部署过程并不复杂,主要分为账号准备、客户端安装、隧道创建和域名绑定四个步骤,我们将以最常见的 Linux 环境为例,Windows 和 macOS 的操作逻辑基本一致。
第一步:安装 Cloudflared 客户端

Cloudflare 提供了名为 cloudflared 的命令行工具,它是 Tunnel 的核心组件。
Linux 系统安装
对于 Debian/Ubuntu 用户,可以通过官方源直接安装:
sudo apt update sudo apt install cloudflared
对于 CentOS/RHEL 用户,可以使用 yum 或 dnf:
sudo yum install cloudflared
安装完成后,输入 cloudflared --version 确认安装成功。
第二步:登录并创建隧道
在终端执行登录命令,浏览器会弹出 Cloudflare 的授权页面,你需要登录拥有域名的 Cloudflare 账号,并授权 cloudflared 访问你的账户信息。
cloudflared tunnel login
登录成功后,创建一个新的隧道,你可以为隧道命名,my-home-tunnel:
cloudflared tunnel create my-home-tunnel
执行后,终端会返回一个唯一的 Tunnel ID(UUID),请务必保存好这个 ID,后续配置需要用到,当前目录下会生成一个名为 cert.pem 的文件,这是隧道的身份证书。
第三步:配置路由规则
这是最关键的一步,你需要告诉 Tunnel 如何将外部请求转发到本地的具体服务,创建一个名为 config.yml 的配置文件:
tunnel: <你的Tunnel-ID>
credentials-file: /path/to/cert.pem
ingress:
- hostname: blog.example.com
service: http://localhost:8080
- hostname: ssh.example.com
service: ssh://localhost:22
- service: http_status:404
这里配置了两个规则:
- 当访问
blog.example.com时,流量转发到本地 8080 端口的 Web 服务。 - 当访问
ssh.example.com时,流量转发到本地 22 端口的 SSH 服务。 - 其他所有未匹配的请求返回 404 错误。
第四步:注册隧道并发布

将配置好的隧道注册到 Cloudflare 网络:
cloudflared tunnel route dns my-home-tunnel blog.example.com cloudflared tunnel route dns my-home-tunnel ssh.example.com
Cloudflare 会自动在 DNS 中创建 CNAME 记录,指向 your-tunnel-id.cfargotunnel.com,你无需在 Cloudflare 控制台手动添加 DNS 记录,这一步实现了自动化绑定。
启动隧道服务:
cloudflared tunnel run my-home-tunnel
如果看到类似 tunnel ID: xxx... started successfully 的提示,说明隧道已建立,你可以在公网通过 blog.example.com 访问你内网的 Web 服务了。
常见问题与故障排查
在实际使用中,可能会遇到连接不稳定或配置错误的问题,以下是针对 Cloudflare Tunnel 内网穿透教程中常见疑问的解答。
Cloudflare Tunnel 内网穿透速度慢怎么办
速度问题通常与地理位置和 TLS 终止位置有关,Cloudflare 默认在边缘节点终止 TLS,这意味着流量在到达你的内网前会经过 Cloudflare 的全球网络,如果你的源站服务在本地,延迟主要取决于你与最近 Cloudflare 边缘节点的距离,建议检查本地网络上行带宽,并确保 cloudflared 进程未被其他高负载任务占用,启用 HTTP/2 可以提升多路复用效率,减少连接开销。
如何设置 HTTPS 证书
Cloudflare Tunnel 默认提供免费的 Universal SSL 证书,无需手动配置 Let’s Encrypt,你只需在 Cloudflare 控制台确保域名 DNS 已正确指向 Tunnel,并在 SSL/TLS 设置中选择“Full”或“Full (strict)”模式,对于大多数 Web 应用,默认的 Cloudflare 证书已足够满足浏览器安全标识需求,无需额外购买昂贵的企业级证书。
Cloudflare Tunnel 内网穿透支持哪些协议
除了常见的 HTTP 和 HTTPS,Tunnel 还支持 SSH、TCP、RDP 甚至自定义的 TCP 端口转发,在 config.yml 中,你可以通过指定

service 为 tcp://localhost:port 来转发任意 TCP 流量,转发数据库端口时,务必注意不要直接暴露数据库端口到公网,建议结合 Cloudflare Access 进行身份验证,确保只有授权用户才能访问内网数据库。
进阶优化与安全加固建议
为了让 Tunnel 更加稳定和安全,建议采取以下措施。
使用 Systemd 管理进程
手动运行 cloudflared tunnel run 会在终端关闭时中断服务,建议将其配置为 systemd 服务,实现开机自启和崩溃自动重启。
创建服务文件 /etc/systemd/system/cloudflared.service:
[Unit] Description=Cloudflare Tunnel After=network-online.target Wants=network-online.target [Service] Type=notify ExecStart=/usr/bin/cloudflared --no-autoupdate tunnel run my-home-tunnel Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target
启用并启动服务:
sudo systemctl enable cloudflared sudo systemctl start cloudflared
集成 Cloudflare Access 实现零信任访问
对于敏感服务(如管理后台、SSH),强烈建议启用 Cloudflare Access,它允许你基于用户身份(如 Google、GitHub 账号或邮件验证)而非 IP 地址来控制访问权限,在 config.yml 中,将 service 指向 http://localhost:4040(Access 代理端口),并在 Cloudflare 控制台配置 Access 策略,这样,即使隧道暴露,没有合法身份的用户也无法访问内网资源。
Cloudflare Tunnel 以其零信任架构、免费使用和极简配置,成为当前内网穿透的首选方案,通过本文的实操步骤,你可以快速搭建起安全可靠的远程访问通道,安全不仅依赖于工具,更在于正确的配置习惯,定期更新 cloudflared 版本,严格管理 DNS 记录,并善用 Access 策略,才能让你的内网服务在享受便利的同时,远离网络威胁。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/389835.html
