我尽可能遵循可用的帖子在两台 Ubuntu 机器上配置 NFS。
我在主机系统上安装了 nfs-kernel-server,并在服务器上设置了导出。我甚至关闭了防火墙以确保它不会妨碍。客户端计算机也安装了服务器以及 nfs-common 客户端包。
当我尝试在客户端安装任何共享时(当前安装位置为 /home/nfs_local)。终端长时间挂起,没有响应,只是显示“连接超时”。
我正在尝试使用此命令结构在客户端终端上安装共享:
$ sudo mount 192.168.10.111:/home/uname /home/nfs_local
以下是我的导出内容在 /etc/exports 中的样子
/home 192.168.10.128/255.255.255.0(ro,anonuid=65534,no_subtree_check,不安全,同步,不隐藏) /home/uname 192.168.10.128/255.255.255.0(rw,anonuid=65534,no_subtree_check,不安全,同步,不隐藏) /mnt/volumes/Massive_A 192.168.10.128/255.255.255.0(rw,nohide,no_subtree_check,不安全,同步) /mnt/volumes/Massive_B 192.168.10.128/255.255.255.0(rw,nohide,no_subtree_check,不安全,同步) /mnt/volumes/Massive_C 192.168.10.128/255.255.255.0(rw,nohide,no_subtree_check,不安全,同步) /mnt/volumes/SSD_B 192.168.10.128/255.255.255.0(rw,nohide,no_subtree_check,不安全,同步)
rpcinfo -p(服务器端)给出以下输出:
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100005 1 udp 46285 mountd
100005 1 tcp 40996 mountd
100005 2 udp 37056 mountd
100005 2 tcp 56903 mountd
100005 3 udp 59774 mountd
100005 3 tcp 33079 mountd
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 2 tcp 2049
100227 3 tcp 2049
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 2 udp 2049
100227 3 udp 2049
并且,防火墙处于非活动状态:
$ ufw 状态(服务器端和客户端)
状态:不活跃
有人能发现我这里遗漏了什么吗?最后,我想将这些添加到 fstab 中,以便在启动时自动挂载...或者为每个共享使用一个脚本...也非常感谢有关此用法的优缺点的建议。
感谢您的阅读。
答案1
感谢@ridgy 为我指明了这个解决方案的方向。
使用 NFS 时,必须确保端口 111 和 2049 对 TCP 和 UDP 流量开放。(如果您仅使用 NFS v4,则不需要 111 PORTMAPPER 端口)您可以根据需要将其限制到本地网络。但是,对于这两种流量类型,客户端和服务器都必须打开它。
如果要使用命令行,请首先检查防火墙的状态,发出
$ sudo ufw 状态
如果返回的信息表明“状态:不活动”,那么您可以将其关闭或激活它并输入规则以允许 NFS 及其 PORTMAPPER 数据通过。
发出指令:
$ sudo ufw 启用
启动防火墙服务
通过再次发出状态指令来检查当前规则
$ sudo ufw 状态
您将看到当前定义的规则列表(如果已定义)但是,您现在应该看到状态指令返回;
状态:活跃
查找适用于端口 2049 和 111 的任何规则。它们都应向 TCP 和 UDP 流量开放...来自“任何地方”(这应该在您的共享运行后收紧 - 取决于您的情况)*注意防火墙通常允许您根据“应用程序”默认值应用规则,但是,请节省一些时间。我发现 NFS 不在列表中。
输出应如下所示:
To Action From
111,2049/tcp ALLOW ANYWHERE
111,2049/udp ALLOW ANYWHERE
111,2049/tcp (v6) ALLOW ANYWHERE (v6)
111,2049/udp (v6) ALLOW ANYWHERE (v6)
如果您没有看到明确打开的端口,则可以发出以下指令来打开它们。这必须在主机和客户端上完成。
$ sudo ufw allow 2049
$ sudo ufw allow 111
注意:这将向所有流量开放这些端口,而不仅仅是 NFS 和 PORTMAPPER。我强烈建议 - 一旦您的 NFS 导出/挂载正常工作,请重新查看防火墙配置以加强这些端口的安全性。(这目前超出了我的知识范围和本答案的范围)
再次发出ufw 状态指令以确保条目已正确添加到您的防火墙规则中。
现在……尴尬的部分来了……主机和客户端系统上的防火墙可能不是您唯一的防火墙问题。您必须确保您的路由器没有阻塞这些端口。(这对我来说有点令人头疼。因为我对这两台机器的视野很狭窄。而且,完全忘记了它们之间的硬件。)再次感谢@ridgy!
我使用的是带 DD-WRT 的 ASUS AC3200。因此,您的路由器系统当然可能会有所不同。
如果您的路由器防火墙处于活动状态(推荐),请参阅制造商的说明,了解如何向 LAN 流量打开端口 111 和 2049...或者,为了让事情正常工作,您可以暂时禁用路由器的防火墙(不推荐)直到您的导出/安装正常工作。
我真诚地希望这次经验能够帮助到任何在实施 NFS 网络环境时遇到同样问题的人。