NFS en Linux permite compartir archivos y directorios entre varios equipos conectados a una misma red. Gracias a este protocolo, un servidor puede ofrecer una carpeta compartida para que otros sistemas Linux la monten y utilicen como si estuviera almacenada localmente. En esta guía aprenderás a instalar, configurar y montar un recurso NFS, además de gestionar permisos y establecer un montaje automático.
En la práctica, NFS se usa mucho en redes internas, laboratorios, servidores domésticos, entornos de virtualización, clústeres pequeños y sistemas donde varios equipos Linux necesitan acceder a los mismos datos. No está pensado como una solución universal para cualquier escenario, pero cuando encaja, suele ser rápido, estable y fácil de automatizar.
La idea central es esta:
- El servidor NFS exporta uno o varios directorios.
- El cliente NFS monta esos directorios remotos.
- Los usuarios y procesos del cliente trabajan con los archivos como si estuvieran en una ruta local.
Por ejemplo, un servidor puede compartir /srv/nfs/proyectos y un cliente puede montarlo en /mnt/proyectos. Desde el punto de vista del usuario del cliente, esa carpeta se abre, se lee y se escribe como cualquier otra.
👉 Y recuerda, si quieres aprender más de Linux, pincha en este curso de Linux gratis
👉 También te dejo por aquí una guía de comandos Linux por categorías
Qué problema resuelve NFS
Imagina que tienes varios equipos Linux y quieres que todos accedan a una misma carpeta de trabajo. Podrías copiar archivos manualmente, usar scp, sincronizar con rsync o montar una solución más compleja. NFS evita buena parte de esa fricción: centraliza los archivos en un servidor y permite que los clientes accedan a ellos por red.
Esto es útil para:
- Compartir carpetas de proyectos entre estaciones Linux.
- Tener un repositorio común para máquinas virtuales o contenedores.
- Centralizar datos de usuarios en una red interna.
- Compartir almacenamiento entre servidores de una misma infraestructura.
- Montar una carpeta común en varios equipos sin copiar archivos.
NFS en Linux no es una herramienta de sincronización. Los datos no se duplican automáticamente entre máquinas. Lo que hace es exponer un sistema de archivos remoto para que otros equipos lo monten.
Conceptos básicos de NFS
En NFS conviene separar tres conceptos:
- Servidor NFS: es la máquina que tiene físicamente el directorio que se va a compartir. En ella se instala el servicio NFS y se define qué carpetas se exportan.
- Cliente NFS: es la máquina que accede al recurso remoto. En ella se instala el soporte de cliente y se monta el directorio compartido.
- Exportación: es una regla que indica qué directorio se comparte, qué clientes pueden acceder y con qué opciones. En Linux, estas reglas suelen definirse en /etc/exports.
Una exportación básica puede decir: «comparte /srv/nfs/datos con el cliente 192.168.1.50, permitiendo lectura y escritura». Otra puede ser más restrictiva: «comparte esta carpeta con toda la subred, pero solo en modo lectura».
NFS no es lo mismo que Samba ni SSHFS
NFS en Linux suele compararse con Samba y SSHFS, pero cada uno tiene un enfoque distinto.
- Samba implementa el protocolo SMB/CIFS, muy común en redes Windows. Es la opción natural cuando necesitas compartir archivos entre Linux, Windows y macOS con buena integración de escritorio.
- SSHFS monta carpetas remotas sobre SSH. Es cómodo, simple y seguro para accesos puntuales, especialmente por Internet o cuando ya tienes acceso SSH. Su rendimiento puede ser menor para cargas intensivas y no suele ser la mejor opción para almacenamiento compartido permanente.
- NFS brilla cuando los clientes son Linux o Unix, están en una red confiable y se necesita un montaje estable, automatizable y con buen rendimiento. Para un servidor doméstico Linux, un laboratorio o una red interna de servidores, NFS suele ser una elección excelente.
NFSv3 y NFSv4: diferencias básicas
Hoy lo habitual es usar NFSv4 siempre que sea posible, pero todavía conviene entender la diferencia con NFSv3.
NFSv3 es más antiguo y depende de varios servicios auxiliares, como rpcbind y distintos puertos dinámicos. Puede funcionar muy bien, pero suele ser más incómodo de filtrar con firewall porque intervienen más componentes.
NFSv4 simplifica bastante el modelo. Usa normalmente el puerto TCP 2049, mejora la gestión de estados, integra mejor ciertos aspectos de seguridad y organiza las exportaciones bajo una raíz común. En redes modernas, NFSv4 suele ser la opción recomendada.
Una regla práctica:
- Usa NFSv4 para instalaciones nuevas.
- Usa NFSv3 si tienes clientes antiguos o una compatibilidad concreta que lo exige.
- Si tienes firewall estricto, NFSv4 suele ser más fácil de administrar.
Preparar el servidor NFS
El primer paso es instalar los paquetes necesarios en el servidor. En distribuciones basadas en Debian o Ubuntu:
sudo apt update
sudo apt install nfs-kernel-serverEn distribuciones basadas en RHEL, Rocky Linux, AlmaLinux o Fedora:
sudo dnf install nfs-utilsDespués se crea el directorio que se va a compartir. Un lugar habitual para exportaciones NFS es /srv/nfs, aunque puedes usar otra ruta si tu sistema ya tiene una estructura definida.
sudo mkdir -p /srv/nfs/compartidoAhora conviene decidir quién será el propietario y qué permisos tendrá. Para una prueba sencilla, se puede empezar con una carpeta escribible por un usuario concreto:
sudo chown -R usuario:usuario /srv/nfs/compartido
sudo chmod 775 /srv/nfs/compartidoEn un entorno real, no conviene abrir permisos a ciegas. NFS respeta permisos Unix, así que usuarios, grupos, UID, GID y modos de archivo importan mucho.
Configurar /etc/exports
El archivo principal del servidor es /etc/exports. Ahí se definen las carpetas exportadas y los clientes autorizados.
Un ejemplo básico para permitir acceso de lectura y escritura a un cliente concreto:
/srv/nfs/compartido 192.168.1.50(rw,sync,no_subtree_check)También puedes permitir acceso a una subred completa:
/srv/nfs/compartido 192.168.1.0/24(rw,sync,no_subtree_check)Las opciones más comunes son:
- rw: permite lectura y escritura.
- ro: permite solo lectura.
- sync: confirma las escrituras de forma más segura.
- async: puede mejorar rendimiento, pero aumenta el riesgo ante cortes o fallos.
- no_subtree_check: evita ciertas comprobaciones que suelen causar problemas cuando se exportan subdirectorios.
- root_squash: convierte accesos del usuario root remoto en un usuario sin privilegios.
- no_root_squash: permite que root remoto actúe como root en la exportación; es peligroso y debe evitarse salvo casos muy controlados.
Una configuración prudente para una red interna podría ser:
/srv/nfs/compartido 192.168.1.0/24(rw,sync,no_subtree_check,root_squash)Después de editar /etc/exports, hay que aplicar los cambios:
sudo exportfs -raPara ver qué exportaciones están activas:
sudo exportfs -vServicios systemd del servidor
En sistemas modernos, NFS se gestiona con systemd. Tras instalar y configurar, activa el servicio:
sudo systemctl enable --now nfs-serverComprueba el estado:
systemctl status nfs-serverEn algunas distribuciones el nombre puede variar ligeramente, pero nfs-server es el nombre habitual en muchas instalaciones actuales.
Si haces cambios en /etc/exports, normalmente basta con:
sudo exportfs -raSi el servicio no responde o has tocado configuración más profunda, puedes reiniciarlo:
sudo systemctl restart nfs-serverConfigurar el firewall
El firewall es una de las causas más comunes de problemas con NFS. Para NFSv4, el puerto principal es TCP 2049.
Con UFW en Ubuntu:
sudo ufw allow from 192.168.1.0/24 to any port nfsO de forma explícita:
sudo ufw allow from 192.168.1.0/24 to any port 2049 proto tcpCon firewalld:
sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --reloadSi usas NFSv3, puede que también necesites abrir servicios relacionados con RPC, lo que complica algo más la configuración. Por eso, si no tienes una razón concreta para usar NFSv3, NFSv4 suele ser más cómodo.
Preparar el cliente NFS
En el cliente se instala el soporte necesario para montar recursos NFS.
En Debian o Ubuntu:
sudo apt update<br>sudo apt install nfs-commonEn RHEL, Rocky Linux, AlmaLinux o Fedora:
sudo dnf install nfs-utilsLuego se crea el punto de montaje:
sudo mkdir -p /mnt/compartidoUn punto de montaje es simplemente una carpeta local donde aparecerá el contenido remoto.
Montaje manual
Para montar manualmente una exportación NFS:
sudo mount -t nfs 192.168.1.10:/srv/nfs/compartido /mnt/compartidoEn este ejemplo:
- 192.168.1.10 es la IP del servidor NFS.
- /srv/nfs/compartido es el directorio exportado.
- /mnt/compartido es la ruta local del cliente.
Para comprobar que está montado:
mount | grep nfs
df -hTambién puedes probar creando un archivo:
touch /mnt/compartido/prueba.txtSi falla por permisos, no significa necesariamente que NFS esté mal montado. Puede que el usuario del cliente no tenga permisos reales en el servidor.
Para desmontar:
sudo umount /mnt/compartidoMontaje automático con /etc/fstab
Si quieres que el recurso se monte al arrancar el cliente, añade una entrada en /etc/fstab.
Ejemplo básico:
192.168.1.10:/srv/nfs/compartido /mnt/compartido nfs defaults,_netdev 0 0La opción _netdev indica que se trata de un recurso de red, lo que ayuda a evitar intentos de montaje antes de que la red esté disponible.
Para probar la entrada sin reiniciar:
sudo mount -aSi no aparece ningún error, comprueba el montaje:
df -hEn equipos portátiles o redes que no siempre están disponibles, puede convenir usar opciones como nofail para que el arranque no se bloquee si el servidor NFS no está accesible:
192.168.1.10:/srv/nfs/compartido /mnt/compartido nfs defaults,_netdev,nofail 0 0Permisos sobre NFS
NFS no «traduce» usuarios por nombre de forma mágica. En muchos escenarios, lo que importa realmente son los UID y GID.
Si en el servidor el usuario ana tiene UID 1000 y en el cliente el usuario carlos también tiene UID 1000, el sistema puede tratar los accesos como si fueran del mismo propietario, aunque los nombres no coincidan. Esto puede sorprender mucho.
Para ver el UID y GID de un usuario:
id usuarioPara evitar problemas en redes pequeñas, intenta que los usuarios compartan los mismos UID y GID en servidor y clientes, o usa un sistema centralizado de identidad si el entorno es más serio.
También debes revisar permisos Unix normales:
ls -ld /srv/nfs/compartido
ls -l /srv/nfs/compartidoSi el cliente puede montar pero no escribir, revisa:
- Que la exportación tenga rw.
- Que el sistema de archivos del servidor no esté montado en solo lectura.
- Que el usuario tenga permisos de escritura en la carpeta.
- Que root_squash no esté afectando a una prueba hecha como root desde el cliente.
root_squash es importante: por seguridad, evita que el root del cliente sea root real sobre los archivos exportados. Esto es bueno. Si haces pruebas como root en el cliente y no puedes escribir, puede que el comportamiento sea exactamente el esperado.
Seguridad básica en NFS
NFS en Linux debe tratarse como una herramienta para redes confiables. No es buena idea exponer NFS directamente a Internet.
Buenas prácticas:
- Limita las exportaciones a IPs o subredes concretas.
- Usa firewall para permitir solo clientes conocidos.
- Prefiere NFSv4 en instalaciones nuevas.
- Mantén root_squash activado salvo que sepas muy bien por qué necesitas lo contrario.
- No exportes directorios sensibles como /, /etc o /home completo sin una razón sólida.
- Usa permisos de archivos y grupos con cuidado.
- Considera VPN si necesitas acceder desde fuera de la red local.
En entornos avanzados, NFS puede integrarse con Kerberos para autenticación más fuerte, pero eso añade complejidad. Para muchas redes internas pequeñas, una combinación de firewall, subred limitada, permisos correctos y NFSv4 es suficiente.
Rendimiento y opciones de montaje
NFS suele rendir bien en redes locales, pero el rendimiento depende de la red, el almacenamiento del servidor, el tipo de carga y las opciones de montaje.
Algunas ideas prácticas:
- Usa red cableada si vas a mover muchos datos.
- Evita Wi-Fi para cargas pesadas o montajes críticos.
- Usa sync si priorizas integridad.
- Considera async solo si entiendes el riesgo.
- Revisa latencia y pérdida de paquetes.
- No esperes el mismo comportamiento que un disco local para muchas operaciones pequeñas.
Puedes especificar versión de NFS al montar:
sudo mount -t nfs -o vers=4 192.168.1.10:/srv/nfs/compartido /mnt/compartidoY también en /etc/fstab:
192.168.1.10:/srv/nfs/compartido /mnt/compartido nfs defaults,_netdev,vers=4 0 0Para cargas muy concretas se pueden ajustar opciones como tamaño de lectura y escritura, pero en sistemas actuales los valores por defecto suelen ser razonables. Antes de tocar demasiado, mide el problema.
Cuándo elegir NFS
| Característica | NFS | Samba | SSHFS |
|---|---|---|---|
| Mejor para | Servidores Linux/Unix | Redes con Windows | Acceso remoto rápido |
| Sistemas compatibles | Principalmente Linux y Unix | Windows, Linux y macOS | Cualquier sistema con SSHFS |
| Tipo de red recomendado | Red local interna y confiable | Red local mixta | Internet o conexiones remotas |
| Rendimiento | Alto en redes locales | Bueno | Más limitado |
| Montajes persistentes | Sí, ideal para ello | Sí | Posible, pero menos recomendable |
| Gestión de permisos | Permisos y usuarios Unix | Usuarios, grupos y permisos de Samba | Permisos gestionados mediante SSH |
| Configuración | Sencilla en entornos Linux | Algo más compleja | Muy sencilla si ya existe SSH |
| Uso habitual | Compartir almacenamiento entre servidores | Compartir carpetas con equipos Windows | Montar una carpeta remota puntualmente |
| Elígelo cuando… | Busques rendimiento, estabilidad y montajes permanentes entre sistemas Linux | Tengas clientes Windows o una red con diferentes sistemas operativos | Necesites acceso rápido y sencillo sin instalar un servicio adicional |
Elección rápida
| Situación | Solución recomendada |
|---|---|
| Servidores Linux en una red local | NFS |
| Equipos Windows, Linux y macOS | Samba |
| Acceso puntual mediante Internet | SSHFS |
| Prioridad en el rendimiento | NFS |
| Prioridad en la compatibilidad | Samba |
| Prioridad en la simplicidad | SSHFS |
Conclusión
Configurar NFS en Linux es una solución sencilla y eficiente para compartir almacenamiento entre servidores y equipos de una red interna. Una vez definidos los directorios exportados, los permisos y los clientes autorizados, podrás acceder a los archivos remotos de forma transparente.
Para usarlo bien, hay que entender tres piezas: la exportación en el servidor, el montaje en el cliente y los permisos Linux que gobiernan el acceso real. Con NFSv4, firewall limitado, root_squash, permisos correctos y montajes bien definidos en /etc/fstab, se obtiene una base limpia para compartir almacenamiento sin complicaciones innecesarias.
Si tu red es principalmente Linux y necesitas una carpeta compartida estable, NFS suele ser una de las mejores herramientas para empezar.
