在防火墙系统上安装 NFS 挂载点时出现问题,但在其他内部系统上运行良好:如何找到原因?

在防火墙系统上安装 NFS 挂载点时出现问题,但在其他内部系统上运行良好:如何找到原因?

这是在 Fedora Core 35 上:这个环境已经成熟,并且有几个称为防火墙或网关的系统,并且我们第一次想要对其中一个系统进行 NFS 共享。

在客户端上安装时遇到问题后,我通过复制粘贴 /etc/fstab 条目在另一个内部系统上执行相同的安装,证明了服务器的配置没有问题。我认为这一定是防火墙问题,所以我将接口更改为“受信任”区域。但我仍然得到:

mount.nfs: access denied by server while mounting 192.168.1.1:/fu

因此,我做了一些研究并想出了以下办法:

rpcdebug -m nfsd -s all

但是我没有得到与所讨论的挂载相关的任何信息 - 事实上什么也没有进入/var/log/messages......这不是我应该看的地方吗?!(其他 nfs 相关项目都在那里,但不是这个挂载。)

因此,我尝试了我们的备份服务器并得到了相同的(空)结果。我还尝试从使用主机名更改为在客户端上使用 IP 地址 - 无论哪种方式,结果都相同,除了我报告的内容之外什么也没有。)

答案1

我想到了。

显然,/etc/export一旦出现任何错误,导出功能就会停止读取文件。 已经读入并且“有效”的导出将被导出,然而,文件中可能存在的任何其他导出都将被忽略因为处理已停止。

很遗憾,此类错误未登录/var/log/messages(系统错误日志文件)nfs。据我所知,报告这些错误的唯一地方是运行:

exportfs -a 

在这种情况下,我的大多数条目都以“ 开头rw",只有少数"ro"错误导致所有这些错误都是"r"。哎呀!这就是导出停止的地方。

同样值得关注的是这些帮助我发现问题的附加工具:

正如问题中已经提到的,为了做出彻底的回答,这会将“所有”错误发送到系统日志文件(/var/log/messages):

rpcdebug -m nfsd -s all

再次强调,并非所有错误实际上都会发生在这里,正如已经指出的那样/etc/export errors

列出所有当前可能的导出:从服务器:

导出文件系统

来自客户:

showmount -e <host>

请注意,这showmount是一个危险的潜在安全漏洞,因为它可以让客户端轻松知道服务器可以做什么,从而了解其他系统。因此,在这种情况下,它是一台“防火墙/网关”机器,请确保只有 root 可以运行它!

最后,你还可以获得网络转储:

tcpdump -s0 -i <interface> host <host_ip> -w <file>

我没有一个很好的指针来解释所述转储,但您可以运行strings它以至少确认您获得了正确的数据包。

答案2

线路

mount.nfs: access denied by server while mounting 192.168.1.1:/fu

明确指出 NFS 服务器(准确地说是 mountd)拒绝了客户端的挂载请求。这种情况很可能是因为exports服务器上的文件中没有提到客户端 IP。

我想你应该再复习一下。

相关内容