【沧海拾昧】绿联NAS配置WebDAV公网访问并使用RaiDrive挂载到本地

【沧海拾昧】绿联NAS配置WebDAV公网访问并使用RaiDrive挂载到本地

#C0601


沧海茫茫千钟粟,且拾吾昧一微尘

——《沧海拾昧集》@CuPhoenix


【阅前敬告】沧海拾昧集仅做个人学习笔记之用,所述内容不专业不严谨不成体系【如有问题必是本集记录有谬,切勿深究】


目录


前言

将 NAS 的磁盘空间通过 RaiDrive 等软件挂载到本地使用是一种十分便捷的方法,但是 RaiDrive 中只有针对群晖(Synology)等几个品牌 NAS 的原生支持,如果使用绿联(UGREEN) NAS 则无法直接在 RaiDrive 中挂载。本文记录了使用绿联 NAS 配置 WebDAV 协议并通过公网访问的方式在 RaiDrive 中挂载的方法以供参考。

本文用到的软/硬件环境:绿联 DH3400 Plus;

一、配置步骤

1、确认网络设备支持 IPv6

  • 要实现公网访问,必须确认设备可以访问公网 IP,包括确认使用的光猫、路由器对 IPv6 的支持和对应功能是否设置开启;

可以通过 这个网站 进行测试:如果显示网络 IPv6 访问优先,则不需要调整,否则需要先参考其他资料开启 IPv6 访问。

在这里插入图片描述
其他测试连接测试链接 1 :仅支持 IPv6 访问;测试链接 2 :测试网络是 IPv4 还是 IPv6 访问优先(访问IPv4 / IPv6双栈站点,如果返回 IPv6 地址,则 IPv6 访问优先)

2、购买域名

  • 进行 DDNS 配置需要有一个自己的域名,推荐使用阿里云或腾讯云进行配置(该推荐源自绿联官网资料),这里以腾讯云为例;
  • 在腾讯云购买一个域名(购买时需经过实名认证等步骤,不需要购买其他服务,最便宜的大概只需要几块钱一年),购买成功后等待一会有短信通知域名恢复正常解析,就可以使用了;

3、配置访问凭证

  • 登录腾讯云 访问管理控制台策略页,单击【策略】页面中的【新建自定义策略】,并单击【按策略语法创建】;
  • 选择【空白模板】,进入下一步;
  • 复制这段权限脚本到【策略内容】中,然后单击完成;
{ "version": "2.0", "statement": [ { "effect": "allow", "action": [ "cdb:DescribeDBInstances" ], "resource": [ "*" ], "condition": [] }, { "effect": "allow", "action": [ "cvm:DescribeInstances" ], "resource": [ "*" ], "condition": [] }, { "effect": "allow", "action": [ "cynosdb:DescribeClusters" ], "resource": [ "*" ], "condition": [] } ] } 
  • 在导航栏中单击【访问密钥】→【API密钥管理】,获取SecretIdSecretKey(即 AccessId 和 AccessKey ),注意保存好,不要泄露;

2、NAS 配置 WebDAV 服务

  • NAS 开机后,按绿联官方操作手册进行注册、登录等一系列初始化设置;
  • 配置完成后,可以同局域网 IP 访问检测是否设置成功,例如 NAS 的局域网 IP 是 192.168.1.100,则在浏览器中访问【192.168.1.100:5006】看是否会进入鉴权页面;

在【控制面板】→【文件服务】→【WebDAV】中选择启用服务,并在高级设置中勾选;

在这里插入图片描述

3、NAS 配置 DDNS 支持

  • 如果一切正常,点击【连接测试】会显示成功;

服务商选择腾讯云,然后输入刚才注册的域名,和刚才获取的 SecretId 和 SecretKey;

在这里插入图片描述

在【控制面板】→【设备连接】→【远程访问】中选择【启用 DDNS 支持】,然后选择【新增】;

在这里插入图片描述

4、配置反向代理

  • 注意:按这个步骤使用 Nginx 做反向代理可能出现问题(挂载后无法移动文件和修改文件名),该问题尝试网上一些修改 Nginx 的方法无法解决。推荐使用 Lucky 来设置反向代理。教程参考:教程1教程2
  • 这里提醒一点:设置动态域名的时候,要根据 IPv4 还是 IPv6 来选择获取公网 IP 方式。教程1中的示例是 IPv4 的,所以选择了通过接口获取,如果根据本文上面的步骤来做公网 IP应该是 IPv6 的,因此这一步要选择网卡获取。
  • 另注:可以通过 NAS 中的 自动映射 功能(在【控制面板】→【设备连接】→【远程访问】→【方式二:高级设置】)完成路由器端口的映射,不用从路由器中手动设置。
  • 在 NAS 的应用中心中安装 docker,然后在 docker 的镜像中搜索并下载 jc21/nginx-proxy-manager,安装 nginx proxy manager(如果下载失败,则需要开启加速,可以通过 官方教程 进行设置);
  • 设置容器【自动重启】;
  • 点击【Certificates】,选择【Add Certificate】→【Let’s Encrypt via DNS】,在 Domain Names 中输入刚才购买的 DDNS 域名,然后在 DNS Provider 中选择腾讯云 Tencent Cloud,输入 secret_id 和 secret_key,点击【Save】进行保存;
  • 配置完成后,打开浏览器,输入 https://xxxxxxx:8000(xxxxxxx 是自己的域名),如果能跳转到 WebDAV 的页面就是成功了;

点击【Proxy Host】配置反向代理,新建一个 Proxy Host,在 Domain Names 中输入刚才购买的 DDNS 域名,转发 IP 填写 172.17.0.1,端口为5005,然后在 SSL 选项卡中勾选 Force SSL 和 HTTP/2 Support;

在这里插入图片描述

启动容器后,可以通过【快速访问】进入管理页配置证书;

在这里插入图片描述

端口号可以改成比较好记的,避免与 NAS 已有的端口产生冲突;

在这里插入图片描述

对容器进行配置,注意在【存储空间】中加入 /etc/letsencrypt 这个容器目录,否则服务无法启动;

在这里插入图片描述

5、在 RaiDrive 中挂载

  • 启动 RaiDrive,新增虚拟驱动器,在 【NAS】选项卡中选择【WebDAV】,然后在地址栏中输入 https://xxxxxxx:8000,并输入用户名和密码(在绿联APP中设置的访问 WebDAV 的密码,相关的权限也在绿联 APP 中管理);
在这里插入图片描述
  • 点击连接,即可将 NAS 挂载到本地磁盘;

6、设置防火墙

  • 规则1用于允许反向代理的端口访问,规则2用于允许内网访问所有端口。设置完成后记得勾选启用,然后确定。

防火墙可以在 NAS 中进行设置,这里给出两条规则参考:

在这里插入图片描述

二、最终结果

在我的电脑中,出现该驱动器。不开 RaiDrive 会员只能挂载到网络位置,开了会员之后可以挂载到本地磁盘的位置,但这两个在一般使用中没有什么区别。

在这里插入图片描述
参考文献绿联NAS配置公网访问配置腾讯云访问凭证绿联云知识中心 - 启用DDNS支持

Read more

【探寻C++之旅】C++11 深度解析:重塑现代 C++ 的关键特性

【探寻C++之旅】C++11 深度解析:重塑现代 C++ 的关键特性

请君浏览 * 前言 * 1. C++的发展历史 * 2. 列表初始化:统一对象初始化的优雅方案 * 2.1 从 C++98 到 C++11 的突破 * 2.2 std::initializer_list:容器初始化的 “神器” * 3. 右值引用和移动语义:彻底解决拷贝性能痛点 * 3.1 左值 vs 右值 * 3.2 左值引用 vs 右值引用 * 3.3右值引用的使用场景 * 3.3.1参数匹配 * 3.3.2 类型分类 * 3.3.3 移动构造和移动赋值

By Ne0inhk
【C++ 初阶】命名空间 / 输入输出 / 缺省参数 / 函数重载

【C++ 初阶】命名空间 / 输入输出 / 缺省参数 / 函数重载

🎬 博主名称:键盘敲碎了雾霭 🔥 个人专栏: 《C语言》《数据结构》《C++》 ⛺️指尖敲代码,雾霭皆可破 文章目录 * 一、namespace * 1.1 namespace的引入 * 1.2 namespace的定义 * 1.3 namespace使用 * 二、输入输出 * 三、缺省参数 * 四、函数重载 * 4.1 参数类型不同 * 4.2 参数个数不同 * 4.3 参数类型顺序不同 * 4.4 错误点 * 五、引用 * 5.1 引用的概念和定义 * 5.2 引用的特性 * 5.3 引用的使用 * 5.

By Ne0inhk

CCF-GESP计算机学会等级考试2025年9月四级C++T1 排兵布阵

B4415 [GESP202509 四级] 排兵布阵 题目描述 作为将军,你自然需要合理地排兵布阵。地图可以视为 nnn 行 mmm 列的网格,适合排兵的网格以 1 标注,不适合排兵的网格以 0 标注。现在你需要在地图上选择一个矩形区域排兵,这个矩形区域内不能包含不适合排兵的网格。请问可选择的矩形区域最多能包含多少网格? 输入格式 第一行,两个正整数 n,mn, mn,m,分别表示地图网格的行数与列数。 接下来 nnn 行,每行 mmm 个整数 ai,1,ai,2,…,ai,ma_{i,1}, a_{i,2}, \ldots, a_{i,m}

By Ne0inhk
【C++深学日志】C++“类”的完全指南--从基础到实践(一)

【C++深学日志】C++“类”的完全指南--从基础到实践(一)

假想一下,你是一个顶级汽车设计师,你的任务不是亲自拧紧每一个螺丝,而是要设计出一幅“汽车蓝图”,你在图纸上设计了一辆汽车所需的一切:车轮、车灯、V8发动机、方向盘等,你手上这份设计好的蓝图就相当于我们今天要讲的C++中的“类”,它规定了汽车的属性(例如:离合器)和方法(功能:换挡),它本身并不是一辆真正的汽车,只是你的一份设计规划,后续你交付给工厂,工厂按照你的设计蓝图,生产出了一辆汽车,这就是实例化,后续工厂有根据你的蓝图设计了一条流水线,每一辆从流水线上生产下来的车辆,都是里这个蓝图(类)的一个对象,他们都有蓝图定义的属性和功能。在C++中类就充当着蓝图的作用,它定义了对象拥有哪些属性,那么就和我一起来揭开这份“蓝图”的面纱吧。 1.类 1.1.类的定义 类的基本思想是数据抽象和封装,数据抽象是一种依赖于接口和实现的分离式编程技术,类的接口包括用户所能执行的操作,类的实现则是包括类的数据成员、负责接口实现的函数以及定义类所需的各种私有函数。封装实现了类的接口和实现的分离,封装后的类隐藏了他的视线细节,也就是说,

By Ne0inhk