#1 楼
$ rpcinfo -p | grep nfs
NFS服务器的端口111(TCP和UDP)和2049(TCP和UDP)。也有用于集群和客户端状态的端口(端口1110 TCP用于前者为1110 UDP,后者为1110 UDP)以及NFS锁定管理器的端口(端口4045 TCP和UDP)。只有您可以根据跨网关需要的服务来确定需要允许的端口。
评论
我不知道rpcinfo,这很有用。我没有看到带有grep nfs的端口111,但是我放弃了grep,以了解111是用于portmapper的。也很高兴知道! (就像您提到的,必要)
–肯尼
2012年4月5日在21:12
@KennyYounger rpcinfo也是有用的。如果这回答了您的问题,请不要忘记将其标记为答案,以使将来的观众受益。
–卫斯理
2012年4月5日在21:17
首次挂载文件系统时,需要mountd open。它在动态端口上运行,因此不会总是相同的。我在回答中加入了指南的链接。
–bonsaiviking
2012年4月5日在21:23
谢谢@bonsaiviking。此过程的关键信息。我支持您的回答!
–肯尼
2012年4月6日,0:25
您能否简要描述这些服务(“群集和客户端状态”,“ NFS锁定管理器”)的功能以及何时需要它们?如果这些服务被防火墙阻止,NFS服务器和客户端是否会正常降级,还是仅锁定等待响应?
–内森·克雷克(Nathan Craike)
2015年4月9日在0:41
#2 楼
除了用于portmapper的111和用于nfs的2049,还需要允许安装的端口以及可能的rquotad,lockd和statd,它们都是动态的。这份出色的NFS安全指南建议您更改启动脚本和内核模块配置,以强制它们使用静态端口。除了上面的指南(其中包括防火墙部分)之外,请参阅我对另一个问题的回答关于硬化NFS。
评论
我们确实更喜欢内容,而不是内容的指针。带有链接的内容的原则也可以,并且优先于链接。
–user9517
2012年4月5日在21:31
不确定2012年,但链接中的建议似乎已过时。由于各种原因,首选使用基于TCP的NFS,并且由于协议限制,基于UDP的NFS可能会导致快速链接上的静默数据损坏。安全指南未提及Kerberos / GSS等。
– Maciej Piechotka
16 Dec 26 '16:46
对于已安装的端口,如果重新配置以确保已安装的端口是固定的,则使用寿命会轻松得多。在debian系统上,将RPCMOUNTDOPTS值编辑为RPCMOUNTDOPTS =“-port 34567”,然后使用sysctl --system和/etc/init.d/nfs-kernel-server restart重新启动
–user45793
19年1月17日19:53
#3 楼
我在此页面上找到了解决问题的有用指导,但没有容易遵循的方法。所以这是我的食谱。TL; DR-修复后需要同时允许nfs端口(111、2049)和安装的端口。
说明:
设置用于mountd的固定端口
gksudo gedit /etc/default/nfs-kernel-server
注释此行:
RPCMOUNTDOPTS=--manage-gids
添加而是:
RPCMOUNTDOPTS="--port 33333"
或任何其他端口号。
现在尝试使用以下命令重置nfs:
sudo service nfs-kernel-server restart
并测试它是否有助于使用:
rpcinfo -p | grep "tcp.*mountd"
对我来说这还不够,但是完全重启可以解决此问题。
(信用)
设置防火墙
(1)删除旧规则,手动执行此操作,或者如果这仅用于防火墙,则重置:
sudo ufw reset
sudo ufw enable
(2)添加nfs和已安装的端口
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
(更改为本地IP或改为“
any
”,而不是“ 10.0.0.1/20
”)。这就是全部。
评论
您无需重新启动整个框。在重新启动nfs-kernel-server之前,简单的sudo服务nfs-config重新启动就可以了。
–showp1984
17-2-27在23:29
@ showp1984谢谢,我下次再试
–阿米尔·乌瓦尔(Amir Uval)
17年2月28日在5:57
或者,如果您的系统使用systemctl,则是systemctl重新启动nfs-kernel-server.service。
–fbicknel
19-10-7在20:27
您也可以在一口膨胀中完成所有操作:sudo nfs允许从10.0.0.1/20到所有端口111,2049,33333的proto tcp,然后是(好的,两个膨胀式)sudo nfs允许从10.0.0.1/20的prod udp到任何端口111204933333。请注意,端口33333符合上述示例。您可以使用其他端口作为答案。
–fbicknel
19-10-7在20:30
@jchook在我看来像事实!
–fbicknel
20-4-25在17:14
#4 楼
这将给出所有与NFS相关的程序使用的所有端口的列表:rpcinfo -p | awk '{print " "}' | sort -k2n | uniq
#5 楼
使用FERM,可以使用Backticks从rpcinfo获取端口,例如:服务器:
proto tcp {saddr ($CLIENT) {
dport (`rpcinfo -p | perl -e 'while(<>){/\s+\d+\s+\d\s+(?:tcp)\s+(\d+)/ and $ports{}=1}; $, = " "; print sort(keys(%ports)),"\n"'`) ACCEPT; # NFS
}}
proto udp {saddr ($CLIENT) {
dport (`rpcinfo -p | perl -e 'while(<>){/\s+\d+\s+\d\s+(?:udp)\s+(\d+)/ and $ports{}=1}; $, = " "; print sort(keys(%ports)),"\n"'`) ACCEPT; # NFS
}}
客户端:
proto udp {saddr ($SERVER) {ACCEPT;}} # NFS
(如果只使用TCP,则只需要
proto tcp
部分)。#6 楼
作为记录,我必须为Windows 2008 R2服务器导出NFS共享并且客户端为Ubuntu 12.04.4的配置添加端口111、2049和1048的权限。我希望这可以帮助某人。
评论
可能有助于解释为什么需要端口1048以及如何确定端口1048。
– HBruijn
15年12月16日在10:48
坦白说,我不知道为什么我需要添加1048的权限,但是添加后就解决了我的问题。我只是想分享一下是否可以节省以后的时间。很抱歉无法回答该问题。
–埃德姆·卡亚(Erdem KAYA)
2015年12月20日在10:33
#7 楼
要将Synology挂载到Ubuntu 18.04系统,我必须启用端口111,892,2049挂载时,这是我看到的(Synology上未启用NFS 4): >
root@ub18ovh# mount -a -vv
mount.nfs: trying text-based options 'vers=4.2,addr=5.6.7.8,clientaddr=1.2.3.4'
mount.nfs: mount(2): Protocol not supported
mount.nfs: trying text-based options 'vers=4.1,addr=5.6.7.8,clientaddr=1.2.3.4'
mount.nfs: mount(2): Protocol not supported
mount.nfs: trying text-based options 'vers=4.0,addr=5.6.7.8,clientaddr=1.2.3.4'
mount.nfs: mount(2): Protocol not supported
mount.nfs: trying text-based options 'addr=5.6.7.8'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 5.6.7.8 prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying 5.6.7.8 prog 100005 vers 3 prot UDP port 892
successfully mounted
#8 楼
如果您使用csf防火墙而nfs无法挂载,则很可能会错过nlockmgr使用的开放端口,请键入以下内容找到它们:rpcinfo -p
接下来编辑
/etc/sysctl.conf
以将这些端口上的端口锁定(示例端口)并添加这两条线。然后重新启动端口映射nfs-server。fs.nfs.nlm_udpport=38073
fs.nfs.nlm_tcpport=38747
评论
这取决于您打算使用的协议版本。 NFS 4只需要2049,而旧版本则需要更多。