NFS en Linux: cómo compartir archivos en red paso a paso

nfs-en-linux
nfs-en-linux

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-server

En distribuciones basadas en RHEL, Rocky Linux, AlmaLinux o Fedora:

sudo dnf install nfs-utils

Despué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/compartido

Ahora 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/compartido

En 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 -ra

Para ver qué exportaciones están activas:

sudo exportfs -v

Servicios systemd del servidor

En sistemas modernos, NFS se gestiona con systemd. Tras instalar y configurar, activa el servicio:

sudo systemctl enable --now nfs-server

Comprueba el estado:

systemctl status nfs-server

En 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 -ra

Si el servicio no responde o has tocado configuración más profunda, puedes reiniciarlo:

sudo systemctl restart nfs-server

Configurar 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 nfs

O de forma explícita:

sudo ufw allow from 192.168.1.0/24 to any port 2049 proto tcp

Con firewalld:

sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --reload

Si 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-common

En RHEL, Rocky Linux, AlmaLinux o Fedora:

sudo dnf install nfs-utils

Luego se crea el punto de montaje:

sudo mkdir -p /mnt/compartido

Un 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/compartido

En 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 -h

También puedes probar creando un archivo:

touch /mnt/compartido/prueba.txt

Si 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/compartido

Montaje 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 0

La 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 -a

Si no aparece ningún error, comprueba el montaje:

df -h

En 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 0

Permisos 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 usuario

Para 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/compartido

Si 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/compartido

Y también en /etc/fstab:

192.168.1.10:/srv/nfs/compartido /mnt/compartido nfs defaults,_netdev,vers=4 0 0

Para 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ísticaNFSSambaSSHFS
Mejor paraServidores Linux/UnixRedes con WindowsAcceso remoto rápido
Sistemas compatiblesPrincipalmente Linux y UnixWindows, Linux y macOSCualquier sistema con SSHFS
Tipo de red recomendadoRed local interna y confiableRed local mixtaInternet o conexiones remotas
RendimientoAlto en redes localesBuenoMás limitado
Montajes persistentesSí, ideal para elloPosible, pero menos recomendable
Gestión de permisosPermisos y usuarios UnixUsuarios, grupos y permisos de SambaPermisos gestionados mediante SSH
ConfiguraciónSencilla en entornos LinuxAlgo más complejaMuy sencilla si ya existe SSH
Uso habitualCompartir almacenamiento entre servidoresCompartir carpetas con equipos WindowsMontar una carpeta remota puntualmente
Elígelo cuando…Busques rendimiento, estabilidad y montajes permanentes entre sistemas LinuxTengas clientes Windows o una red con diferentes sistemas operativosNecesites acceso rápido y sencillo sin instalar un servicio adicional

Elección rápida

SituaciónSolución recomendada
Servidores Linux en una red localNFS
Equipos Windows, Linux y macOSSamba
Acceso puntual mediante InternetSSHFS
Prioridad en el rendimientoNFS
Prioridad en la compatibilidadSamba
Prioridad en la simplicidadSSHFS

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.

Comentarios

No hay comentarios aún. ¿Por qué no comienzas el debate?

Deja una respuesta

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