Ubuntu 16.04 NFS 导出/共享未安装在客户端计算机上

Ubuntu 16.04 NFS 导出/共享未安装在客户端计算机上

我尽可能遵循可用的帖子在两台 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 网络环境时遇到同样问题的人。

相关内容