NFS使用固定端口

NFS通常情况下会使用动态端口,对于防火墙配置很不友好。
可以设置使用固定的几个端口。
修改以下配置文件:
/etc/default/nfs-common:

1
STATDOPTS="--port 3000 --outgoing-port 3001"

/etc/default/nfs-kernel-server:

1
RPCMOUNTDOPTS="--manage-gids --port 3002"

新添加配置文件:
/etc/sysctl.d/nfs-static-ports.conf:

1
2
fs.nfs.nlm_tcpport = 3003
fs.nfs.nlm_udpport = 3003

然后:

1
2
3
$ sudo sysctl -p /etc/sysctl.d/nfs-static-ports.conf
$ sudo systemctl restart nfs-utils.service
$ sudo systemctl restart nfs-kernel-server.service

然后打通防火墙的TCP和UDP端口:111,2049,3000-3003就可以了。

如果出现错误:

1
mount.nfs: access denied by server while mounting ...

可以检查/etc/exports设置的访问网段是否正确,如果通过防火墙NAT方式访问,端口号会大约1024,需要添加insecure访问选项,比如(insecure,rw)

修改/etc/exports后,可以使用

1
$ sudo exportfs -a

重新导出文件系统

References:
[1]SecuringNFS
[2]Setting Up iptables for NFS on Ubuntu