设置 NFS 服务器

来自 Alpine Linux

本页面介绍如何在服务器和客户端配置网络文件系统 (NFS),包括 autofs 和 Kerberos 认证。

安装

为 NFS 客户端和 NFS 服务器服务安装以下软件包。

# apk add nfs-utils

配置

在 Alpine Linux 上设置 NFS 服务与其他 Linux 发行版没有什么不同。

NFS 服务器

在 IP 地址为 10.10.10.1 的服务器上,在 /etc/exports 中设置导出目录。例如

/etc/exports 的内容

/data 10.10.10.0/24(rw,nohide,no_subtree_check,no_root_squash)

编辑 /etc/exports 后,重新加载您的设置

# exportfs -afv

要使 NFS 服务器服务在启动时自动启动

# rc-update add nfs

要立即启动 NFS 服务器服务

# rc-service nfs start

NFS 客户端

要自动挂载 NFS 共享,需要在 /etc/fstab 中添加一个条目,如下所示

/etc/fstab 的内容

10.10.10.1:/data /mount/point nfs4 rw,_netdev 0 0

要在系统启动时从 /etc/fstab 文件挂载 nfs 共享

# rc-update add nfsmount

要立即从 /etc/fstab 文件挂载 nfs 共享

# rc-service nfsmount start

您可以检查您的启动服务

# rc-status

提示: netmount 是所有基于网络的文件系统的通用服务,而 nfsmount 专门为 NFS 定制。

要使用 netmount,以下是等效命令

# rc-service netmount start # rc-update add netmount

使用 autofs

Autofs 是挂载像 NFS 这样的文件系统的另一种选择。Autofs 旨在提供按需挂载和各种其他文件系统的无竞争自动卸载。

确保已安装 autofs 软件包,如果尚未安装。

apk add autofs

/etc/auto.master 文件中添加一个条目,该条目指向一个映射文件,以定义 /mnt/nfs 目录的挂载点。例如

/etc/auto.master 的内容

/mnt/nfs /etc/auto.nfs --timeout=60

创建映射文件 /etc/auto.nfs,将 NFS 共享 10.10.10.1:/data 映射到 /mnt/nfs/share,如下所示

/etc/auto.nfs 的内容

share -rw 10.10.10.1:/data

启动并启用 autofs

# rc-update add autofs # rc-service autofs start

尽管 autofs 主要是一个客户端工具,但如果需要,它也可以在服务器上用于动态挂载。有关在服务器上使用 Autofs 的用例,请参阅 共享磁盘 页面。

Kerberos 认证

默认情况下,NFS 安全性仅验证客户端的 IP。您可以添加用户级别的身份验证与 Kerberos 身份验证协议。选择是

注意: 建议在整个网络中使用相同的 Kerberos 版本,因为这两种实现方式并非完全相互兼容。

下面给出的示例使用 MIT KRB5 语法。因此,在服务器上安装服务器软件包 krb5-server,并在客户端机器上安装 krb5 软件包。

服务器配置

假设您在网络中设置了 Kerberos,请为您的 NFS 机器创建票证 

# kadmin: addprinc -randkey nfs/nfs1.example.com@EXAMPLE.COM

并将其添加到机器的 krb5.keytab 文件中

# kadmin: ktadd nfs/nfs1.example.com@EXAMPLE.COM

然后,编辑您的 /etc/exports,并添加 sec=krb5(仅身份验证)、sec=krb5i(也包括 hmac 签名)或 sec=krb5p(也包括加密)。例如

/etc/exports 的内容

/data 10.10.10.0/24(rw,nohide,no_subtree_check,sec=krb5p,no_root_squash)

编辑 /etc/exports 后,重新加载您的设置

# exportfs -afv

用户 ID 映射由 nfs-utils 软件包中的 nfsidmap 实用程序管理。

客户端配置

为了使客户端通过 kerberos 连接到 NFS,请启用并启动 rpc.gssd 服务。

# rc-update add rpc.gssd

# rc-service rpc.gssd start

参见