尽管端口已打开,但 nfs 仍被 ufw 阻止

尽管端口已打开,但 nfs 仍被 ufw 阻止

我已经设置了一个 nfsv4 服务器并且它运行良好,但是即使端口 2049 和 111 已打开,防火墙也会阻止 nfs。

我知道 nfs 使用一些每次启动时都会改变的随机端口,但如何才能使它们变为静态,以便我可以使用 nfs 而不必再次禁用防火墙?

答案1

我对此做了一些研究。Ubuntu 使用的是 UFW,它非常容易配置,而且非常强大,至少对于 soho 的需求来说是这样。因此,rpc.mountd默认情况下监听多个端口,因此你必须绑定rpc.mountd到一个端口,然后您可以添加额外的 UFW 规则来接受该特定端口上的传入连接。

为此,请打开/etc/default/nfs 内核服务器并注释掉以下行

RPCMOUNTDOPTS=--manage-gids

并添加以下行

RPCMOUNTDOPTS="-p 13025"

13025 只是一个随机选择的端口,它是可用的,并且尚未定义/etc/services

sudo systemctl restart nfs-kernel-server使用(或sudo /etc/init.d/nfs-kernel-server restart在旧版 Ubuntu 上)重新启动 NFSd 。

现在配置 UFW 以接受端口上的传入连接130252049和港口111

ufw allow from 192.168.1.0/24 to any port 111
ufw allow from 192.168.1.0/24 to any port 2049
ufw allow from 192.168.1.0/24 to any port 13025

就是这样。您现在应该能够从另一台机器安装您的导出文件了。:-)

答案2

接受的答案对于旧版本的 Ubuntu 来说是正确的。但是现在我正在使用 Ubuntu 22,在尝试此选项后(在我之前的 Raspberry Pi 上的 Ubuntu 中运行良好),似乎不再有效。

根据此链接

Ubuntu 22.04 中的 NFS 服务器或客户端会忽略 /etc/default/nfs-* 文件。

这意味着@Jar 提出的解决方案不再有效。

现在必须做的是编辑/etc/nfs.conf并根据此链接. 更新此配置:

[mountd]
#port=0

取消注释该行#port=0并将端口替换为所需的数字(即,按照其他示例替换为 13025)。

[mountd]
port=13025

此后,重新启动服务器:

systemctl restart nfs-server

并确保端口13025现在已正确打开,rpcinfo -p并提供如下输出:

   program vers proto   port  service
    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  13025  mountd
    100005    1   tcp  13025  mountd
    100005    2   udp  13025  mountd
    100005    2   tcp  13025  mountd
    100005    3   udp  13025  mountd
    100005    3   tcp  13025  mountd
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs

现在必须按预期工作。显然,请记住打开防火墙以访问端口204911113025。如前面的答案所述:

ufw allow from 192.168.1.0/24 to any port 111
ufw allow from 192.168.1.0/24 to any port 2049
ufw allow from 192.168.1.0/24 to any port 13025

答案3

使用新版本的 Ubuntu,您无需进行复杂的操作。Ubuntu 18.04 ufw 和 nfs-kernel-server。

只需使用此命令即可允许主机上的 nfs

sudo ufw allow from your_client_ip to any port nfs

或者

sudo ufw allow from your_client_ip_block/24 to any port nfs

相关内容