惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Register - Security
The Register - Security
云风的 BLOG
云风的 BLOG
U
Unit 42
F
Fortinet All Blogs
The GitHub Blog
The GitHub Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
D
Docker
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
S
Secure Thoughts
Hacker News: Ask HN
Hacker News: Ask HN
Vercel News
Vercel News
S
Security @ Cisco Blogs
GbyAI
GbyAI
Stack Overflow Blog
Stack Overflow Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
I
Intezer
MongoDB | Blog
MongoDB | Blog
AI
AI
MyScale Blog
MyScale Blog
Engineering at Meta
Engineering at Meta
Y
Y Combinator Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Proofpoint News Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
W
WeLiveSecurity
博客园 - 叶小钗
S
SegmentFault 最新的问题
N
News | PayPal Newsroom
WordPress大学
WordPress大学
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
D
DataBreaches.Net
小众软件
小众软件
Microsoft Azure Blog
Microsoft Azure Blog
Spread Privacy
Spread Privacy
H
Help Net Security
美团技术团队
博客园 - 司徒正美
T
Threat Research - Cisco Blogs
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
K
Kaspersky official blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
V
Vulnerabilities – Threatpost
TaoSecurity Blog
TaoSecurity Blog
N
Netflix TechBlog - Medium
L
Lohrmann on Cybersecurity
J
Java Code Geeks
量子位
Martin Fowler
Martin Fowler
博客园_首页

愆伏

vue feedback 指令开发 通过webpack对css压缩后所引起的重名问题 NPM 撤回已发布的版本 昆虫有趋光性吗 数组转成字符串(css 属性) 关于grid布局的一些思考 阿里云和腾讯云网站字体族对比 Vue组件抛事件和Function prop的差别 Vue 事件参数传递 Vue Data里面下划线命名无效并报错 使用sublime中的正则处理数据格式 通过nodejs创建目录与文件 macOS 下npm run dev 无法局域网访问 mac 下使用ssh访问非22端口的gitlab 世界是平的,在科学上网之后 使用sublime text3和Markdown来写博客 如果非要给一个标题,那就是2014年非工作总结 不专业呢,就别捣乱 对知乎大号怒撤事件的一点看法 拒绝SB思维 嘀嘀与快的的商业博弈 关于收藏夹功能的思考 你居然都不用微信 一个英语培训机构的外呼电话 智商是硬伤就无解了 扁鹊三兄弟 竖子不足与谋 美丽说、蘑菇街今天一定开了好几个小时的会 个人独立博客会死掉吗? iPad作画 google reader即将关闭,谁来候补? 去年 美国人又火星了 一个简单的flash射击游戏 Draw an angry bird with pure CSS 用css3画一坨屎 一只音箱——漫步者M0pro 瓢虫图标 如果能够收集到世界上所有人的梦 作为一名产品经理 wordpress换域名 程序员和站长之间资源的交换 独角仙饲育日记1 男人是得有点装备的 镇江火车站、新汽车站到香逸渔港大酒店路线 jquery的slideUp、slideDown在IE中的闪动bug 《玩赚你的网站》是本难得的好书 腾讯微博邀请,欢迎自取 福特2010最新款家用普及型车 关于小霸王是否可以玩魔兽世界的问题 君要臣死,臣不得不死 wordpress主题发布:iCake 1.0 脆弱的域名服务 舍身成仁,舍己为人 欲练神功,挥刀自宫——在没有google之后 杯具掉的手作软陶皮卡丘 凶猛的阿凡达 js+css控制字体变换 2009年下半年南艺自考设计素描(本科) 愤怒摔食图——去TMD的xxx 改裤衩 紫金山捉虫记 态度问题还是能力问题 慷慨的饭店老板 南艺自考顺利达标 2009上半年南艺艺术设计自考毕业设计 说说产品经理-前言 在线生成卡通头像 CG weaver 1~3期打包下载 育儿网招聘网页设计师 google calendar的另类用法 互联网产品、运营二三事 小情调 干切牛肉雪菜面加煎蛋x2 永远的龙珠 M8:我不是山寨 终于回来了 还不都为了大客户 古典音乐——冷笑话 豆瓣盈利能力堪忧? 骑马与砍杀(mount&blade)——另类的爽快 溺爱的代价 开心不开心? 超赞的视频广告——wario land shake 神奇的《孢子spore》 该相信用户的话吗? chrome——google浏览器真的来了! 浏览器:web世界之门 赤壁——三国梦 项目管理就是博弈 Pia ji 一声的快感 Memories 拿来主义 一声叹息 禅心 LBS^2转到wordpress2.5 尽我们所能帮助灾区,希望灾民平安度过难关 游高崇寺 Avant Browser的复兴 “知”的提升
利用 Cloudflare 的 Zero Trust Tunnel 功能实现 NAS 随时随地访问
tortorse · 2023-04-02 · via 愆伏

如果你在家里或者办公室有一个 NAS 设备,你可能会遇到一个问题:只有当你在局域网中的时候,你才能使用它,无法通过公网访问。为了解决这个问题,我研究了一下 cloudflare 的 Zero Trust Tunnel 功能,并把我的使用方法记录下来分享给大家。

NAS 的全称是 Network Attached Storage,按照大家常见的说法就是个“网盘”,只不过我们通常见到的网盘都是由一些厂商提供的服务,比如百度提供百度网盘,阿里提供阿里网盘。这里所说的 NAS 并不是由某个厂商提供的服务,而是自己买一台 NAS 设备放在家里或者办公室里,只要它接入了网络,咱们就可以把它当“网盘”用。

NAS 其实就是一台电脑,完全可以自己组装。不过大家也都知道,自己组装和买成熟厂家提供的一体化软硬件方案是不一样的,这和自己买配件攒电脑还是买品牌整机是一个道理,多花了钱的毕竟可以让自己更加省心一点。

目前市场上比较主流的 NAS 品牌主要是 群晖威联通,这两个品牌做 NAS 的时间比较长。近几年一些云厂商或者电脑外设厂商也都纷纷开始进入 NAS 产品领域,比如华为、小米、绿联等等。

我自己是在 2020 年的时候购入了一台威联通的 TS-453DMINI 一直使用至今。主要用它来备份手机上的照片以及存储一些电影。由于照片备份是完全自动化的,我目前也很少看电影,因此这台 NAS 的存在感很低。

最近我有一些文档想要备份一下,其中一些存在我的笔记本电脑上,一些存在公司的台式机上,于是我又想起了这台 NAS。

既然 NAS 就像一个“网盘”,那么我只需要将需要备份的文件复制到 NAS 上就能完成备份了。但实际情况是,我遇到了一个问题:我的 NAS 只能在局域网中访问,无法通过公网访问。简单来说,只有当我在家里的时候,我才能使用它,出门时就无法使用了。这种情况有两个原因:

  1. 我使用的移动宽带没有提供公网 IP;
  2. 我的一位同事虽然有公网 IP,但不小心被入侵了,导致 NAS 上的数据被删除了。

对于第一个原因,即使没有公网 IP,我也可以使用威联通自带的 MyQnapCloudLink 和 DDNS 进行外网访问。实际上在刚买 NAS 的时候,我也尝试过这个方法,但访问时不仅速度慢还很不稳定,让我完全无法接受。

后来遇到了第二个原因,才发现威联通国内版的 MyQnapCloudLink 的 SSL 证书需要单独购买,而国际版则可以使用免费的 Let's Encrypt 证书。

当时我并不想为一个不常用的功能耗费过多的成本,于是我关闭了外网访问。

NAS 公网访问方案

那么到底有没有既安全又快速的 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 账户

cloudflare 的注册很简单,访问 https://dash.cloudflare.com/sign-up 按照要求注册即可

配置网站

如果要使用 cloudflare 的服务,首先需要有一个自己的域名。注册域名的方法在此不再赘述, 你可以选择自己偏好的域名注册服务商,比如 godaddy, namesilo, namecheap, 当然 cloudflare 本身也支持域名注册。

当你有了自己的域名以后,登录进入 cloudflare, 点击左侧菜单中的「网站」,之后再点击右侧的「添加站点」

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

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

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

域名服务器配置生效之后,该站点会转为有效状态,此时从「网站」菜单进入站点后就可以开始配置 Zero Trust Tunnel。

配置 Zero Trust Tunnel

进入站点后,点击左侧菜单中的「Access」之后,点击右侧的「启动 Zero Trust」进入 Zero Trust 控制面板

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

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

创建完成后,cloudflare 会提供一个如何安装连接器的命令。

因为我们用的是 NAS,所以优先选择 Docker 安装。先复制下来,之后配置 NAS 时会用到。

配置 NAS

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

首先登录进 QTS,之后打开 Container Station。

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

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

在弹出的对话框中依次操作

  1. 填写「名称」: 起一个自己容易识别的名字
  2. 填写「命令」:配置 tunnel 时保存的那段命令文本,去除最前面的 docker run cloudflare/cloudflared:latest,从 tunnel 开始直至最后的部分。
  3. 填写「进入点」:保持默认即可
  4. 点击创建

之后等待 container 启动,进入「Container」菜单,可以看到状态如何是绿色的,说明该 container 启动成功

隧道配置

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

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

依次进行如下设置:

  1. 填写二级域名,起一个自己喜欢的就可以,比如: nas
  2. 选择域名,即本文最初所说的站点域名
  3. 选择需要进行隧道连接的协议,这里选 HTTP
  4. 填写需要隧道连接的 URL,这里就是我们局域网访问 NAS 系统的网址,一般是 192.168.x:端口号 的形式
  5. 点击「Save hostname」完成配置

至此,所有的配置工作已全部完成,接下来就是检测结果的时候了。

检测结果

由于我是在家测试,因此我将电脑的 WIFI 连接到了手机热点,以便跳出局域网环境。访问上面隧道配置时填写的二级域名,比如 nas.example.com。熟悉的 NAS 系统登录界面即刻出现了,并且使用的是 https 协议,也就意味着 cloudflare 自动为这个域名颁发了 SSL 证书。

对于威联通来说,还可以在手机 APP 上配置上述的二级域名进行连接,经过我的测试也同样成功了。

目前的配置已经完成了 NAS 系统的安全公网访问,还不能够通过 WebDav 或者 SMB 协议将我们的「网盘」挂载到本地来使用。后续我还会继续尝试,成功后再写文章与大家分享。