挂载 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 服务器上的 /etc/exports 文件并将共享锁定为只能由特定 IP 地址访问。
示例环境
这是我们将要测试的服务器列表。
- NFS 客户端:192.168.0.100 - 此 Linux 客户端将从 NFS 服务器挂载一个目录。
- NFS 服务器:192.168.0.200 - 此 Linux 服务器将通过 NFS 提供一个目录。