El cliente de nfs al conectarse es comprobado mediante las reglas que tenga el servidor en su fichero /etc/exports. Si estamos entre las IPs que se pueden conectar, el portmapper (/sbin/portmap del servidor) nos dará el siguiente puerto libre para montar (mountd) la carpeta nfs.
Este es el funcionamiento por defecto, pero podemos forzar a mountd a ligarse a un puerto determinado. Si cambiamos /etc/default/nfs-kernel-server (en el servidor) y ponemos algo como:
# Number of servers to start up RPCNFSDCOUNT=8
# Options for rpc.mountd RPCMOUNTDOPTS="--port 2000"
Obligamos a mountd a ligarse a ese puerto. De esa forma, en el firewall, bastará con abrir el puerto 2000 (además del 2049 nfs y el 111 del portmap) para que todo funcione,
Un par de utilidades: pmap_dump (o bien rcpinfo -p localhost) que muestra los puertos a los que están ligados el portmapper, mountd, etc. y pmap_set que los cambia.
# pmap_dump 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 793 status 100024 1 tcp 796 status 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100021 1 udp 32773 nlockmgr 100021 3 udp 32773 nlockmgr 100021 4 udp 32773 nlockmgr 100021 1 tcp 38611 nlockmgr 100021 3 tcp 38611 nlockmgr 100021 4 tcp 38611 nlockmgr 100005 1 udp 2000 mountd 100005 1 tcp 2000 mountd 100005 2 udp 2000 mountd 100005 2 tcp 2000 mountd 100005 3 udp 2000 mountd 100005 3 tcp 2000 mountd
Enlaces relacionados
nfs.sourceforge.net/nfs-howto/security.html