挂载 NFS 共享

现在我们已经准备好了NFS共享,应该只有192.168.0.100可以挂载,我们来测试一下。
客户端系统还需要安装 nfs-utils 包才能挂载 NFS。

首先在客户端上,我们可以使用 showmount 命令查看 NFS 服务器上导出的挂载列表。

[jack@onitroad ~]# showmount -e 192.168.0.200
Export list for 192.168.0.200:
/root/nfs 192.168.0.100

我们可以尝试使用 mount 命令使用 NFS 挂载它,然后挂载中的可用空间应显示为 df 命令。

[jack@onitroad ~]# mount -t nfs 192.168.0.200:/root/nfs /mnt
[jack@onitroad ~]# df -h
Filesystem              Size  Used Avail Use% Mounted on
/dev/sda3                18G  4.3G   14G  25% /
devtmpfs                905M     0  905M   0% /dev
tmpfs                   914M   80K  914M   1% /dev/shm
tmpfs                   914M  8.9M  905M   1% /run
tmpfs                   914M     0  914M   0% /sys/fs/cgroup
/dev/sda1               297M  148M  150M  50% /boot
192.168.0.200:/root/nfs   18G  4.3G   14G  25% /mnt

这个挂载不是持久的,如果我们重新启动客户端系统,这将不会自动挂载,为此我们可以将以下内容添加到客户端服务器上的 /etc/fstab 文件中。

192.168.0.200:/root/nfs     /mnt    nfs rw,async   0       0

保存对此文件的更改后,我们可以首先使用 'umount /mnt' 卸载 /mnt,然后运行 'mount -a' 这将尝试挂载 /etc/fstab 中尚未挂载的所有内容,这应该挂载 192.168.0.200: /root/nfs 回到 /mnt,这也会在重启时自动发生。

如果 192.168.0.100 以外的任何其他系统尝试安装它,它们将在安装失败后收到以下错误。

mount.nfs: access denied by server while mounting 192.168.0.200:/root/nfs

请注意,这仅根据 NFS 服务器上 /etc/exports 文件中的配置通过 IP 地址限制客户端。
实际上没有执行任何身份验证,因此我们可以使用启用 Kerberos 的 NFS 导出。
Kerberos 还可以提供加密,因为默认情况下,通过 NFS 传输的任何内容都将以不安全的明文形式发送。

NFS 配置

具有要共享数据的服务器将充当 NFS 服务器并需要安装 nfs-utils 包。

yum install nfs-utils -y

安装后,我们可以让 NFS 服务器在启动时自动启动所需的 NFS 服务,我们现在也将启动该服务,因为它在安装后默认不运行。

systemctl enable nfs
systemctl start nfs

有关使用 systemctl 进行基本服务管理的更多信息,请参阅此处的教程。

接下来必须配置防火墙以正确允许 NFS 流量通过,这可以如 firewalld 所示完成。
此更改将允许 TCP 端口 2049 NFS 流量从任何来源进入服务器。
防火墙配置也必须重新加载,因为我们已经制定了一个永久规则,该规则不适用于正在运行的配置。

firewall-cmd --permanent --add-service=nfs
firewall-cmd --reload

我们还将在 NFS 服务器上创建我们将通过 NFS 共享的目录,在本例中它将是 /root/nfs 但它可以在其他地方。

mkdir /root/nfs

NFS 服务器挂载点使用 /etc/exports 文件配置,该文件列出了可通过 NFS 访问的目录。
或者,也可以在 /etc/exports.d/ 目录中创建配置文件,只要它们具有 .exports 扩展名即可。

下面是 /etc/exports 文件中的 NFS 配置示例。

[jack@onitroad ~]# cat /etc/exports
/root/nfs       192.168.0.100(rw,async)

如图所示,/root/nfs目录只对192.168.0.100的IP地址有效,所以只有这个IP地址的系统才能成功访问和挂载该目录。
也可以使用主机名代替 IP 地址。

需要注意的是,IP 地址和选项 (rw,async) 之间没有空格,如果此处有空格,则 IP 地址将具有默认选项,而 (rw,async) 将改为应用于任何其他尝试访问 NFS 共享的客户端,这实质上会授予任何人读/写访问权限。

在对 /etc/exports 文件进行任何更改后,我们需要使用 exportfs 命令来更新导出的 NFS 文件系统表。

exportfs -arv

-a 标志将导出所有目录,-r 标志将重新导出所有目录并删除所有旧条目,而 -v 标志提供详细信息并将输出所有 NFS 导出。

如何向特定客户端提供 NFS 网络共享

使用 NFS,我们可以通过网络将文件系统中的特定目录导出到其他客户端,从而允许我们通过网络共享各种文件。
正确配置并尽可能保护它很重要,这样只有需要的客户端才能访问 NFS 共享,否则任何人都可能挂载它并访问数据。

为此,我们将使用 NFS 服务器上的 /etc/exports 文件并将共享锁定为只能由特定 IP 地址访问。

示例环境

这是我们将要测试的服务器列表。

  • NFS 客户端:192.168.0.100 - 此 Linux 客户端将从 NFS 服务器挂载一个目录。
  • NFS 服务器:192.168.0.200 - 此 Linux 服务器将通过 NFS 提供一个目录。
日期:2020-07-07 20:56:29 来源:oir作者:oir