· 技术备忘录  · 8 min read

不用公网IP!Cloudflare Tunnel 内网穿透NAS完整指南

没有公网IP也能让家庭NAS对外提供服务?Cloudflare Tunnel免费方案比frp/ngrok更安全、更稳定。手把手教你配置Docker、Cloudflare Access零信任认证,附带安全加固最佳实践。

没有公网IP也能让家庭NAS对外提供服务?Cloudflare Tunnel免费方案比frp/ngrok更安全、更稳定。手把手教你配置Docker、Cloudflare Access零信任认证,附带安全加固最佳实践。

如果你在家里部署了 NAS(群晖、TrueNAS、Unraid),一定遇到过这个痛点:

出门在外想访问家里的文件,但没有公网 IP。

传统的解决方案有三种:

  1. 端口映射:需要公网 IP,还要暴露端口到互联网,容易被扫描攻击。
  2. frp/ngrok:需要自己有一台云服务器做中转,维护成本高。
  3. Tailscale/ZeroTier:每台设备都要安装客户端,不方便分享给朋友。

2026年,我找到了更好的方案:Cloudflare Tunnel

它完全免费、无需公网 IP、自动 HTTPS 加密、还能隐藏真实 IP。 最重要的是:配置简单到令人发指

什么是 Cloudflare Tunnel?

简单来说,它是在你的本地服务和 Cloudflare 边缘网络之间建立一条加密隧道

你的浏览器 → Cloudflare CDN → Cloudflare Tunnel → 你的NAS

外界只能看到 nas.yourdomain.com 指向 Cloudflare,完全不知道你的真实 IP 在哪里。

前置条件

  • ✅ 一个域名(在 Cloudflare 管理 DNS)
  • ✅ 一台运行 Docker 的设备(NAS、树莓派、N100 迷你主机都可以)
  • ✅ Cloudflare 免费账户

不需要

  • ❌ 公网 IP
  • ❌ 端口映射
  • ❌ 云服务器

第一步:创建 Tunnel

1. 登录 Cloudflare Zero Trust 控制台

访问 https://one.dash.cloudflare.com,用你的 Cloudflare 账号登录。

2. 创建 Tunnel

  • 点击左侧菜单 AccessTunnels
  • 点击 Create a tunnel
  • 输入名称(如 home-nas
  • 选择你的域名

3. 安装 Connector

Cloudflare 会提供一段 Docker 命令,类似这样:

docker run cloudflare/cloudflared:latest tunnel --no-autoupdate run --token <YOUR_TOKEN>

复制这段命令,在你的 NAS 或服务器上执行。

第二步:配置 Public Hostname

Tunnel 创建后,你需要告诉 Cloudflare:“当用户访问 nas.yourdomain.com 时,转发到我本地的哪个服务”。

1. 添加 Public Hostname

在 Tunnel 配置页面,点击 Public HostnamesAdd a public hostname

2. 填写配置

  • Subdomain: nas(最终域名是 nas.yourdomain.com
  • Domain: 选择你的域名
  • Service: http://192.168.1.100:5000(你 NAS 的局域网 IP 和端口)

保存

3. 测试访问

现在,在任何地方访问 https://nas.yourdomain.com,应该能看到你的 NAS 登录界面。

就这么简单!

第三步:安全加固(必须做)

虽然 Tunnel 本身很安全,但你还得保护 NAS 不被未授权访问。

方案一:Cloudflare Access(推荐)

这是 Cloudflare 提供的零信任访问控制,可以要求用户登录才能访问。

配置步骤:

  1. 在 Zero Trust 控制台,点击 AccessApplications
  2. 点击 Add an applicationSelf-hosted
  3. 填写应用名称(如 Home NAS
  4. Session duration: 设置为 24 hours(每天登录一次即可)
  5. Authentication: 选择登录方式
    • One-time PIN: 发送验证码到邮箱(最简单)
    • GitHub/Google: 使用第三方账号登录
  6. Policies: 添加允许访问的邮箱地址

效果:

任何人访问 nas.yourdomain.com,都会先跳转到 Cloudflare 登录页面。 只有你授权的邮箱才能通过验证。

即使 NAS 密码泄露,黑客也进不来。

方案二:HTTP Basic Auth

如果你的 NAS 不支持复杂的认证,可以在 Tunnel 层面加一层密码保护。

cloudflared 配置文件中添加:

tunnel: your-tunnel-id
credentials-file: /etc/cloudflared/creds.json

ingress:
  - hostname: nas.yourdomain.com
    service: http://192.168.1.100:5000
    originRequest:
      noTLSVerify: true
  - service: http_status:404

然后通过 Nginx 反向代理添加 Basic Auth。

方案三:IP 白名单

如果你只在固定地点访问(如公司、咖啡厅),可以限制只允许特定 IP 访问。

在 Cloudflare Access Policies 中添加规则:

  • Include: IP Address → 你的公网 IP

性能优化

问题:延迟高怎么办?

Cloudflare Tunnel 的流量会经过 Cloudflare 的边缘节点,理论上会增加延迟。

但在实际使用中,我发现:

  • 国内访问欧洲 NAS: 延迟从 200ms 降到 150ms(因为走了 Cloudflare CDN 优化线路)
  • 文件传输速度: 取决于你的上行带宽,Tunnel 本身几乎没有损耗

优化建议:

  1. 启用 Argo Smart Routing(Cloudflare Pro 功能,$5/月)
    • 自动选择最优路由,降低延迟
  2. 缓存静态资源
    • 在 Cloudflare Dashboard 开启缓存,减少重复传输
  3. 使用 QUIC 协议
    • 现代浏览器默认支持,提升弱网环境下的体验

常见问题

Q1: Tunnel 断了怎么办?

A: cloudflared 会自动重连。你也可以用 Docker 的 --restart=always 确保容器崩溃后自动重启。

Q2: 可以暴露多个服务吗?

A: 可以。在同一个 Tunnel 下添加多个 Public Hostname:

  • nas.yourdomain.com → 192.168.1.100:5000
  • jellyfin.yourdomain.com → 192.168.1.100:8096
  • uptime.yourdomain.com → 192.168.1.100:3001

Q3: 免费版的限制是什么?

A: Cloudflare Tunnel 免费版没有任何限制。 你可以创建无限个 Tunnel,暴露无限个服务。 唯一的限制是 Cloudflare 的速率限制(正常人类用不到)。

Q4: 和 frp 比哪个更好?

A:

  • Cloudflare Tunnel: 免费、无需服务器、自动 HTTPS、隐藏 IP
  • frp: 需要自己的服务器、配置复杂、但可以点对点直连(延迟更低)

对于大多数家庭用户,Cloudflare Tunnel 完胜

我的实际架构

我现在是这样用的:

域名: zsx.one

Tunnel: home-services
├── nas.zsx.one → 群晖 DSM (192.168.1.100:5000)
│   └── 保护: Cloudflare Access (仅我的邮箱)
├── jellyfin.zsx.one → Jellyfin (192.168.1.100:8096)
│   └── 保护: Cloudflare Access (家人邮箱白名单)
├── uptime.zsx.one → Uptime Kuma (192.168.1.100:3001)
│   └── 保护: HTTP Basic Auth + IP 白名单
└── vaultwarden.zsx.one → Vaultwarden (192.168.1.100:8080)
    └── 保护: Cloudflare Access + MFA

所有服务都通过同一个 Tunnel 暴露,管理非常方便。

ZSX 的斩杀线建议

使用 Cloudflare Tunnel,如果:

  • ✅ 你没有公网 IP
  • ✅ 你不想维护 frp 服务器
  • ✅ 你重视安全性(隐藏真实 IP)
  • ✅ 你需要分享给家人/朋友访问
  • ✅ 你能接受 10-50ms 的额外延迟

使用 frp/ngrok,如果:

  • ✅ 你有公网 IP 但不想端口映射
  • ✅ 你对延迟极其敏感(如远程桌面)
  • ✅ 你已经有一台云服务器闲置
  • ✅ 你需要点对点直连(不走 CDN)

绝对不要直接端口映射,如果:

  • ❌ 你没有防火墙经验
  • ❌ 你的 NAS 固件很久没更新
  • ❌ 你存储了敏感数据

延伸阅读


最后的提醒: Cloudflare Tunnel 不是万能的。 如果你的上行带宽只有 5Mbps,再好的隧道也救不了你的传输速度。

但它解决了最核心的安全问题——让你在不暴露真实 IP 的前提下,享受公网访问的便利。

这才是真正的”斩杀线”思维:用最简单的方案,解决最关键的问题。

Back to Blog

Related Posts

View All Posts »
群晖NAS安全加固清单 - 2026版防勒索指南

群晖NAS安全加固清单 - 2026版防勒索指南

2026年NAS勒索病毒频发,你的数据真的安全吗?从关闭高危服务到配置防火墙规则,再到3-2-1备份策略落地,这份完整清单帮你守住数字资产的最后防线。包含LockBit 4.0防护建议。