文章

用 Cloudflare Tunnel 0成本搞定内网穿透

手把手教你用 Cloudflare Tunnel 实现免费内网穿透,支持自定义域名和自动 SSL 证书。

用 Cloudflare Tunnel 0成本搞定内网穿透

概述

假如说你有内网穿透的需求,同时有一个域名,又恰巧还注册了 Cloudflare,那就可以薅羊毛了,直接使用 Cloudflare Tunnel 的隧道能力直接实现内网穿透,并直接配置 SSL。(开通Cloudflare需要输入信用卡信息,但是不扣费)

一、注册域名(如已有可跳过)

如果没有域名,可以去 https://www.spaceship.com/ 注册一个便宜的域名。推荐理由:

  • 💰 价格便宜(约 8 块人民币)
  • 💳 支持支付宝付款
  • 📝 操作简单

二、添加域名到 Cloudflare

2.1 进入添加站点页面

登录 Cloudflare 控制台,点击「添加站点」按钮,进入添加站点页面。

添加站点页面

页面提供三个选项:

选项说明
连接域名(推荐)将已有的域名连接到 Cloudflare
转移域名将域名转移到 Cloudflare 管理
购买域名直接在 Cloudflare 购买新域名

2.2 选择服务计划

选择 Free(免费) 计划即可满足内网穿透需求。

选择服务计划

Cloudflare 服务计划对比:

计划价格核心功能
Free$0/月Workers 100K请求/天、D1 5GB、R2 10GB、Universal SSL、全球 CDN
Pro$20/月WAF 防护(OWASP)、图像优化、CDN 缓存分析
Business$200/月PCI/SOC2 合规、自定义 SSL、复杂机器人检测
Enterprise定制高级 WAF、DDoS 保护、API Gateway、SSO

2.3 更新名称服务器

按照页面提示,前往你的域名注册商处,将名称服务器替换为 Cloudflare 提供的地址。

更新名称服务器

需要设置的两个 Cloudflare 名称服务器:

1
2
darwin.ns.cloudflare.com
mimi.ns.cloudflare.com

⚠️ 提示:此操作不太可能导致停机。如果不确定如何操作,可以先点击「DNS 记录」检查现有记录。

三、进入 Zero Trust

返回 Cloudflare 控制台,进入 Zero Trust 控制台。

Zero Trust 入口

进入路径:

1
左侧菜单 → 保护和连接 (Protect and Connect) → Zero Trust

然后点击右上角的 「开始使用」 按钮。

四、创建 Cloudflare Tunnel

4.1 进入连接器页面

在 Zero Trust 控制台中,依次进入:

1
网络 (Network) → 连接器 (Connectors) → Cloudflare Tunnels

连接器管理页面

💡 说明:Cloudflare Tunnel 让用户无需公开可路由的 IP 地址即可连接资源。

4.2 创建新隧道

点击 「+ 创建隧道」 按钮,进入创建流程。

创建隧道

4.3 选择隧道类型

创建隧道分为四个步骤:

1
2
3
4
1. 选择隧道类型(当前)
2. 为隧道命名
3. 安装并运行连接器
4. 路由隧道

选择 Cloudflared(推荐方案)

类型说明适用场景
Cloudflared(推荐)建立与 Cloudflare 的安全仅出站连接用户到网络的连接,无需开放入站端口
WARP (Beta)支持站点到站点、双向和网状网络连接仅限 Linux 发行版,高级网络架构

4.4 为隧道命名

使用描述性名称,建议每个网络只创建一个隧道。

为隧道命名

💡 命名建议:基于要连接的网络命名,例如 home-serverdev-machine 等。

五、安装并运行连接器

5.1 选择操作系统

根据你的本地设备选择对应的操作系统(Mac/Windows/Linux)。

安装并运行连接器

5.2 macOS 安装命令

⚠️ 安全提醒:请妥善保管您的令牌,此命令包含敏感令牌,任何能访问此令牌的人都可以运行隧道。

方式一:未安装 cloudflared

1
brew install cloudflared && sudo cloudflared service install <你的token>

方式二:已安装 cloudflared,安装为自动运行服务

1
sudo cloudflared service install <你的token>

方式三:仅在当前终端手动运行

1
cloudflared tunnel run --token <你的token>

六、配置域名路由

这是最后一步,将域名绑定到本地服务。

配置域名路由

6.1 主机名设置

字段说明示例
子域名子域名前缀(可选)wwwblogapi
选择你注册的域名honorest.online
路径正则匹配路径(可选)^/blog^/api

6.2 路径匹配规则

匹配方式输入示例说明
匹配所有路径留空匹配所有访问请求
在路径中任何位置匹配blog匹配 /blog/archive/blog/post
匹配路径前缀^/api匹配 /api 开头的路径
按扩展名匹配`(jpgpng

6.3 服务设置(本地服务地址)

字段说明示例
类型协议类型(必填)HTTP、HTTPS、TCP
URL本地服务地址(必填)https://localhost:8080tcp://localhost:3306

💡 格式示例

  • Web 服务:https://localhost:8080
  • SSH 服务:tcp://localhost:22
  • 数据库:tcp://localhost:3306

七、验证与使用

完成以上所有设置后,就可以通过配置的域名访问你的本地服务了!

验证步骤

  1. 检查隧道状态:在 Cloudflare Tunnels 页面确认隧道状态为「正常」(绿色)
  2. 测试访问:使用浏览器访问配置的域名
  3. 查看日志:如有异常,点击「查看日志」排查问题

隧道管理

操作说明
查看状态隧道列表显示正常运行时间
编辑配置点击 … 更多操作
查看日志排查连接问题

八、常见问题

Q1: 隧道状态显示异常怎么办?

  • 检查本地 cloudflared 是否正常运行
  • 确认 token 是否正确
  • 查看连接器日志排查问题

Q2: 如何实现多个服务映射?

  • 创建多个隧道
  • 或使用路径匹配(如 /blog/api)区分不同服务

Q3: 如何实现 HTTPS 访问?

  • 本地使用 HTTP + 端口,Cloudflare 自动配置 SSL
  • 或本地配置 HTTPS 证书

总结

Cloudflare Tunnel 是一种简单、免费、安全的内网穿透方案,特别适合:

  • 🌐 暴露本地开发环境
  • 🏠 家庭 NAS 远程访问
  • 🧪 临时测试环境分享
  • 🚀 无公网服务器的开发者

💡 优势:完全免费、自动配置 SSL、无需开放防火墙端口、稳定可靠。

本文由作者按照 CC BY 4.0 进行授权