--- title: "Cómo configurar un servidor y cliente NFS en Ubuntu 24.04" description: "Instala un servidor NFS en Ubuntu 24.04, exporta un directorio a tu red privada, móntalo desde un cliente y configura el montaje automático con /etc/fstab." category: "Gestión de Almacenamiento" language: es source: https://cubepath.com/es/docs/gestión-de-almacenamiento/configuracion-de-almacenamiento-nfs-servidor-y-cliente updated: 2026-09-25 --- # Cómo configurar un servidor y cliente NFS en Ubuntu 24.04 NFS (Network File System) permite que varios servidores Linux monten un mismo directorio remoto por la red como si fuera un disco local. Es la forma más sencilla de compartir datos de aplicaciones, subidas de usuarios o copias de seguridad entre máquinas de la misma red. En este tutorial configurarás un servidor NFS en Ubuntu 24.04, exportarás un directorio a una red privada, lo montarás desde un cliente y harás que el montaje sobreviva a los reinicios. ## Requisitos previos Para seguir esta guía necesitas: - Dos servidores con Ubuntu 24.04 LTS, por ejemplo dos VPS de CubePath: uno hará de **servidor NFS** y otro de **cliente**. - Un usuario no root con privilegios `sudo` en ambos. - Conectividad entre los dos servidores, idealmente por una red privada. En los ejemplos el servidor tiene la IP `10.0.0.10`, el cliente `10.0.0.20` y la red es `10.0.0.0/24`. Sustitúyelas por las tuyas. - UFW activo en el servidor (si no lo tienes, revisa antes que el acceso SSH esté permitido). > Advertencia: NFS no cifra el tráfico y, en su configuración por defecto, confía en la IP del cliente para autorizar el acceso. No expongas nunca el puerto 2049 a Internet: limita las exportaciones y el cortafuegos a tu red privada o a una VPN. ## Paso 1: Instalar el servidor NFS En el **servidor**, instala el paquete `nfs-kernel-server`, que incluye el servidor NFS del kernel y las utilidades de exportación: ```bash sudo apt update sudo apt install nfs-kernel-server ``` El servicio arranca y queda habilitado automáticamente. Compruébalo: ```bash sudo systemctl status nfs-server ``` ```output ● nfs-server.service - NFS server and services Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; preset: enabled) Active: active (exited) since ... ``` El estado `active (exited)` es normal: el servicio solo configura los hilos del kernel `nfsd`, que son los que atienden las peticiones. ## Paso 2: Crear el directorio compartido Crea el directorio que vas a exportar. `/srv` es la ubicación estándar para datos servidos por la máquina: ```bash sudo mkdir -p /srv/nfs/compartido ``` Por defecto NFS aplica `root_squash`: las operaciones que hace `root` en el cliente se ejecutan en el servidor como el usuario `nobody`. Para que el directorio sea escribible en ese caso, asígnalo a `nobody:nogroup`: ```bash sudo chown nobody:nogroup /srv/nfs/compartido sudo chmod 0775 /srv/nfs/compartido ``` Si el directorio lo van a usar usuarios normales, los permisos se comprueban por **UID y GID numéricos**, no por nombre. El usuario `deploy` con UID 1001 en el cliente solo podrá escribir si en el servidor el directorio pertenece al UID 1001 (o a un grupo con ese GID). Comprueba el UID con `id nombre_usuario` en ambas máquinas y mantenlos iguales. ## Paso 3: Configurar las exportaciones Las exportaciones se definen en `/etc/exports`, una línea por directorio con el formato `directorio cliente(opciones)`. Abre el archivo: ```bash sudo nano /etc/exports ``` Añade al final esta línea para compartir el directorio con toda la red privada: ```text /srv/nfs/compartido 10.0.0.0/24(rw,sync,no_subtree_check) ``` Las opciones significan: | Opción | Efecto | | --- | --- | | `rw` | Permite lectura y escritura. Usa `ro` para solo lectura. | | `sync` | El servidor confirma la escritura solo cuando está en disco. Es más lento que `async`, pero no pierde datos si el servidor se cae. | | `no_subtree_check` | Desactiva la comprobación de subárbol, que da problemas cuando se renombran archivos abiertos. Es el valor recomendado. | `root_squash` está activo por defecto y no hace falta escribirlo. No uses `no_root_squash` salvo que un cliente concreto lo necesite, porque da a su `root` control total sobre los archivos exportados. Para limitar el acceso a un solo cliente, pon su IP en lugar de la red. Varios clientes con opciones distintas van en la misma línea separados por espacios: ```text /srv/nfs/compartido 10.0.0.20(rw,sync,no_subtree_check) 10.0.0.21(ro,sync,no_subtree_check) ``` Guarda el archivo y aplica la configuración sin reiniciar el servicio: ```bash sudo exportfs -ra ``` Comprueba las exportaciones activas y sus opciones efectivas: ```bash sudo exportfs -v ``` ```output /srv/nfs/compartido 10.0.0.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash) ``` Si hay un error de sintaxis en `/etc/exports`, `exportfs -ra` lo muestra con el número de línea. ## Paso 4: Abrir el cortafuegos Los clientes NFSv4 solo necesitan el puerto TCP 2049. Permítelo únicamente desde la red privada: ```bash sudo ufw allow from 10.0.0.0/24 to any port 2049 proto tcp ``` Verifica la regla: ```bash sudo ufw status ``` ```output Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 2049/tcp ALLOW 10.0.0.0/24 ``` ## Paso 5: Instalar el cliente y montar el recurso En el **cliente**, instala `nfs-common`, que aporta el programa `mount.nfs`: ```bash sudo apt update sudo apt install nfs-common ``` Crea el punto de montaje: ```bash sudo mkdir -p /mnt/compartido ``` Monta el directorio remoto. Ubuntu 24.04 negocia automáticamente la versión más alta que soporten ambos extremos (NFS 4.2): ```bash sudo mount -t nfs 10.0.0.10:/srv/nfs/compartido /mnt/compartido ``` Comprueba que está montado y con qué versión: ```bash df -h /mnt/compartido nfsstat -m ``` ```output Filesystem Size Used Avail Use% Mounted on 10.0.0.10:/srv/nfs/compartido 78G 4.1G 74G 6% /mnt/compartido /mnt/compartido from 10.0.0.10:/srv/nfs/compartido Flags: rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.0.0.20,local_lock=none,addr=10.0.0.10 ``` El tamaño que ves es el del disco del servidor, no el del cliente. ## Paso 6: Probar lectura y escritura Crea un archivo desde el cliente como `root`: ```bash sudo touch /mnt/compartido/prueba-cliente.txt ls -l /mnt/compartido ``` ```output -rw-r--r-- 1 nobody nogroup 0 sep 25 10:12 prueba-cliente.txt ``` El propietario es `nobody:nogroup`, lo que confirma que `root_squash` funciona. Si ahora listas `/srv/nfs/compartido` en el **servidor**, verás el mismo archivo. ## Paso 7: Montar el recurso automáticamente al arrancar Para que el montaje persista tras un reinicio, añádelo a `/etc/fstab` en el **cliente**. Primero haz una copia de seguridad del archivo: ```bash sudo cp /etc/fstab /etc/fstab.bak sudo nano /etc/fstab ``` Añade esta línea al final: ```text 10.0.0.10:/srv/nfs/compartido /mnt/compartido nfs defaults,_netdev,nofail 0 0 ``` - `_netdev` indica a systemd que es un sistema de archivos de red y que debe esperar a que la red esté disponible antes de montarlo. - `nofail` evita que el arranque se detenga en modo de emergencia si el servidor NFS no responde. Desmonta el recurso, recarga systemd para que lea el nuevo `fstab` y monta todo lo que contiene: ```bash sudo umount /mnt/compartido sudo systemctl daemon-reload sudo mount -a ``` Si `mount -a` no muestra nada, la entrada es correcta. Confírmalo: ```bash findmnt /mnt/compartido ``` ```output TARGET SOURCE FSTYPE OPTIONS /mnt/compartido 10.0.0.10:/srv/nfs/compartido nfs4 rw,relatime,vers=4.2,... ``` Reinicia el cliente con `sudo reboot` y vuelve a ejecutar `findmnt /mnt/compartido` para comprobar que el montaje se recupera solo. ## Paso 8 (opcional): Ajustar el número de hilos del servidor Con muchos clientes o mucha concurrencia, los hilos `nfsd` por defecto pueden quedarse cortos. En Ubuntu 24.04 se configuran en `/etc/nfs.conf`: ```bash sudo nano /etc/nfs.conf ``` Busca la sección `[nfsd]`, descomenta la línea `threads` y ajusta el valor: ```ini [nfsd] threads=16 ``` Reinicia el servicio y comprueba el valor activo: ```bash sudo systemctl restart nfs-server cat /proc/fs/nfsd/threads ``` ```output 16 ``` ## Solución de problemas **`mount.nfs: access denied by server while mounting`**: la IP del cliente no está incluida en `/etc/exports`, o no ejecutaste `sudo exportfs -ra` tras editarlo. Revisa con `sudo exportfs -v` en el servidor que la red o IP del cliente aparece. **`mount.nfs: Connection timed out`**: el puerto 2049 está bloqueado. Comprueba `sudo ufw status` en el servidor y prueba la conectividad desde el cliente con `nc -zv 10.0.0.10 2049`. **`Permission denied` al escribir**: el directorio del servidor no permite escribir al UID con el que llega la petición. Recuerda que `root` del cliente llega como `nobody`, y que los usuarios normales deben tener el mismo UID en cliente y servidor. **`Stale file handle`**: el directorio exportado se borró o se recreó en el servidor mientras estaba montado. Desmonta con `sudo umount -l /mnt/compartido` y vuelve a montar. **El arranque tarda o se queda esperando**: la entrada de `fstab` no tiene `_netdev,nofail`. Añádelas para que un servidor NFS caído no bloquee el cliente. ## Conclusión Ya tienes un servidor NFS en Ubuntu 24.04 exportando un directorio solo a tu red privada, y un cliente que lo monta automáticamente al arrancar. A partir de aquí puedes añadir más clientes repitiendo los pasos 5 a 7, exportar directorios de solo lectura con `ro` para contenido estático, o programar copias de seguridad del directorio exportado directamente en el servidor, donde los datos viven realmente.