Error al instalar NFS: invoke-rc.d: initscript nfs-kernel-server, action «restart» failed.

Tras actualizar el servidor NFS nfs-kernel-daemon, nos encontramos con éste error.Este error se debe muchas veces a la prisa con la que se instalan los paquetes. Probablemente hemos dejado los ficheros de configuración que ya teníamos y no los que trae el nuevo paquete. Si no cambiamos nada, el nuevo NFS intenta utilizar el servidor sgss, que si no está configurado hace que no se inicie el servidor nfs.
Para solucionarlo iremos a la carpeta /etc/defaults que es donde nfsd guarda su configuración. Una vez allí, es posible que tengamos un fichero llamado nfs-kernel-server y otro nfs-kernel-server.dpkg-dist. Este último es el que nos ha instalado apt-get, con la configuración del paquete. En el caso que nos ocupa, no vamos a usar gssd, pero no se lo hemos dicho (en el fichero de configuración antiguo no lo teniamos). La solución:
NEED_SVCGSSD=no

j j j

¿Cómo se monta una carpeta en red NFS?

Si queremos montar una carpeta (en Linux, un directorio) que está compartida en una máquina, con IP 10.1.1.1 , debemos añadir a /etc/fstab una línea como:

10.1.1.1:/publico /mnt/publico nfs defaults,user,noauto 0 0

aquí indicamos que en la IP 10.1.1.1, hay una carpeta /publico y que se monte en el pto. de montaje /mnt/publico. La opción user permite que cualquier usuario (no sólo root) pueda montar/desmontar la carpeta.

j j j

Cómo añado una carpeta compartida con NFS

Primero, hay que definir en /etc/exports los directorios que vamos a exportar en NFS. Un ejemplo puede ser:

# /etc/exports: the access control list for filesystems which may be exported

# to NFS clients. See exports(5).
/home/dfreniche/inout 10.1.1.0/255.255.255.255(sync,no_root_squash,rw)

Definimos que el directorio /home/dfreniche/inout estará disponible via NFS

Para que se exporten los directorios de forma efectiva, queda ejecutar

# exportfs -a

Si queremos ver los directorios que tenemos exportados:

# exportfs
/home/dfreniche/inout
10.1.1.0/255.255.255.255
j j j

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

j j j