NFS a través de un firewall

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