完全免费、免备案!用 Cloudflare Tunnel 零成本实现内网穿透(保姆级教程)

发布于 2026-11-10 · Cloudflare教程


卡洛研究所页眉
卡洛研究所页眉

完全免费、免备案!用 Cloudflare Tunnel 零成本实现内网穿透(保姆级教程)

本地做好的项目,发一个网址就能让朋友打开。Cloudflare Tunnel 可以把内网网页接到公网域名上,省去公网 IP 和路由器端口映射,适合项目演示、开发联调和分享自建网页。

接入域名、启动连接器、绑定服务,完成这几步就能用自己的域名访问本地项目。Tunnel 可使用免费方案,自有域名的注册和续费单独计算。

目录

01|准备好域名和本地服务

开始前准备三样东西:Cloudflare 账号、一个能修改 DNS 的域名,以及已经安装并启动 Docker 的电脑或 NAS。

先启动要分享的网页服务,在同一局域网里的另一台设备上确认能打开。本文使用的示例地址是:

http://192.168.1.100:8080

后续把这个 IP 和端口换成自己的实际地址。

Cloudflare Tunnel 的连接器叫 cloudflared。它从内网主动建立连接,再把公网请求转到你的网页服务。使用期间,让网页服务和连接器持续运行即可。

02|把域名接入 Cloudflare

登录 Cloudflare 控制台,选择添加域名,输入自己的根域名,再选择 Free 计划。已有域名且状态为 Active 的,可以直接进入下一步。

检查扫描出来的 DNS 记录,保留现有网站和邮箱使用的 A、CNAME、MX、TXT 等记录。

页面会分配两条 Nameservers。回到购买域名的平台,找到“DNS 服务器”或“Nameservers”,替换成 Cloudflare 分配的地址。

这里修改的是域名的 DNS 服务器。等待 Cloudflare 显示 Active,域名接入就完成了。

03|创建隧道,取得安装命令

在主控制台进入 Networking → Tunnels → Create Tunnel。使用 Zero Trust 控制台时,从 Networks → Connectors 进入 Cloudflare Tunnels,点击创建。

下面的步骤图展示 Zero Trust 界面。进入类型选择页后,点击 Select Cloudflared。

选择Cloudflared连接器
选择Cloudflared连接器

图 1|创建隧道时选择 Cloudflared

填写隧道名称,例如 home-web,点击 Save tunnel。这个名字用于后台管理,可以按设备或项目命名。

填写隧道名称
填写隧道名称

图 2|填写用于管理的隧道名称

进入安装页面,选择 Docker,复制页面生成的安装命令。其中 --token 后面的长字符串,就是启动这条隧道需要的 Token,留在自己的设备上使用。

安装页面选择Docker
安装页面选择Docker

图 3|在安装环境中选择 Docker

04|用 Docker 启动连接器

在电脑或 NAS 上打开终端,确认 Docker 服务已启动:

docker info

能看到 Client 和 Server 信息,就可以继续。把下面的 TUNNEL_TOKEN 换成刚才复制的真实 Token,执行这一整行命令:

docker run -d --name cf-tunnel --restart unless-stopped cloudflare/cloudflared:latest tunnel --no-autoupdate run --token "TUNNEL_TOKEN"

容器会在后台运行,并在 Docker 启动后自动恢复,手动停止的容器除外。

查看运行情况和最近的日志:

docker ps --filter name=cf-tunnel
docker logs --tail 50 cf-tunnel

回到 Cloudflare 后台,Connectors 区域显示 Connected,说明连接器已经上线。

连接器Connected状态
连接器Connected状态

图 4|连接器上线后显示 Connected

05|把公网域名指向内网服务

在隧道详情中选择 Routes → Add route → Published application。Zero Trust 界面中,对应的是 Published applications 或 Published application routes。

公网域名按下面填写:

  • Subdomain:填 web,也可以换成自己喜欢的前缀。
  • Domain:选择已经接入的根域名。
  • Path:留空,让整个域名都指向这个应用。

例如,组合后的公网域名是 web.example.com。

公网域名设置字段
公网域名设置字段

图 5|在 Hostname 区域填写子域名并选择根域名

接着配置 Service。本文的网页服务使用 HTTP,按界面填写:

  • 分为 Type、URL 两个框时:Type 选 HTTP,URL 填 192.168.1.100:8080。
  • 只有 Service URL 一个框时:填 http://192.168.1.100:8080。

这一处最关键:Docker 里的 localhost 指向连接器容器自身。 访问宿主机上的网页,应填写容器能访问到的局域网地址,应用监听该网卡或 0.0.0.0。

其他部署方式可以这样对应:

  • Windows、macOS 的 Docker Desktop:宿主机服务使用 host.docker.internal:8080。
  • Linux Docker Engine:创建连接器容器时加入 --add-host host.docker.internal:host-gateway,再使用上述主机名,应用监听和防火墙需允许连接。
  • 应用和连接器处于同一个自定义 Docker 网络:使用服务名和容器内部端口,例如 my-web:8080。

填好后点击 Add route、Save 或 Complete setup。控制台会为这个公网域名配置相应的 DNS 记录。

隧道列表中可以查看 Healthy 状态:

隧道列表Healthy状态
隧道列表Healthy状态

图 6|隧道列表中的 Healthy 状态

在域名的 DNS 页面,可以找到对应的隧道记录:

域名DNS记录
域名DNS记录

图 7|DNS 页面中由隧道配置生成的记录

06|用手机验证公网访问

手机关闭 Wi-Fi,切换到蜂窝网络,在浏览器输入自己的公网地址,例如 https://web.example.com。

能打开原来的网页,就完成了内网到公网的访问。 公网地址使用 HTTPS,本地服务可以继续使用 HTTP。

若没有打开,按现象检查:

  • 502:核对 Service URL、协议和端口,确认连接器能访问应用。
  • 1033:查看连接器是否在线,以及容器和设备的网络状态。
  • 域名无法解析:检查域名是否 Active,以及对应 DNS 记录是否存在或有同名冲突。

需要限制访问对象时,可以为应用设置 Cloudflare Access 或登录验证。

平时可用下面的命令暂停分享:

docker stop cf-tunnel

重新启用时执行 docker start cf-tunnel。

07|总结

Cloudflare Tunnel 把本地网页变成了可以直接分享的网址。域名接入后,用 Docker 运行连接器,再把公网域名映射到应用地址,朋友就能通过浏览器访问你的项目。

配置时重点看 域名 Active、连接器 Connected、Service 地址正确,最后用手机网络打开页面验证。以后再分享同一个项目,就可以继续使用这个域名。

卡洛研究所关注二维码页脚
卡洛研究所关注二维码页脚