上一篇文章介绍了NAS的安全问题,本篇来介绍一下我都在nas上运行了什么服务。
透明代理虚拟机
Unraid虽然提供了好多丰富的功能,但是要想愉快地使用它们,一个联通性良好的网络必不可少。由于Unraid系统本身难以设置全局代理,因此最好使用透明代理来实现。Unraid正好又有一个虚拟机功能,因此可以把负责做代理的路由安装到一个虚拟机上,让unraid开机启动它就是了。这种办法虽然简单,但容易成为整个系统的短板。一旦透明代理的虚拟机再起不能,这就意味着整个nas失去了对广域网的访问。为了解决这个问题,我们可以通过操作路由表的方式来动态更新网关:如果虚拟机不可达,那么就使用路由器作为网关,否则使用虚拟机作为网关。
为了实现这个目的,我们需要安装User Scripts
插件。创建一个新的脚本,并设定为每两分钟运行一次,脚本内容如下:
#!/bin/bash
proxy_route=10.233.1.9
default_route=10.233.0.1
if ping $proxy_route -c4; then
if ip route list 0.0.0.0/0 | grep $proxy_route; then
echo "No change, using $proxy_route"
else
ip route del 0.0.0.0/0
ip route add 0.0.0.0/0 via $proxy_route
usr/local/emhttp/webGui/scripts/notify -e network -s "Switch default route" -i warning -d "IPv4 default route switched to $proxy_route" -m "IPv4 default route switched to $proxy_route"
fi
else
if ip route list 0.0.0.0/0 | grep $default_route; then
echo "No change, using $default_route"
else
ip route del 0.0.0.0/0
ip route add 0.0.0.0/0 via $default_route
usr/local/emhttp/webGui/scripts/notify -e network -s "Switch default route" -i warning -d "IPv4 default route switched to $default_route" -m "IPv4 default route switched to $default_route"
fi
fi
这里除了替换路由表,我还调用了unraid的系统组件来发送一个通知来记录路由切换的时间。
搞定了网络,问题还没有完全消失:现在流量经过透明代理,方便我们下载docker镜像和unraid插件。但是有些流量不想经过代理,比如用于bt下载的p2p流量。这怎么办呢?
P2P虚拟机
虽然整个unraid的流量都要经过透明代理的虚拟机,但其上运行的虚拟机不会。因此解决办法很简单——给p2p软件单独弄个虚拟机就行了,这也是为什么我要买13代i5。新版本Unraid还提供了基于virtio的挂载共享的方式,这使得虚拟机读写unraid上的挂载点更为方便了。
虚拟机一如既往安装了OpenSUSE风滚草。上面安装的P2P软件有:
- Tixati:用于bt下载
- Resilio sync:用于和朋友分享文件
- IPFS:另一种分享文件的方式
其中Tixati去官网下载rpm包即可,Resilio sync在3.0大更新之后终于撒开system V了,并且提供了openSUSE的软件源可以直接使用。IPFS有点麻烦,后来我发现直接安装IPFS Desktop的rpm更为方便。
关于IPFS Desktop,安装之后为了方便访问,要让ipfs将网页面板暴露在IPv4的本地网络上,同时开启对应的防火墙端口允许入站。Resilio sync也是一样。
BT反吸血
关于Tixati,除了开端口之外,我还推荐大家去加载来自PeerBanHelper的IP封禁规则来避免pcdn用户刷流量。目前我配合这个封禁清单加上我自己定期巡查,最近没有遇到过吸血实例。由于pcdn刷下载量的来源ip具有地域性,因此在我按照/24
封禁了两端来自江苏的ip之后,截至目前再也没有发现漏网之鱼了。这两段IP是:
61.160.198.0/24
61.160.237.0/24
我自己的封禁规则是这样的:巡查所有种子,看看有没有上传量巨大但对方进度仍为0%的,这种客户端可以直接按照ip封禁。刚开始按照单个ip封禁,如果一个ip段出现的客户端比较多,那就直接封禁整个/24。
我一直不鼓励大家运行pcdn给互联网公司花钱当狗,但愿意当狗是个人自由,因此我只反对这种行为。但为了避免ISP限制自己的家宽而刷别人的上传量,这种就属于脑瘫行为了,必须要重拳出击。
如果后续我发现仅靠ip列表无法遏止这种行为的话,我可能会考虑切换到BiglyBT并配合BTN网络采取更为先进的封禁策略。
基于Docker的服务
由于选用了13代i5,因此性能非常充分,能跑不少服务。这里挑几个有用的介绍给大家。
UptimeKuma
这个服务能够探测指定的网站或服务是否在线,并在他们掉线的时候通过多种方式发出提醒。我使用这个软件来监控我自己的网站和公司的网站。
linuxserver/calibre
Calibre无需多说,用来管理电子书的软件。我之前写过一篇使用Calibre下载DRM内容的文章,虽然说的比较隐晦,但我认为这应该足够作为大部分人的敲门砖自己入门了。LinuxServer的镜像将calibre封装成一个基于网页端vnc的应用,通过挂载对应的目录即可实现文件共享。
Kopia
Kopia是我最近新发现的一个备份软件,我用它替换掉了原来的Duplicati。Kopia深得我心的一点就是它具有块级去重的本领。并且可以多个设备备份到同一个存储后端。我使用的是BackBlaze的B2存储,目前我备份了三台电脑的数据,单独计算的话总数据量在3229.6GB左右。在配置了2%的校验的情况下(也就是100GB的数据会额外产生2GB的数据作为纠错,在原数据损坏或丢失不超过2%的情况下仍然可以恢复数据),B2的实际收费是2730GB,其中还包含了不同时间的快照。
实际去重情况取决于你的数据集。我之所以能节省大量空间,主要是因为有些电影或动漫同时存在于nas和我自己的电脑上。另外有些数据类型,比如虚拟机的磁盘,虽然显示占用是200GB,但由于比较新,因此大部分数据都是空的,这种数据非常容易去重,能够在数值上看到比较大的差异。
Boinc
Boinc是一款科学计算软件,它能将你电脑的空闲算力共享给分布式计算项目。我目前参加了两个项目,一个是PrimeGrid,另一个是Minecraft@Home。
为什么要搞科学计算呢?作为一个住在昆明的北方人,昆明前一阵子有几天是真冷啊!不想买电暖器,也不想买电热毯,怎么能让屋子里暖和一些呢?我把目光转向了我的NAS——让它的CPU转起来不就好了。于是遍安装了这个科学计算的软件。
但是吧,从制暖效果来说,150瓦属于杯水车薪了。
itzg/minecraft-server
配合之前的文章,现在我可以在NAS上运行MC服务器和朋友一起畅玩了。
改善体验的插件
除了上述服务之外,我还安装了一些能够提升使用体验的插件。
unbalanced
这个插件能够启动一个叫做unbalanced服务,可以在添加或移除硬盘的时候移动文件,来疏散或打散现有文件。
Unassigned Devices和Unassigned Devices Plus
用来挂载移动硬盘的插件,后者扩展了一些文件系统格式。但是就我体验来说,exfat是通过fuse实现的,导致访问性能很差。
Tailscale
用来远程管理的软件。以前是作为docker容器运行的,现在直接有插件支持了。
Dynamix System Temperature
用来查看系统温度的。取决于你的硬件,并不是所有硬件都支持。
Dynamix System Information
用来查看系统信息的,比如CPU型号,支持的指令集,内存型号,硬盘信息等。
Dynamix System Statistics
用来统计系统性能,能够以图表的方式显示系统的一些指标,例如CPU,内存,磁盘用量和网络活动等。
Dynamix File Manager
在网页端提供一个简易的文件管理器,可以用来上传下载以及移动或复制文件。
Dynamix Active Streams
这个插件能够让你一览谁在通过SMB或AFP协议访问哪些文件。
CA Auto Turbo Write Mode
这个插件能够自动切换系统的写入方式。默认的写入方式是首先读取校验盘的数据,然后与写入的数据计算出新的校验块,然后再把新的校验块写回去。好处是只需要三块硬盘转动即可:至多两块校验盘,加上一块往里写数据的盘。但坏处就是校验盘要先读后写,比较慢。而新的写入方式,也叫Turbo Write,它是通过同时读取其他数据盘的所有数据,加上写入的数据,计算出校验盘的数据,然后写入校验盘。因为所有盘都是要么读取要么写入,因此不会出现等待硬盘转圈的情况,写入速度较快,但代价是要唤醒所有数据盘。
这个插件允许用户自己设定规则,根据当前硬盘的休眠数量来决定使用哪种写入方式。
File Integrity Check
这个软件是我自己的写的。由于unraid不像ZFS那样可以校验并恢复数据,Unraid的校验只能告诉你数据盘上的东西和校验盘对不上,至于是为什么对不上,unraid无从得知。因此我写了这个缩写为fic的软件来调用b3sum生成文件的校验和,并将其保存到磁盘上,平时随其他数据一起经过kopia备份到B2存储。当出现校验和与数据盘对不上的时候,我可以首先对比这个月与上个月的校验和文件,确定校验和文件没有问题之后,再使用这个工具检查硬盘上的数据是否符合校验和。遇到不符合的文件则可以通过备份获取并校验。
目前代码托管在GitHub:https://github.com/hurui200320/fic
由于是自用软件,因此没有什么说明。
结语
目前NAS已经稳定运行3个月有余,配置和服务方面在设定好之后基本上就没怎么动过了。数据校验设定的每月一次,只要在月末关注一下即可。以上便是关于我的第一个NAS的全部介绍了,其中内容仅供参考,希望能启发到各位读者组建自己的NAS,少给那些个无良厂商交会员。
-全文完-

【歪门邪道】从零开始组NAS - 应用篇 由 天空 Blond 采用 知识共享 署名 - 非商业性使用 - 相同方式共享 4.0 国际 许可协议进行许可。
本许可协议授权之外的使用权限可以从 https://skyblond.info/about.html 处获得。
“少给那些个无良厂商交会员”哈哈哈哈