如何在 OpenSuse Tumbleweed 上打开 NFS 服务器的防火墙?

如何在 OpenSuse Tumbleweed 上打开 NFS 服务器的防火墙?

当我禁用服务器防火墙时,导出的目录会出现在 NFS 客户端上。否则他们不会。

我尝试在有线接口防火墙的“公共”和“内部”区域上允许“nfs”服务(其中“ssh”被明确允许并通过该漏洞),但无济于事。我没主意了。

编辑:当我停止服务器防火墙并安装导出的目录时,我在服务器上看到以下输出:

$ ss -o state established '( dport = :nfs or sport = :nfs )'
Netid     Recv-Q     Send-Q          Local Address:Port           Peer Address:Port           
tcp       0          0                192.168.1.66:nfs            192.168.1.68:vacdsm-app

编辑:使情况变得复杂的是,客户端接收服务器上导出的目录列表所需的端口与实际查看这些目录内容所需的端口不同。因此,人们可以简单地关闭防火墙,使用导出目录列表配置客户端,然后重新打开防火墙,发现它们在客户端上可用......真是一团糟。

答案1

列出的结果ss提供了让 NFS 在我的网络上运行所需的线索。本地服务列为 ,nfs但对等方的服务为vacdsm-app。查看服务器上的服务列表,我注意到vacdsm列出了。将其添加到防火墙上允许的服务列表中允许将导出的目录安装在客户端系统上。

列出导出目录的客户端似乎仍然存在问题。所以我怀疑也许还必须打开不同的端口/允许服务。

编辑:要在客户端上显示导出列表,需要通过以下方式找出正在使用的端口mountd

$ rpcinfo -p | grep mountd

100005    1   udp  48008  mountd
100005    1   tcp  48008  mountd

然后我通过检查中的相关行发现mountd使用静态端口。所以没必要设置它。MOUNTD_PORT/etc/sysconfig/nfs

然后,我将端口号本身添加到公共接口上允许的端口列表中:

$ sudo firewall-cmd --zone=public --add-port=48008/udp --permanent
$ sudo firewall-cmd --zone=public --add-port=48008/tcp --permanent

最后,我发现需要显式指定111,因此对其重复上述命令:

$ sudo firewall-cmd --zone=public --add-port=111/udp --permanent
$ sudo firewall-cmd --zone=public --add-port=111/tcp --permanent

由于 111 是标准 NFS 端口,我不明白为什么必须指定它。我怀疑,由于服务器和客户端使用不同版本的 OpenSUSE,某些东西可能会被遗漏。

答案2

当尝试从 Mac 进行连接时,我发现我还必须打开端口 20048 - 该mountd端口。

Mac 不支持 NFSv4,而 NFSv3 显然需要mountd作为“辅助服务”才能工作。

相关内容