我正在运行Ubuntu 11.10 – 设置NFS以在许多其他服务器之间共享目录。 哪些端口需要在防火墙上打开?
rpcinfo -p | grep nfs
NFS服务器的端口111(TCP和UDP)和2049(TCP和UDP)。
还有群集和客户端状态的端口(前者为1110 TCP,后者为1110 UDP)以及NFS锁pipe理器(端口4045 TCP和UDP)的端口。 只有您可以确定哪些端口需要允许,具体取决于需要哪些服务跨网关。
除了portmapper的端口号为111以及nfs的端口号为2049之外,您还需要允许mountd端口以及可能的rquotad,lockd和statd,所有这些都可以是dynamic的。 这个优秀的NFS安全指南build议更改您的启动脚本和内核模块configuration,强制他们使用静态端口。
除了上面的指南,其中有关于防火墙的一节 ,请参阅我对有关强化NFS的另一个问题的回答 。
使用FERM,可以使用反引号从rpcinfo获取端口,例如:
服务器:
proto tcp {saddr ($CLIENT) { dport (`rpcinfo -p | perl -e 'while(<>){/\s+\d+\s+\d\s+(?:tcp)\s+(\d+)/ and $ports{$1}=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}=1}; $, = " "; print sort(keys(%ports)),"\n"'`) ACCEPT; # NFS }}
客户:
proto udp {saddr ($SERVER) {ACCEPT;}} # NFS
(如果你只打算使用TCP,那么你只需要proto tcp
部分)。
我在这个页面上发现了我的问题的有用的方向,但是不容易遵循配方。 所以这是我的食谱
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
并testing它是否有助于使用:
rpcinfo -p | grep tcp.*mountd
对我来说这是不够的,但完全重新启动解决了这个问题。
( 信贷 )
(1)删除旧规则,手动执行或重置,如果这是防火墙的唯一用途:
sudo ufw reset sudo ufw enable
(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
(更改为您的本地IP或更改为“ any
”而不是10.0.0.1/20
)
这就是它的全部。
这将列出所有与NFS相关的程序使用的所有端口:
rpcinfo -p | awk '{print $3" "$4}' | sort -k2n | uniq
对于logging,我必须为端口111,2049 和 1048添加权限,以便在Windows 2008 R2服务器中导出NFS共享并且客户端是Ubuntu 12.04.4。
我希望这可以帮助别人。