内网穿透新技能 - Cloudflare Zero Trust

内网穿透新技能 - Cloudflare Zero Trust

💡 原文中文,约2300字,阅读约需6分钟。
📝

内容提要

文章介绍如何用 Cloudflare Zero Trust 的 Tunnels 实现内网穿透:需拥有域名并将 DNS 托管到 Cloudflare,在控制台创建 Tunnel,在局域网设备(如 Unraid 通过 Docker)部署连接,再配置内网服务与域名映射,即可从外网访问 NAS。由于服务暴露公网,应设置强密码,并使用 Access 的 One-time PIN 邮箱验证码进行二次验证,限制访问人员并设置会话有效期。

🔎

延伸解读

适用场景与前提条件

文章面向有 NAS 且需要从外网访问的家庭用户,但实现内网穿透的前提是拥有一个域名并将 DNS 托管到 Cloudflare,最好还申请 Cloudflare 的 HTTPS 证书。如果缺少域名或不愿迁移 DNS,则无法直接套用此方案。此外,只需在局域网中一台设备上建立 Tunnel,即可通过路由配置访问内网几乎所有服务,无需为每台设备单独部署。

部署与配置要点

在 Cloudflare 控制台创建 Tunnel 后,需在局域网设备上部署连接,文章以 Unraid 通过 Docker 为例,复制命令运行即可。注意关闭终端后容器会自动停止,需在 Docker 管理器中手动运行并开启自动启动。连接状态变为 Connected 后,可添加 Public hostnames,将内网服务地址(如 192.168.2.8:80)映射到自定义域名,每个 Tunnel 支持多个映射。

安全风险与二次验证

映射后内网服务即暴露在公网,他人也可访问,因此务必为服务设置强密码。为进一步防范密码泄露或暴力破解,可利用 Zero Trust 的 Access 功能添加二次验证:创建 Self-hosted 应用,设置 One-time PIN 策略,仅允许指定邮箱获取一次性验证码。只有输入预设邮箱才能收到验证码,从而限制访问人员,并可在 Session duration 中设置会话有效期。

❓

Q&A

想用 Cloudflare Zero Trust 做内网穿透,需要提前准备什么?

需要准备一个域名,并将该域名的 DNS 解析服务托管到 Cloudflare;最好也申请一个 Cloudflare 提供的 HTTPS 证书。

Cloudflare Zero Trust 的 Tunnel 怎么创建和部署?

在 Cloudflare 控制台进入 Zero Trust,左侧菜单选择 Tunnels,点击 Create a tunnel,填写名称并保存。然后按需选择平台部署连接器,例如在 Unraid 上使用 Docker 复制命令运行即可。部署后 Tunnel 设置界面会显示连接状态为 Connected。

如何将内网服务通过 Tunnel 映射到域名?

在 Tunnel 设置中点击 Next,配置需要访问的内网服务地址(如 192.168.2.8:80)和对应的公网域名(如 test.slarker.me),保存后即可通过域名访问内网服务。每个 Tunnel 可添加多个 Public hostnames 来映射不同服务。

内网服务暴露到公网后,如何增加二次验证?

利用 Zero Trust 的 Access 功能:在 Application 中点击 Add an application,选择 Self-hosted,设置应用名称、子域名和域名。然后创建策略,规则使用 One-time PIN,在 Add require 中选择 Emails 并填写允许访问的邮箱。这样访问时需输入该邮箱获取一次性验证码,验证通过才能访问。

One-time PIN 验证有什么限制?

只有输入策略中设置好的邮箱才能收到验证码,随意输入的邮箱无法获取验证码,因此可以限制只有特定人员能访问内网服务。

访问验证的有效期可以调整吗?

可以,在 Access 策略中通过 Session duration 设置访问的有效期。

🏷️

标签

➡️

继续阅读