NFS

El servicio de NFS es un servicio de red que nos permite compartir archivos entre distintos equipos. Este funciona de forma similar a una carpeta compartida en Windows. Esta pensado para funcionar como servidor o cliente. El servidor comparte una carpeta con uno o más clientes y los clientes acceden a los archivos de la carpeta ( montando las carpetas en su sistema de ficheros ).

Esta guía se parte por un lado en la configuración de un servidor NFS y por otro en la configuración de un cliente NFS.

Servidor

Instalación de los requisitos

Para funcionar NFS sobre el servidor debemos instalar los siguientes paquetes:

apt install nfs-kernel-server nfs-common

Con esto ya podemos para a la configuración.

Preparando la carpeta a compartir

Primero tenemos que crear la carpeta que vamos a compartir (en el caso de que ya la tengas puedes omitir este paso):

mkdir <carpeta_compartida>

Luego tenemos que asignar un propietario especial a esta carpeta. Este usuario nobody y grupo nogroup se utilizan para que los clientes remotos puedan acceder a los archivos de la carpeta compartida.

chown nobody:nogroup <carpeta_compartida>

Configurando el servidor

Para configurar el servidor NFS, debemos modificar el archivo de configuración /etc/exports. Al final del fichero de configuración debemos añadir la siguiente línea:

/ruta/carpeta/compartida <origenes permitidos>(<opciones>)

# Ejemplo, los orígenes son todos los clientes, especificado con *.
/home/usuario/carpeta_compartida *(rw,sync,no_subtree_check,no_root_squash)

# Podíamos especificar múltiples clientes con distintas opciones por cada uno de ellos
/ruta/carpeta/compartida 192.168.1.56(rw,sync) 192.168.1.68(rw,sync)

Podemos especificar los origenes permitidos al servidor de las siguientes maneras:

  • Host único: podríamos especificar una IP o un nombre de host único como origen y repetir las opciones por cada uno de ellos.
  • Redes de IPs: Podríamos especificar rangos de IPs especificando la IP con máscara de red. Ejemplo, 192.168.1.0/24 permitiría todas las IPs de la red desde 192.168.1.0 hasta 192.168.1.255.
  • Comodines: Podríamos usar * para indicar que todos los clientes están permitidos y tambien se puede combinar con nombres de dominios. Por ejemplo, *.example.com permitiría todos los clientes que tengan con subdominio de example.com.
  • Grupos de red: Se podría definir un grupo de equipos de red especificándolo de la siguiente manera @grupo_de_red.

Veamos las diferentes opciones que podemos configurar por cada origen o grupo de orígenes:

  • Permisos de lectura: rw para lectura y escritura y ro para solo lectura.
  • Opciones de sincronización: sync para sincronizar los archivos y async para no sincronizar los archivos.
  • Opciones de compartición: no_subtree_check para que no se compruebe el subdirectorio y no_root_squash para que no se comparta el root.

Una vez configuradas las carpetas a compartir tendríamos que reiniciar el servicio para que se aplique la nueva configuración.

systemctl restart nfs-kernel-server

Permitir conexiones remotas en el firewall

Para permitir conexiones remotas en el firewall debemos permitir conexiones al puerto 2049 y 111 que utiliza el servicio NFS. Con ufw en ubuntu se puede hacer de la siguiente manera:

# Permitir orígenes específicos en el firewall
ufw allow from <origen> to any port nfs

# Permitir todos los orígenes en el firewall
ufw allow from any to any port nfs

Cliente

Instalación de los requisitos

Para funcionar NFS como cliente debemos instalar el siguiente paquete:

apt install nfs-common

Punto de montaje o carpeta donde montar los archivos remotos

Debemos espesificar la carpeta donde vamos a montar los archivos remotos. Esto se puede hacer con el comando mount:

mount <IP del servidor>:/ruta/carpeta/remota /ruta/carpeta/local 

Una vez montada la carpeta podemos listar todos los puntos de montaje del servidor con el siguiente comando:

showmount -e <IP del servidor>

También podríamos listar los montajes locales con el comando:

df -h

Por último, podríamos desmontar un punto de montaje con el comando:

umount /ruta/carpeta/local

Montaje automático en el arranque - Fstab

Podemos montar automáticamente la carpeta remota en el arranque añadiendo una línea de configuración en el archivo /etc/fstab:

La línea tendría el siguiente formato:

<IP del servidor>:<ruta/carpeta/remota> /ruta/carpeta/local nfs <opciones> 0 0

# Por ejemplo:
192.168.1.56:/home/user/compartida /home/cliente/compartida nfs rw,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

Ahora podríamos reiniciar el servidor y comprobar que la carpeta se ha montado automáticamente. A veces tarda unos segundos/minutos en realizar el montaje.


Última modificación March 6, 2022: Añadida configuración de servidos/cliente nfs (9775684)