爸爸有了全新的NAS:软件

作者:Kyle Rankin

当命令行NAS软件如此易于配置时,谁还需要定制的NAS操作系统或基于Web的GUI?

在最近给编辑的信中,一位读者联系了我,他很喜欢我的“爸爸有了全新的NAS”文章,但希望我能花更多时间描述我使用的软件。当我写这篇文章时,我决定不深入探讨软件,因为它对于在Linux下提供文件服务来说都是非常标准的。但转念一想,如果您想重新创建我所做的,我想知道软件方面也很好,因此本文介绍了我在家用NAS中使用的软件。

操作系统

我的NAS使用ODROID-XU4作为主要计算平台,到目前为止,我发现它的八核ARM CPU和其余资源对于家用NAS来说是足够的。当我第一次设置它时,我访问了该计算机的官方wiki页面,该页面提供了许多操作系统镜像,包括您可以复制到microSD卡上的Ubuntu和Android镜像。但是,这些镜像更适合桌面使用,我想要一个最小的服务器镜像。经过一番搜索,我找到了一个最小镜像,适用于当时当前的Debian稳定版本(Jessie)

虽然这个最小镜像对我来说还可以,但我并不一定建议仅仅使用论坛上一些志愿者创建的任何操作系统。自从我第一次设置这台计算机以来,Armbian项目已经发布,它支持许多标准化操作系统镜像,适用于包括ODROID-XU4在内的许多ARM平台。因此,如果您想效仿我的做法,您可能需要从最小Armbian Debian镜像开始。

如果您之前使用过Raspberry Pi,那么设置替代ARM板的过程应该不会有太大不同。使用另一台计算机将操作系统镜像写入microSD卡,启动ARM板,启动时,镜像将扩展以填充现有文件系统。然后重新启动并连接到网络,以便您可以使用特定镜像设置的默认凭据登录。与Raspbian构建一样,您应该对Armbian或任何其他操作系统镜像执行的第一步是将默认密码更改为其他密码。更好的是,您应该考虑设置适当的用户帐户,而不是依赖默认帐户。

这些基于Debian的ARM镜像的好处是,您最终会得到一个与您的硬件配合使用的内核,但您也可以随意使用Debian闻名的各种软件。通常,您可以将此自定义板视为任何其他Debian服务器。我已经使用Debian服务器多年了,许多在线指南都描述了如何在Debian下设置服务器,因此它为几乎所有您想用服务器做的事情提供了一个很好的基础平台。

就我而言,由于我正在从现有的1U Debian服务器迁移到这个新的NAS,包括仅仅将物理硬盘驱动器移动到一个新的外壳中,因此发行版相同的事实意味着,只要我确保在这个新计算机上安装相同的软件包,我通常就可以直接从旧计算机上复制我的配置文件。这是从标准Linux发行版而不是使用一些预打包的NAS镜像来构建自己的NAS的巨大好处之一。预打包的解决方案一开始可能更容易,但是如果您想从它迁移到其他操作系统,那么利用任何现有设置可能是困难的,甚至是不可能的。在我的情况下,即使我使用了另一个Linux发行版,我仍然可以将我的所有配置文件复制到新的发行版中——在某些情况下甚至复制到完全相同的目录中。

NFS

正如我所提到的,由于我正在从基于标准Debian服务的现有1U NAS服务器迁移,因此设置我的NFS服务非常简单,只需安装nfs-kernel-server Debian软件包,从我的旧服务器复制我的/etc/exports文件,然后使用以下命令重新启动nfs-kernel-server服务:


$ sudo service nfs-kernel-server restart

如果您不熟悉在Linux下设置传统的NFS服务器,那么已经存在如此多的不同指南,以至于我怀疑我是否会通过再次重复在这里来为NFS文档世界增加太多内容。 只要说它归结为在您的/etc/exports文件中添加条目,告诉NFS服务器要共享哪些目录,与谁共享(基于IP)以及要使用哪些限制。 例如,这是我用来与我网络上的一台特定计算机共享特定备份存档目录的示例条目:


/mnt/storage/archive 192.168.0.50(fsid=715,rw)

这行命令告诉NFS服务器共享本地/mnt/storage/archive目录,机器IP为192.168.0.50,赋予它读/写权限,并为此特定共享分配特定的文件系统ID。 我发现为/etc/exports中的每个条目分配唯一的fsid值可以帮助NFS服务器使用此ID显式标识它正在导出的每个文件系统,以防它找不到文件系统的UUID(或者如果您在同一文件系统中导出多个目录)。 一旦我对/etc/exports文件进行了更改,我就喜欢告诉NFS服务使用以下命令显式重新加载该文件:


$ sudo service nfs-kernel-server reload

NFS有很多不同的和复杂的选项可以应用于文件系统,并且在完全按照您希望的方式调整事物方面存在一些技巧(特别是如果您在NFS协议的版本3和4之间进行选择)。 我通常查阅exports手册页(在终端中键入man exports)以获得所有选项的良好描述并查看配置示例。

Samba

如果您只需要与Linux客户端共享文件,NFS可能就是您所需要的全部。 但是,如果您的网络上有其他操作系统,或者客户端没有良好的NFS支持,您可能会发现使用Samba也提供Windows风格的SMB/CIFS文件共享很有用。 虽然Samba的配置与NFS截然不同,但它仍然不太复杂。

首先,为您的发行版安装Samba软件包。 就我而言,这意味着:


$ sudo apt install samba

一旦软件包安装完成,您将看到Debian提供了一个注释良好的/etc/samba/smb.conf文件,其中设置了普通默认值。 然后,我编辑了/etc/samba/smb.conf文件,并确保通过在smb.conf的网络部分中设置以下选项,将对我的Samba服务的访问限制为仅允许的那些IP:


hosts allow = 192.168.0.20, 192.168.0.22, 192.168.0.23
interfaces = 127.0.0.1 192.168.0.1/24
bind interfaces only = Yes

这些更改将Samba访问限制为仅几个IP,并显式告诉Samba侦听localhost和正确IP网络上的特定接口。

还有其他方法可以使用Samba配置访问控制,默认情况下,Debian将其设置为Samba使用本地UNIX帐户。 这意味着您可以在服务器上设置本地UNIX帐户,为它们设置强密码,然后要求用户使用适当的用户名和密码进行身份验证,然后他们才能访问文件共享。 由于这已经在Debian中设置好了,所以我剩下的就是使用注释示例作为参考,将一些文件共享添加到我的smb.conf文件的末尾。 此示例显示了如何使用Samba而不是NFS共享相同的/mnt/storage/archive目录:


[archive]
  path = /mnt/storage/archive/
  revalidate = Yes
  writeable = Yes
  guest ok = No
  force user = greenfly

与NFS一样,有无数关于如何配置Samba的指南。 除了这些指南之外,您还可以像我一样,查看注释丰富的smb.conf,或者如果您想了解特定选项的作用,请键入man smb.conf。 与NFS一样,当您更改smb.conf中的设置时,您需要使用以下命令重新加载Samba:


$ sudo service samba reload

结论

将Linux设置为NAS令人耳目一新的地方在于文件共享(特别是取代企业环境中的Windows SMB文件服务器)是Linux在企业中迈出的第一个重要步伐之一。 因此,正如您所看到的,即使没有一些漂亮的GUI,将Linux设置为NAS也非常简单。 更重要的是,由于我只是使用普通的Linux发行版而不是一些自定义的NAS特定操作系统,因此我还可以将同一台服务器用于各种其他用途,例如本地DNS解析器、本地邮件中继或我可能想到的任何其他Linux服务。 此外,如果将来我感到需要升级,将这些配置转移到全新的硬件上应该非常容易。

资源

Kyle Rankin是Linux Journal的技术编辑和专栏作家,也是Purism的首席安全官。 他是Linux Hardening in Hostile Networks, DevOps Troubleshooting, The Official Ubuntu Server Book, Knoppix Hacks, Knoppix Pocket Reference, Linux Multimedia HacksUbuntu Hacks的作者,也是许多其他O'Reilly书籍的贡献者。 Rankin经常在BsidesLV、O'Reilly Security Conference、OSCON、SCALE、CactusCon、Linux World Expo和Penguicon等会议上就安全和开源软件发表演讲。 您可以在@kylerankin上关注他。

加载Disqus评论