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