Qter 发表于 2022-3-19 10:57:56

NAS实现

本帖最后由 Qter 于 2022-3-19 11:15 编辑

群晖的QuickConnect快速连接技术白皮书https://post.smzdm.com/p/422670/
快速连接提供了以下功能:
1.永久的和容易记忆的服务器ID ---- 一个QuickConnect的ID – 无论在lan还是在wan都能正常工作
2.服务器位置检测(LAN / WAN检测)
3. QuickConnect打孔
4. 通过UPnP自动端口转发
5. QuickConnect中继服务
6. QuickConnect网页访问



QuickConnect的工作原理
概述
快速连接,一般提供三种不同的服务:移动和PC客户端程序的访问,QuickConnect网页门户,和DSM文件共享。 所有这些服务需要QuickConnect的连通性测试,以保证高效连接。 在本章中,我们将解释QuickConnect的连通性测试如何工作以及这三个服务分别提供的功能。
QuickConnect的连通性测试
QuickConnect 的连通性测试是一系列的尝试定义如何使用快速连接ID在客户端连接到其目标NAS。 它首先通过QuickConnect服务器上注册的网络地址进行LAN和WAN的检测,以验证服务器的可访问性,然后根据群晖NAS所处的网络环境来测试 是否适合打洞,如之前所述方法都不可访问到NAS的话最后将会提供中继服务。
LAN / WAN检测
当客户端试图使用服务器的快速连接ID来访问群晖NAS,一个请求会被发送到
群 晖QuickConnect服务器来注册NAS的信息。这使得客户端可以获取网络信息,以确定服务器的可能的连接方式。 这些信息包括公网IP,局域网IP ,和NAT类型和其他一些信息。所有这些都是必要的环节并且不会损害到NAS的安全性。 用这些给定的信息,客户端可以识别在LAN或WAN中,是否可以建立IP地址或域名地址的直接连接。

QuickConnect的打洞
如果不能建立直接连接,客户端将试图建立NAS与客户机之间的虚拟隧道并通过QuickConnect建立临时直接链接来进行数据传输。 该技术使得服务器和客户端之间的网络同步性能与通过WAN IP或是DDNS直连有着十分相似的体验,而不需要物理上具有WAN IP或是DDNS这样的网络环境。
打洞的工作原理是借由QuickConnect的辅助服务器,客户机发起虚拟隧道到NAS
1. NAS发送一个请求到QuickConnect服务器,并保持开放端口 ---- NAS发送请求时会在NAT设备前打开个随机端口 – 保持开放以接受打洞请求。
2.类似地,客户机发出一个请求到QuickConnect服务器时会在客户端NAT设备前创建另一个端口
3. QuickConnect服务器将提供NAS的端口信息到客户端,反之亦然。
4. NAS会通过客户端这边打开的洞尝试建立到客户机的连接。
5.一旦客户端接收从NAS打洞请求,会发回一个打洞响应,经由在NAS侧的打开的洞返回给NAS。
6.如果打洞响应到达NAS,虚拟隧道创建成功。
https://am.zdmimg.com/201602/20/56c7c70a08bff.png_e1080.jpg图1:QuickConnect的打洞机制

对于打洞的有关技术,可以自行google:TCP 打洞一旦虚拟隧道建立成功,远程客户端可以使用此连接直接与NAS通信而不需要网络中继。

QuickConnect中继服务
在 不能创建虚拟隧道的情况下,数据传输可以通过中继服务来进行。当流量转发时,它到达目的地之前要经过Synology的中继服务器。相比直接连接或 Quickconnect打洞来说,中继需要更多的时间,Quickconnect中继服务充当数据到NAS与客户端之间传输的最后一个选择。
如果打洞无法创建一个连接,客户端会做最后一次尝试连接,通过创建使用Quickconnect中继服务的虚拟网络隧道。该服务工作如下:
1.要启动中继服务,客户端会发送一个请求到Quickconnect服务器。
2.Quickconnect服务器将通知NAS创建NAS和中继服务器之间的虚拟通道。
3.中继服务器分配一个端口,所有通往这个端口的网络流量被重定向到之前建立的虚拟隧道,然后通往NAS。
4.一旦中继服务器准备就绪,Quickconnect服务器将回复中继信息给客户端。
5.客户端现在能够经由中继与NAS进行通信。https://am.zdmimg.com/201602/20/56c7c7793698b.png_e1080.jpg图2:Quickconnect中继服务

群晖 nas 有些什么基本和好玩的功能?
https://www.zhihu.com/question/31480960
没有公网IP的用户来说,利用QuickConnect实现内网穿透是最简单方便的方案。当然QuickConnect也并非完美,由于使用的群晖集中的中转服务,连接的速率稍微会慢一些。所以如果你是拥有公网IP的用户,最好的远程体验还是通过DDNS+端口转发来实现。
(PS:风险提示,目前有不少地区对通过DDNS解析的个人网站加大了查处力度,所以有一定风险。比较安全的方式还是使用群辉的QuickConnect服务进行穿透访问,或者进行正规的网站备案,一定要合法使用)目前家用宽带只有中国电信能够提供公网IP,所以你必须是中国电信的宽带。之后请拨打10000投诉吧,说有监控需求,必须使用公网IP。稍等1天就可以获取了。

▼获取公网IP后,接下来我们要买一个域名,比如在DnsPod购买一个.press域名第一年只要10元。务必实名制购买域名!要不开不了网站备案,DDNS解析也会有问题。务必实名制购买域名!务必实名制购买域名!务必实名制购买域名!


[*]查看公网 IP方法
[*]如果你是光猫/路由器拔号上网的,直接从步骤4看起。
如果你是用电脑拔号上网的,则按下快捷键:win + r , 在运行窗口输入:cmd,回车。

2
[*]
在dos窗口中输入如下命令: ipconfig



[*]3
ipv4地址后面的数字为你的ip地址

4
[*]
如果你是光猫/路由器拔号上网的,则登入光猫/路由器管理界面,找到wan口状态信息,查看IP地址。
[*]5
然后打开百度,搜索:ip
如果百度显示的IP与上面获得的IP地址相同,则你的宽带IP是公网IP。
反之,则是内网IP。
例:使用电脑拔号上网的,获得的IP是12.13.14.15,与百度显示的IP一致,所以这台电脑获得的是公网IP。
使用光猫/路由器拔号上网的,获得的IP是10.201.12.61,与百度显示的IP不一致,则是内网IP。

2、私人云盘的搭建
NAS最主要的功能就是私人的云盘服务,我们可以通过多种方式来实现外网访问内网的云服务。如无需设置的Web访问;也可以通过群晖的适配软件实现自动同步;或是远程挂载WebDAV服务或FTP服务;VPN直连等方式来实现。


(2)WebDAV远程挂载
关于远程挂载磁盘,楼主推荐使用WebDAV的方式进行挂载。WebDAV的方式比FTP更具有优势,安全性也要稍微高一些。

▼首先我们需要在群晖应用中心安装WebDAV服务器。
▼如下图对WebDAV进行设置。端口号请自行修改。一定要在路由器端做好端口映射!!!一定要在路由器端做好端口映射!!!一定要在路由器端做好端口映射!!!
▼之后就是win10电脑端的设置了,首先开启WebDAV服务,通过搜索打开“服务”应用
▼定位到WebDAV服务位置,并开启服务。开启后先不要关闭界面,之后我们需要在这里重启下WebDAV服务
▼打开注册表,我们需要修改个数值:定位到

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters

把BasicAuthLevel 值改成2,使win10支持http的连接方式。
▼我们还需要回到刚才的界面,点击停止后,再点击启动,重启下WebDAV服务
▼在我的电脑中开始远程映射网盘
▼这个位置填写我们之前域名+端口,请按下图格式填写。
▼之后的步骤,全部下一步,没什么难点
▼可以看到,在公司顺利远程挂载了家中群晖的磁盘
PS:关于WebDAV远程挂载我们还可以使用一个神奇的软件【RaiDrive】来实现,在win10端使用这个软件挂载更加的方便,而且体验还有进一步的提升。


Qter 发表于 2022-3-19 11:13:42

WebClient 服务允许 Win32 应用程序访问Internet中的文档。 该服务扩展了 Windows的网络功能; 它允许标准 Win 32 应用程序通过使用 WebDAV(一种通过 XML 描述的文件访问协议) 来创建、读取和写入 Internet 文件服务器上的文件,并使用 HTTP 进行通信。因为它使用标准的 HTTP,WebDAV 可在现有 Internet 基础结构上运行,如防火墙和路由器。

Qter 发表于 2022-3-21 11:17:02

https://www.shangmayuan.com/a/5b78f7a51b594b89bc4e8b0f.html
在 2016 年我拥有了第一台 NAS —— 群晖的 DS215J,其实在以后的很长一段时间其实并无派上多大用场,由于个人数据并很少,大都存储在云端,更多的是体验一下 NAS 的功能和工做流。ios直到最近我才开始真正地将 NAS 利用上,因而准备升级一下,但考虑到群晖的性价比实在过低,再加上去年配置 Linux 软路由让我对基于「原生 Linux」的开源解决方案信心和兴趣大增,因而准备本身 DIY 一台 NAS,计划解决将来十年的存储需求。git我依然选择了我最熟悉的 Ubuntu 做为操做系统、Ansible 做为配置管理工具,所以这个 NAS 的大部分配置均可以在个人 GitHub 上找到。github注意这个仓库中的 Ansible 配置仅供参考,不建议直接运行,由于我在编写这些配置时并未充分考虑兼容性和可移植性。docker文件系统对于一台 NAS 来讲最重要的固然是文件系统,不须要太多调研就能够找到 ZFS —— 多是目前在数据可靠性上下功夫最多的单机文件系统了,因而个人整个选型就围绕 ZFS 展开了。shellZFS 既是文件系统,同时又是阵列(RAID)管理器,这为它带来了一些其余文件系统难以提供的能力:数据库
[*]ZFS 为每一个块都存储了校验和,同时会按期扫描整个硬盘,从 RAID 中的其余硬盘修复意外损坏的数据(如宇宙射线致使的比特翻转)。
[*]在 RAID 的基础上能够 指定某些目录以更多的份数冗余存储,对于重要的数据即便损坏的硬盘超过了 RAID 方案的限制,依然有可能找回。
ZFS 还支持数据加密、压缩和去重,这三项功能以一种巧妙的顺序工做,并不会互相冲突,同时这些全部选项均可以设置在目录(dataset)级别、能够随时更改(只对新数据生效)。浏览器ZFS 固然也支持快照,快照能够被导出为二进制流,被存储到任何地方。这个功能可让你在不丢失任何元信息的状况下对 ZFS 的文件系统进行备份、传输和恢复。缓存
页: [1]
查看完整版本: NAS实现