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

OpenWrt远程访问神器:Cloudflare Tunnel零成本内网穿透|小白也能学会|免费、安全、无需公网IP
Hans汉斯你是否遇到过这样的困扰:
想要在外网访问家里或公司的内网服务(例如 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 →点击安装
其他依赖软件会一起安装,安装成功后,刷新浏览器,左边菜单栏会才行VPN菜单栏.
3. 左侧菜单会新增 VPN → Cloudflare 零信任隧道
说明:cloudflared 是 Cloudflare 官方提供的轻量客户端,专门负责和 Cloudflare 建立隧道。
2️⃣ 在 Cloudflare Dashboard 创建隧道
1. 创建Cloudflare Trust隧道
- VPN → Cloudflare 零信任隧道→网络→Tunnels→创建隧道
或者:登录 Cloudflare Zero Trust 控制台 → Network → Tunnels → Create Tunnel
- 输入隧道名称(如 openwrt-home)→保存/下一步
- 路由流量→子域:输入二级域名名称→域:选择托管到CF对域名→类型:选择对于服务→URL:填写软路由管理IP
- 子域: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)
常见错误:直接粘贴整行命令,导致启动失败。必须只保留 Token 本身。
4️⃣ 上传配置文件 config.yml
配置文件用于描述隧道与内网服务的映射关系:
1 | tunnel: openwrt-home #填写隧道名称 |
- 在电脑创建一个文本文档→名称修改
cofig.yml注意文件名后缀为.yml - 复制配置文件内容到config.yml→按照提示修改信息→保存
说明:
credentials-file 路径是 Cloudflare 分配的 JSON 凭证
ingress 可以写多个内网服务(例如再加一个 NAS)
- 创建完成后,上传配置文件→配置文件路径→上传刚才创建的config.yml文件
5️⃣ 上传源站证书
- 获取证书:源站证书→点击
此处→选择域名→点击授权→证书会自动下载
- 证书上传:回到openwrt cloudflare→点击
源站证书→选择下载cert.pem→点击上传
证书用于证明这个隧道属于你的账号,否则 cloudflared 无法成功认证。
6️⃣ 启用并运行隧道
- 点击
启用→点击保存并应用
- 状态显示运行中,Cloudflare Tunnel配置成功
- 打开浏览器 → 输入 openwrt.100998.xyz,即可远程访问 OpenWrt
7️⃣ 添加 Zero Trust Access 验证
到目前为止,你的服务已经能通过域名访问,但任何人都能访问(只要猜到域名)。为了安全,必须加上 Zero Trust 验证。
1. 开通Cloudflare Zero Trust:在 Cloudflare Zero Trust 控制台 → Access → 应用程序→选择计划→选择0美元计划→购买即可
CloudFlare账户需要绑定支付方式,按提示绑定即可,开通Zero Trust是免费,不会扣费,如果担心绑定银行卡也风险,建议绑定PayPal账户。
2. 配置Cloudflare Zero Trus:
- 添加应用程序:Access → 应用程序→添加应用程序→填写
应用程序名称 - 添加公共主机:点击
添加公共主机名→ 子域填写创建隧道子域名→域选择绑定隧道域名
3. 添加访问策略:
- 点击
添加策略→ 策略名称例如only→ 操作Allow→ 选择器Emails→ 值填写你的邮箱→点击保存
- 返回应用程序页面→点击·
选择现有策略→现在策略例如only→保存即可创建好应用程序
4.验证测试
- 外网通过域名访问,先跳转到Cloudflare Access验证→输入验证邮箱账号→点击
send me a code
- 查看邮箱验证码→输入Access验证
✅Cloudflare Trust 部署完成
- 已经可以用域名(openwrt.100998.xyz)远程访问 OpenWrt 管理界面。
- 不需要公网 IP,也不用开端口,Cloudflare 自动帮你中转流量。
- 搭配 Zero Trust Access,即使域名泄露,也只有通过验证的账号才能访问
- 简单、免费、安全,非常适合个人和家庭用户
通过本教程,我们在 OpenWrt 上成功部署了 Cloudflare Tunnel,并结合 Zero Trust Access 做了访问验证,实现了在没有公网 IP、无需端口映射的情况下,安全地远程访问内网服务。
相比传统的 DDNS + 端口转发方案,这种方式不仅更安全,而且完全免费,配置流程也相对简洁。结合 Cloudflare 强大的全球节点,远程访问的稳定性也更有保障。
如果你和我一样,想要在外网安全访问路由器、NAS 或其他内网服务,Cloudflare Tunnel 绝对是一个值得尝试的方案。
参考资料:























