关键词:NAS,群晖,公网,Windows,映射驱动。

我们的需求很简单,当NAS处在不同的内网,我们需要通过公网来获取NAS上的文件的时候,我们希望使用Windows自带的磁盘映射,在Windows资源管理器里面直接浏览文件,就像内网中使用SMB一样优雅自然。

首先你需要几个必备条件,请自行解决

  • 公网 ip
  • 动态DNS(DDNS)或者固定 ip(国内家用不太可能)
  • 群晖NAS(黑白均可,只是装WebDav方便一点)

DDNS

你可以把DDNS绑定在路由器主网关上,也可以单独绑定在NAS上,反正他们拿到的结果是一样的。推荐cloudflare或者dnspod,用一个小的sh脚本即可完成。

 

端口转发

将主网关的5005、5006端口分别映射到对应的NAS的5005,5006端口上,TCP+UDP,如果想要方便管理,你还可以把5000端口也一起映射,这是群晖的web管理页面。

 

WebDav Server

在群晖官方的套件中心里搜索并安装WebDav Server,启用HTTP,端口设置为5005;启用HTTPS,端口设置为5006,禁用匿名,禁用限速,其他默认。建议NAS使用高强度的管理员密码

 

RaiDrive

我也很想在win10中直接输入 https://example.com:5006/DS918/ 来映射磁盘,但是经我实验这种做法非常不稳定。你需要将注册表中 \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters里,BasicAuthLevel的值修改为2,然后再到服务里面把WebClient打开自动并重启,才能勉强连接上。

然后你会遇到一堆莫名其妙的问题,比如错误的容量显示,不合时宜的安全提醒,以及高频率的断联空文件,这还是建立在普通http的基础上,因为我目前没搞定https的连接。

 

 

所以我们干脆用第三方软件就好了。搜索 RaiDrive 下载并安装(免费版),然后添加新驱动–WebDav,填写信息即可

 

错误的容量显示

为什么用RaiDrive挂载的WebDav驱动的容量是8EB呢?真相可能比较令人沮丧,那就是WebDav协议尚且不支持询问硬盘的实际大小。

https://support.microsoft.com/zh-cn/help/2386902/webdav-mapped-drive-reports-incorrect-drive-capacity

 

The short answer is: you can’t get disk size with WebDAV.

From Microsoft’s KB article 2386902: WebDav mapped drive reports incorrect drive capacity:

Research on WebDAV protocol RFCs and verification from Microsoft’s product team confirmed WebDAV protocol doesn’t support querying server’s disk capacity. With this constrain of WebDAV protocol, Windows client sets WebDAV mapping drive’s capacity the same as its System Drive.

目前,你只能忍着。