OpenWrt远程访问神器:Cloudflare Tunnel零成本内网穿透|小白也能学会|免费、安全、无需公网IP

你是否遇到过这样的困扰:
想要在外网访问家里或公司的内网服务(例如 NAS、路由器、监控摄像头),却因为没有公网 IPv4 地址、运营商封锁端口,或者 IPv6 普及不佳而无法实现?传统的 DDNS + 端口映射不仅复杂,而且存在安全隐患;而租 VPS 做中转又增加了成本和运维负担。

其实,只要你拥有一个域名和一个 Cloudflare 账号,就能利用 Cloudflare Tunnel(Argo Tunnel) 实现安全、免费的内网穿透。它的优势在于:

  • 无需公网 IP 和端口映射
  • 自动建立到 Cloudflare 节点的加密通道,外部访问直接通过域名接入
  • 全球加速,稳定可靠
  • 结合 Cloudflare Zero Trust(Access),还能在访问前强制身份验证(指定邮箱、SSO 或 2FA),即便域名泄露,未授权的人也无法进入

🛠️ 准备工作

在开始之前,请确认你已具备以下条件:

1. OpenWrt 的软路由

2. 一个域名

  • 已托管到 Cloudflare(即 DNS 在 Cloudflare 管理)

3. 一个 Cloudflare 账号

4. 可选:外网设备

  • 用于测试访问(电脑 / 手机,需在外部网络环境下验证隧道是否生效)

1️⃣OpenWrt安装Cloudflared

1. 登陆openwrt LuCI管理后台

  • 菜单:系统 → 软件包 → 搜索Cloudflare

2. 找到luci-i18n-cloudflared-zh-cn →点击安装

image-20250918071410102

其他依赖软件会一起安装,安装成功后,刷新浏览器,左边菜单栏会才行VPN菜单栏.

3. 左侧菜单会新增 VPN → Cloudflare 零信任隧道

image-20250918071444859

说明:cloudflared 是 Cloudflare 官方提供的轻量客户端,专门负责和 Cloudflare 建立隧道。

2️⃣ 在 Cloudflare Dashboard 创建隧道

1. 创建Cloudflare Trust隧道

  • VPN → Cloudflare 零信任隧道→网络→Tunnels→创建隧道

image-20250918071613608

或者:登录 Cloudflare Zero Trust 控制台Network → Tunnels → Create Tunnel

  • 输入隧道名称(如 openwrt-home)→保存/下一步

image-20250917064453726

  • 路由流量→子域:输入二级域名名称→域:选择托管到CF对域名→类型:选择对于服务→URL:填写软路由管理IP

image-20250917063935457

  • 子域:openwrt
  • 域名:选择你托管的域(如 100998.xyz)
  • 类型:http
  • URL:192.168.30.1 (路由器管理界面)

这样配置后,访问 openwrt.100998.xyz 时,Cloudflare 会把请求转发到你路由器的管理页面。

3️⃣ 获取并填写令牌(Token)

  • 在 Cloudflare Tunnel 页面 → 找到刚创建的隧道 → 点击右边 三个点 → 配置
  • 选择你的操作系统(这里对应 OpenWrt,用 DebianToken)
  • 复制令牌,形如:
1
cloudflared tunnel run --token eyJhIjoi...xxxx
  • 回到 OpenWrt LuCI → VPN → Cloudflare → 令牌框里只填 eyJhIjoi…xxxx(不要写前面的 cloudflared tunnel run –token)

image-20250917075218737

常见错误:直接粘贴整行命令,导致启动失败。必须只保留 Token 本身。

4️⃣ 上传配置文件 config.yml

配置文件用于描述隧道与内网服务的映射关系:

1
2
3
4
5
6
7
tunnel: openwrt-home #填写隧道名称
credentials-file: /root/.cloudflared/隧道ID.json

ingress:
- hostname: openwrt.100998.xyz #填写创建隧道的二级域名
service: http://192.168.30.1:80 #填写路由器管理IP
- service: http_status:404
  • 在电脑创建一个文本文档→名称修改cofig.yml 注意文件名后缀为.yml
  • 复制配置文件内容到config.yml→按照提示修改信息→保存

image-20250917075546687

说明:

credentials-file 路径是 Cloudflare 分配的 JSON 凭证

ingress 可以写多个内网服务(例如再加一个 NAS)

  • 创建完成后,上传配置文件→配置文件路径→上传刚才创建的config.yml文件

5️⃣ 上传源站证书

  • 获取证书:源站证书→点击此处→选择域名→点击授权→证书会自动下载

image-20250917225154553

  • 证书上传:回到openwrt cloudflare→点击源站证书→选择下载cert.pem→点击上传

image-20250917225459036

证书用于证明这个隧道属于你的账号,否则 cloudflared 无法成功认证。

6️⃣ 启用并运行隧道

  • 点击启用→点击保存并应用

image-20250917230225585

  • 状态显示运行中,Cloudflare Tunnel配置成功

image-20250917230743119

  • 打开浏览器 → 输入 openwrt.100998.xyz,即可远程访问 OpenWrt

image-20250917232716973

7️⃣ 添加 Zero Trust Access 验证

到目前为止,你的服务已经能通过域名访问,但任何人都能访问(只要猜到域名)。为了安全,必须加上 Zero Trust 验证。

1. 开通Cloudflare Zero Trust:在 Cloudflare Zero Trust 控制台 → Access → 应用程序→选择计划→选择0美元计划→购买即可

image-20250917235048923

CloudFlare账户需要绑定支付方式,按提示绑定即可,开通Zero Trust是免费,不会扣费,如果担心绑定银行卡也风险,建议绑定PayPal账户。

2. 配置Cloudflare Zero Trus:

  • 添加应用程序:Access → 应用程序→添加应用程序→填写应用程序名称
  • 添加公共主机:点击添加公共主机名→ 子域填写创建隧道子域名 →域选择绑定隧道域名

image-20250918010224696

3. 添加访问策略:

  • 点击添加策略→ 策略名称例如only→ 操作Allow→ 选择器Emails→ 值填写你的邮箱→点击保存

image-20250918061815729

  • 返回应用程序页面→点击·选择现有策略→现在策略例如only→保存即可创建好应用程序

4.验证测试

  • 外网通过域名访问,先跳转到Cloudflare Access验证→输入验证邮箱账号→点击send me a code

image-20250918070917468

  • 查看邮箱验证码→输入Access验证

image-20250918071119090

✅Cloudflare Trust 部署完成

  • 已经可以用域名(openwrt.100998.xyz)远程访问 OpenWrt 管理界面。
  • 不需要公网 IP,也不用开端口,Cloudflare 自动帮你中转流量。
  • 搭配 Zero Trust Access,即使域名泄露,也只有通过验证的账号才能访问
  • 简单、免费、安全,非常适合个人和家庭用户

通过本教程,我们在 OpenWrt 上成功部署了 Cloudflare Tunnel,并结合 Zero Trust Access 做了访问验证,实现了在没有公网 IP、无需端口映射的情况下,安全地远程访问内网服务。

相比传统的 DDNS + 端口转发方案,这种方式不仅更安全,而且完全免费,配置流程也相对简洁。结合 Cloudflare 强大的全球节点,远程访问的稳定性也更有保障。

如果你和我一样,想要在外网安全访问路由器、NAS 或其他内网服务,Cloudflare Tunnel 绝对是一个值得尝试的方案。

参考资料: