Cloudflare Tunnel 做内网穿透
Cloudflare Tunnel 是 Cloudflare 提供的一种安全反向隧道技术,可以把你本机或内网的服务(比如一个网页、API)安全地暴露到公网,不需要你有公网 IP,也不用在路由器上开端口。
它会在你的设备和 Cloudflare 全球网络之间建立一个加密的长连接,别人访问你指定的域名时,流量就会通过这个隧道转发到你本地的服务上。
需要注册吗?
- 临时尝鲜 / 临时分享:不需要注册,甚至不需要有域名。Cloudflare 提供一个叫 TryCloudflare 的功能,会随机生成一个
xxx.trycloudflare.com域名直接穿透到你的本地服务。 - 长期使用 / 绑定自己的域名:需要注册一个免费的 Cloudflare 账户,并且你要有一个自己的域名,把这个域名的 DNS 托管到 Cloudflare(也是免费的)。
需要付费吗?
普通个人 / 小项目基本免费,所有核心功能在 Free 计划 下都可以用:
- 创建隧道:免费,数量不限
- 流量:Cloudflare 对 Tunnel 本身不按流量收费,也不设硬性带宽上限,遵循合理使用政策
- 同时还能免费获得 Cloudflare 的 CDN、DDoS 防护、SSL 证书等
只有当你需要企业级功能(如更精细的访问控制、日志保留更久、专属 IP 等)时,才需要升级付费套餐。
怎么用?(分两种典型场景)
下面以 macOS / Linux 为例,Windows 操作类似。
场景一:临时分享(零配置,无需账号/域名)
安装 cloudflared
# macOS brew install cloudflared # Linux (amd64) wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 chmod +x cloudflared-linux-amd64 sudo mv cloudflared-linux-amd64 /usr/local/bin/cloudflared本地启动一个服务,比如
python -m http.server 8000,或你的项目运行在localhost:3000。运行临时隧道
cloudflared tunnel --url http://localhost:8000终端会输出一个类似
https://xxx.trycloudflare.com的随机地址,把这个地址发给任何人,对方就能直接访问你本地的服务。
按Ctrl+C即断开。
场景二:长期部署(绑定自己的域名)
前提: 你已经注册 Cloudflare 账号,并且把你的域名(如 example.com)添加到 Cloudflare,域名状态为 Active。
安装 cloudflared(同上)
登录认证
cloudflared tunnel login会在浏览器打开 Cloudflare 授权页面,选择你的域名,点击授权。
创建隧道
cloudflared tunnel create my-tunnel这条命令会生成隧道的凭证文件(存于
~/.cloudflared/<tunnel-id>.json),并返回一个 Tunnel ID。将域名指向隧道
cloudflared tunnel route dns my-tunnel app.example.com这会在 Cloudflare DNS 里自动加一条
CNAME记录,把app.example.com指向你的隧道。编写配置文件
创建~/.cloudflared/config.yml:tunnel: <你的Tunnel ID> credentials-file: /home/你的用户名/.cloudflared/<tunnel-id>.json ingress: - hostname: app.example.com service: http://localhost:3000 - service: http_status:404这里把
app.example.com的访问转发到本地的 3000 端口。运行隧道
cloudflared tunnel run my-tunnel访问
https://app.example.com即可到达你本地的服务(Cloudflare 会自动加上 HTTPS)。设置开机自启 / 后台运行
sudo cloudflared service install(Linux 下会注册 systemd 服务;macOS 可用 launchd 或 brew services)
额外提示:用 Web 面板管理(可视化)
你也可以直接在浏览器里操作:
进入 Cloudflare Zero Trust 仪表板 → Networks → Tunnels,点 “Create a tunnel”,按向导完成安装、配置、DNS 指向,完全不用手写命令。
本作品采用《CC 协议》,转载必须注明作者和本文链接
关于 LearnKu