我需要在防火墙中打开哪些端口才能使用 NFS?

ken*_*nny 94 ubuntu firewall nfs

我正在运行 Ubuntu 11.10 - 设置 NFS 以在许多其他服务器之间共享一个目录。防火墙需要打开哪些端口?

Wes*_*ley 126

$ rpcinfo -p | grep nfs
Run Code Online (Sandbox Code Playgroud)

NFS 服务器的端口 111(TCP 和 UDP)和 2049(TCP 和 UDP)。

还有用于集群和客户端状态的端口(前者为端口 1110 TCP,后者为 1110 UDP)以及 NFS 锁管理器的端口(端口 4045 TCP 和 UDP)。只有您可以根据跨网关需要哪些服务来确定需要允许哪些端口。

  • 首次挂载文件系统时需要打开 mountd。它在动态端口上运行,因此不会总是相同。我在答案中放了一个指南的链接。 (7认同)
  • 我不知道 rpcinfo,它非常有用。我没有看到带有 `grep nfs` 的端口 111,但我离开了 grep 以了解 111 用于 `portmapper`。也很高兴知道!(就像你提到的,必要的) (4认同)
  • 您能否简要描述一下这些服务(“集群和客户端状态”、“NFS 锁定管理器”)的作用以及何时需要它们?如果这些服务被防火墙阻止,NFS 服务器和客户端是否会正常降级,或者只是锁定等待响应? (2认同)

bon*_*ing 31

除了用于 portmapper 的 111 和用于 nfs 的 2049 之外,您还需要允许 mountd 端口以及可能的 rquotad、lockd 和 statd,所有这些都可以是动态的。这份出色的 NFS 安全指南建议更改您的启动脚本和内核模块配置,以强制它们使用静态端口。

除了上面的指南,其中有一个关于防火墙的部分,请参阅对另一个关于强化 NFS 的问题的回答

  • 我们确实更喜欢内容,而不是指向内容的指针。带有链接的内容概要也可以,并且比链接更受欢迎。 (10认同)
  • 不确定 2012 年,但链接中的建议似乎已经过时了。由于各种原因,NFS over TCP 是首选,并且由于协议限制,NFS over UDP 会导致快速链接上的静默数据损坏。安全指南没有提到 Kerberos/GSS 等。 (3认同)

Ami*_*val 27

我在此页面上找到了解决我的问题的有用说明,但没有易于遵循的食谱。所以这是我的食谱。

TL;DR - 修复后需要同时允许 nfs 端口(111、2049)和 mountd 端口。

指示:


为 mountd 设置固定端口

gksudo gedit /etc/default/nfs-kernel-server
Run Code Online (Sandbox Code Playgroud)
  • 注释掉这一行: RPCMOUNTDOPTS=--manage-gids
  • 添加这个: RPCMOUNTDOPTS="--port 33333"

或任何其他端口号。

现在尝试使用以下方法重置 nfs:

sudo service nfs-kernel-server restart
Run Code Online (Sandbox Code Playgroud)

并测试它是否有助于使用:

rpcinfo -p | grep "tcp.*mountd"
Run Code Online (Sandbox Code Playgroud)

对我来说这还不够,但完全重启解决了这个问题。

信用


设置防火墙

(1) 删除旧规则,如果这是防火墙的唯一用途,请手动执行或重置:

sudo ufw reset
sudo ufw enable
Run Code Online (Sandbox Code Playgroud)

(2) 添加nfs & mountd 端口

sudo ufw allow in from 10.0.0.1/20 to any port 111 
sudo ufw allow in from 10.0.0.1/20 to any port 2049
sudo ufw allow in from 10.0.0.1/20 to any port 33333
Run Code Online (Sandbox Code Playgroud)

(更改为您的本地 IP 或“ any”而不是10.0.0.1/20

这就是全部。

  • 您不需要重新启动整个盒子。在重新启动 `nfs-kernel-server` 之前,简单的 `sudo service nfs-config restart` 就可以了。 (3认同)

小智 9

这将给出所有 NFS 相关程序使用的所有端口的列表:

rpcinfo -p | awk '{print $3" "$4}' | sort -k2n | uniq
Run Code Online (Sandbox Code Playgroud)