由于非法端口,NFS 迁移失败

由于非法端口,NFS 迁移失败

我有一台虚拟机,它有一个公共 IP 接口和一个私有 IP 接口。私有接口分配为 192.168.50.78。然后,我有一个专用主​​机,它使用私有 IP 192.168.50.1 充当我的“路由器”,因此,这是我的 192.168.50.0/24 本地网络的网关。我的“路由器”是 OPNsense。

话虽如此,我还是尝试在虚拟机内挂载到我的两个远程 NFS 服务器。挂载失败,因为来自虚拟机的非法端口位于 NAT 后面:

[root@NFSHOST ~]# tail -f /var/log/messages | grep "rpc.mountd"
Feb 21 22:31:40 NFSHOS rpc.mountd[28721]: refused mount request from 197.189.XXX.ZZZ for /data/secondary (/data/secondary): illegal port 33744
Feb 21 22:35:22 NFSHOS rpc.mountd[28721]: refused mount request from 197.189.XXX.ZZZ for /data/secondary (/data/secondary): illegal port 40085

这是由于端口转换引起的。解决方案是添加insecure到我的/etc/export文件中,我已经测试过并确认它确实有效。

但是,正如它所建议的那样,insecure强烈不推荐这样做。我曾尝试在 OPNsense 上添加端口转发规则,但由于某种原因,它仍然因非法端口而失败。

在此处输入图片描述

有什么办法可以解决这个问题吗?PS:我不能使用“桥接”模式,我需要在 OPNsense 中设置某种规则来相应地处理这个问题,但我不太确定。

答案1

终于解决了这个具体问题。有人告诉我:OPNsense 链接

下列:

IIRC NFS 服务器希望来自客户端的源端口小于 1024 才被认为是安全的。请确保选中 NAT 出站规则上的“静态端口”,以防止防火墙修改 TCP 和 UDP 数据包上的源端口。

我最终在 OPNsense 上为整个本地 LAN 添加了一条 NAT 出站规则,并启用了静态端口,问题就解决了。现在我可以通过安全端口范围挂载 NFS。

答案2

对我来说,问题是服务器不支持旧协议版本。您可以强制客户端使用其他版本,如下所示:

mount -o vers=3 -t nfs 123:/

这当然适用于标准 Linux 客户端。如果您无法影响这样的客户端,请查看此帖子,了解如何在服务器端支持其他协议:

https://askubuntu.com/questions/974696/how-can-i-make-the-nfs-server-support-protocol-version-2-in-ubuntu-17-10

相关内容