Estas son unas breves directrices para habilitar y montar el servicio NFS en la versión 4 en Debian Squeeze/Wheezy, aunque es muy similar en otras distribuciones.

Puedes comprobar qué versión de protocolo estás utilizando por medio del comando nfsstat. Al ejecutarlo como root obtendrás amplia información sobre el protocolo NFS y cada una de las versiones que se han utilizado en las comunicaciones.

En la actualidad en la mayoría de instalaciones se utiliza por defecto la versión 3 pero sin embargo la versión 4 se encuentra disponible desde el año 2000, con una revisión en abril de 2003. Así pues es una versión bastante depurada y sólida (más de 10 años) como para confiar en ella y deshabilitar el soporte para anteriores versiones.

Obviamente deberas asegurarte que el resto de clientes son compatibles con la versión 4, pero si utilizas un kernel 3.2+ no deberías de tener ningún problema.

Mejoras de NFSv4

Esta versión incluye seguridad Kerberos, trabaja a través de firewalls, permite ACLs y utiliza operaciones con descripción del estado; además de que ofrece algunas mejoras de rendimiento y una mayor seguridad.

Servicios involucrados

En primer lugar, comprobamos que tenemos corriendo los servicios necesarios para NFSv4:

  • rpc.statd. Servicio que se encarga de monitorizar el servicio NFS y RPC y reunir datos para componer estadísticas de uso de los diferentes protocolos utilizados. No es necesario para NFSv4, pero personalmente prefiero tenerlo activado para monitorizar el estado del servicio.
  • rpc.lockd. Servicio que se utiliza en NFSv3 encargado de monitorizar y realizar los «locks» o bloqueos en el sistema de archivos NFS. Ya no es necesario en NFSv4 dado que se encuentra integrado dentro en la nueva versión.
  • rpc.mountd. Este servicio gestiona las peticiones los clientes para montar los sistemas de ficheros exportados. No se utiliza en la versión 4.
  • portmapper. También se ha integrado dentro del protocolo NFSv4 así que no es necesario.
  • rpc.idmapd. Es el servicio que provee funcionalidad al mapeo de IDs de usuarios y grupos. Este nuevo servicio es obligatorio en NFSv4.
  • rpc.svcgssd y rpc.gssd. Estos servicios se encargan de la autenticación de las peticiones con Kerberos 5 en servidor y clientes. Sólo son necesarios si utilizas autenticación, de lo contrario puedes deshabilitarlos.
  • rpc.nfsd. Implementa la parte de usuario del servicio NFS. Como ya sabes la parte principal del servicio NFS se incluye como parte del kernel.

Comprobar versiones soportadas en el kernel

Tampoco está de más y como curiosidad conocer qué versiones de NFS soporta nuestro kernel. Esta información la podemos obtener del siguiente modo:

# cat /proc/fs/nfsd/versions
+2 +3 +4 -4.1

De este modo podemos averiguar que tenemos habilitado el soporte para las versiones 2, 3 y 4 (la 4.1 está disponible pero no habilitada).

Adecuando la configuración

Editamos el fichero /etc/default/nfs-common

# vim /etc/default/nfs-common

# If you do not set values for the NEED_ options,
# they will be attempted
# autodetected; this should be sufficient 
# for most people. Valid alternatives
# for the NEED_ options are "yes" and "no".

# Do you want to start the statd daemon? 
# It is not needed for NFSv4.
NEED_STATD=YES

# Options for rpc.statd.
# Should rpc.statd listen on a specific port? 
# This is especially useful
# when you have a port-based firewall. 
# To use a fixed port, set this
# this variable to a statd argument like: 
# "--port 4000 --outgoing-port 4001".
# For more information, see rpc.statd(8) or 
# http://wiki.debian.org/SecuringNFS
STATDOPTS=

# Do you want to start the idmapd daemon? 
# It is only needed for NFSv4.
NEED_IDMAPD=YES

# Do you want to start the gssd daemon? 
# It is required for Kerberos mounts.
NEED_GSSD=NO

Editamos el fichero /etc/default/nfs-kernel-server

# vim /etc/default/nfs-kernel-server

# Number of servers to start up
RPCNFSDCOUNT=8

# Runtime priority of server (see nice(1))
RPCNFSDPRIORITY=0

# Options for rpc.mountd.
# If you have a port-based firewall, 
# you might want to set up
# a fixed port here using the --port option. 
# For more information,
# see rpc.mountd(8) or 
# http://wiki.debian.org/SecuringNFS
# To disable NFSv4 on the server, 
# specify '--no-nfs-version 4' here
# RPCMOUNTDOPTS=--manage-gids

# We add support for NFSv4 and 
# we disable the old versions 2 & 3
RPCMOUNTDOPTS="--manage-gids -V 4 -N 3 -N 2"

# Do you want to start the svcgssd daemon? 
# It is only required for Kerberos
# exports. Valid alternatives are 
# "yes" and "no"; the default is "no".
NEED_SVCGSSD=NO

# Options for rpc.svcgssd.
RPCSVCGSSDOPTS=

La linea más importante es: RPCMOUNTDOPTS=»–manage-gids -V 4 -N 3 -N 2″ en donde explicitamente activamos la versión 4 y deshabilitamos las versiones más antiguas.

Ahora ya tendríamos lista la configuración. Vamos a por el sistema de archivos.

Creando el sistema de ficheros compartidos

Se recomienda como una buena práctica en NFS el utilizar pseudo-filesystems para compartir contenidos por red. De este modo podemos agrupar contenidos de nuestro disco duro existentes en distintos directorios, centralizando en una sola carpeta todos estos contenidos. Por este motivo hay que realizar algunas operaciones «extra» en los directorios a compartir.

Creamos un directorio /exports

# mkdir /exports

Y dentro de este nuevo directorio creamos una nueva carpeta por cada sistema de ficheros o directorio a exportar que queramos incluir:

# mkdir /exports/img
# mkdir /exports/video
# mkdir /exports/mp3

Lo siguiente será montar como un pseudo-filesystem los directorios a compartir. Eso lo podemos añadir en /etc/fstab para que se monten al inicio. Como podemos ver utilizan la opcion «bind» para montar en /exports el sistema de ficheros que queremos compartir.

/store/video /exports/video none rw,bind 0 0
/store/mp3 /exports/mp3 none rw,bind 0 0
/store/img /exports/img none rw,bind 0 0

Ahora volvemos a leer la configuración de /etc/fstab para montar los nuevos sistemas de ficheros:

# mount -a

Últimos pasos

Editamos /etc/exports y añadimos la siguiente linea:

# vim /etc/exports
 
/exports 192.168.1.0/255.255.255.0(no_subtree_check,rw,insecure,all_squash,anonuid=1006,anongid=100,fsid=0)

Lo más importante de la anterior linea es la opción «fsid=0» con la cual indicamos a NFS que este directorio es la raíz del servicio y todos los demás puntos de montaje dependerán de él. A continuación incluimos el resto de pseudo-filesystems.

/exports/img 192.168.1.0/255.255.255.0(no_subtree_check,rw,insecure,all_squash)
/exports/video 192.168.1.0/255.255.255.0(no_subtree_check,rw,insecure,all_squash)
/exports/mp3 192.168.1.0/255.255.255.0(no_subtree_check,rw,insecure,all_squash)

Ahora ya podemos reiniciar el sistema

# service nfs-common restart
# service nfs-kernel-server restart

Con esto ya tenemos funcionando en nuestro servidor NFS en su versión 4. Ahora deberemos de configurar el montaje de los directorios exportados en los equipos cliente. Para ello cambiaremos el sistema de ficheros de nfs a nfs4.

Por ejemplo, en uno de mis equipos cliente en su /etc/fstab aparece lo siguiente:

192.168.1.2:/img /home/oscar/Imágenes nfs4 auto,rw,defaults 0 0
192.168.1.2:/video /home/oscar/Vídeos nfs4 auto,rw,defaults 0 0
192.168.1.2:/mp3 /home/oscar/Música nfs4 auto,rw,defaults 0 0

De este modo si ahora ejecutamos nfsstat veremos como en nuestras estadísticas sólo aparecen transacciones en el protocolo NFSv4.

Fuentes

Comparte si te ha gustado

Autor:
Última actualización:

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

De acuerdo con lo dispuesto en el Reglamento (UE) 2016/679 de 27 de abril de 2016, consiento que mis datos sean tratados bajo la responsabilidad de Oscar Gascón Arjol para recibir respuesta a consultas. publicación de comentarios del blog y que las conserve mientras haya un interés mutuo para ello. Me doy por informado que tengo derecho a revocar este consentimiento en cualquier momento y a ejercer los de acceso, rectificación, portabilidad y supresión de mis datos y los de limitación y oposición al tratamiento dirigiéndome por email a [email protected] También estoy informado de que puedo reclamar ante la autoridad de control a www.agpd.es.