






















如果你在家里或者办公室有一个 NAS 设备,你可能会遇到一个问题:只有当你在局域网中的时候,你才能使用它,无法通过公网访问。为了解决这个问题,我研究了一下 cloudflare 的 Zero Trust Tunnel 功能,并把我的使用方法记录下来分享给大家。
NAS 的全称是 Network Attached Storage,按照大家常见的说法就是个“网盘”,只不过我们通常见到的网盘都是由一些厂商提供的服务,比如百度提供百度网盘,阿里提供阿里网盘。这里所说的 NAS 并不是由某个厂商提供的服务,而是自己买一台 NAS 设备放在家里或者办公室里,只要它接入了网络,咱们就可以把它当“网盘”用。
NAS 其实就是一台电脑,完全可以自己组装。不过大家也都知道,自己组装和买成熟厂家提供的一体化软硬件方案是不一样的,这和自己买配件攒电脑还是买品牌整机是一个道理,多花了钱的毕竟可以让自己更加省心一点。
目前市场上比较主流的 NAS 品牌主要是 群晖 和 威联通,这两个品牌做 NAS 的时间比较长。近几年一些云厂商或者电脑外设厂商也都纷纷开始进入 NAS 产品领域,比如华为、小米、绿联等等。
我自己是在 2020 年的时候购入了一台威联通的 TS-453DMINI 一直使用至今。主要用它来备份手机上的照片以及存储一些电影。由于照片备份是完全自动化的,我目前也很少看电影,因此这台 NAS 的存在感很低。
最近我有一些文档想要备份一下,其中一些存在我的笔记本电脑上,一些存在公司的台式机上,于是我又想起了这台 NAS。
既然 NAS 就像一个“网盘”,那么我只需要将需要备份的文件复制到 NAS 上就能完成备份了。但实际情况是,我遇到了一个问题:我的 NAS 只能在局域网中访问,无法通过公网访问。简单来说,只有当我在家里的时候,我才能使用它,出门时就无法使用了。这种情况有两个原因:
对于第一个原因,即使没有公网 IP,我也可以使用威联通自带的 MyQnapCloudLink 和 DDNS 进行外网访问。实际上在刚买 NAS 的时候,我也尝试过这个方法,但访问时不仅速度慢还很不稳定,让我完全无法接受。
后来遇到了第二个原因,才发现威联通国内版的 MyQnapCloudLink 的 SSL 证书需要单独购买,而国际版则可以使用免费的 Let's Encrypt 证书。
当时我并不想为一个不常用的功能耗费过多的成本,于是我关闭了外网访问。
那么到底有没有既安全又快速的 NAS 外网访问方法呢?经过我的一番搜寻,找到了答案,这就是 Zero Trust Tunnel。按照官方的说法:
Zero Trust Tunnels 是 Cloudflare 提供的一种安全连接服务,它可以帮助您在没有公网可路由 IP 地址的情况下将您的资源连接到 Cloudflare。使用 Zero Trust Tunnels,您不需要将流量发送到外部 IP 地址,而是在您的基础架构中运行一个轻量级守护进程(cloudflared),该进程仅创建到 Cloudflare 边缘的出站连接。Zero Trust Tunnels 可以安全地将 HTTP Web 服务器、SSH 服务器、远程桌面和其他协议连接到 Cloudflare。这样,您的源服务器就可以通过 Cloudflare 提供流量,而不会受到绕过 Cloudflare 的攻击的威胁。
更加关键的是,cloudflare 提供的免费版本就够咱们用了。既然方案确定了,就开始实操吧。

cloudflare 的注册很简单,访问 https://dash.cloudflare.com/sign-up 按照要求注册即可
如果要使用 cloudflare 的服务,首先需要有一个自己的域名。注册域名的方法在此不再赘述, 你可以选择自己偏好的域名注册服务商,比如 godaddy, namesilo, namecheap, 当然 cloudflare 本身也支持域名注册。
当你有了自己的域名以后,登录进入 cloudflare, 点击左侧菜单中的「网站」,之后再点击右侧的「添加站点」

之后在输入框中输入已经注册好的域名, 点击「添加站点」按钮

滚动到页面最下方,选择免费的站点服务

如果你是在 cloudflare 上注册的域名,则只需要根据提示下一步就可以了。如果是在其他地方注册的域名,cloudflare 会先对域名的配置进行检测,并提供两个域名服务器地址。你需要回到域名服务商的控制台中修改域名服务器的地址

域名服务器配置生效之后,该站点会转为有效状态,此时从「网站」菜单进入站点后就可以开始配置 Zero Trust Tunnel。
进入站点后,点击左侧菜单中的「Access」之后,点击右侧的「启动 Zero Trust」进入 Zero Trust 控制面板

进入 Zero Trust 面板后,展开左侧菜单中的「Access」并点击「Tunnels」,之后点击右侧的「Create a tunnel」来创建一个隧道

输入自己定义的隧道名称,之后点击「Save tunnel」

创建完成后,cloudflare 会提供一个如何安装连接器的命令。
因为我们用的是 NAS,所以优先选择 Docker 安装。先复制下来,之后配置 NAS 时会用到。

如上文所述,我的 NAS 是威联通的 TS-453DMINI,威联通的 NAS 都搭载了名为 QTS 的操作系统。在 QTS 中可以使用 Container Station 用图形化的方式开启 Docker。我们可以按照拉取 Docker 镜像、运行镜像这样的步骤进行。
首先登录进 QTS,之后打开 Container Station。

之后点击左侧菜单中的「镜像文件」,再点击「提取」。在弹出的对话框中的「镜像文件名称」处填写 cloudflare/cloudflared, 确认「映像版本」为 latest, 之后点击「提取」。

此时系统会在后台拉取镜像,我们需要等待镜像拉取完毕。重新进入「镜像文件」,点击已拉取的镜像右侧 +。

在弹出的对话框中依次操作
docker run cloudflare/cloudflared:latest,从 tunnel 开始直至最后的部分。
之后等待 container 启动,进入「Container」菜单,可以看到状态如何是绿色的,说明该 container 启动成功

我们重新回到 cloudflare 的 Zero Trust 控制面板,进入 Access > Tunnels,点击列表下拉菜单中的 「Configure」进入 Tunnel 配置

切换至「Public hostname」,点击「Add a public hostname」配置一个公网主机名

依次进行如下设置:
192.168.x:端口号 的形式
至此,所有的配置工作已全部完成,接下来就是检测结果的时候了。
由于我是在家测试,因此我将电脑的 WIFI 连接到了手机热点,以便跳出局域网环境。访问上面隧道配置时填写的二级域名,比如 nas.example.com。熟悉的 NAS 系统登录界面即刻出现了,并且使用的是 https 协议,也就意味着 cloudflare 自动为这个域名颁发了 SSL 证书。
对于威联通来说,还可以在手机 APP 上配置上述的二级域名进行连接,经过我的测试也同样成功了。
目前的配置已经完成了 NAS 系统的安全公网访问,还不能够通过 WebDav 或者 SMB 协议将我们的「网盘」挂载到本地来使用。后续我还会继续尝试,成功后再写文章与大家分享。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。