Cómo compartir archivos con NFS en Linux

Cómo compartir archivos con NFS en Linux

En el mundo del software libre, el Network File System (NFS) destaca como una poderosa herramienta para compartir archivos entre sistemas Unix y Linux en una red (aunque también se pueden compartir en otros Sistemas de Ventanas). Este protocolo facilita el acceso remoto a archivos y directorios, permitiendo la colaboración y administración centralizada de recursos.

Compartir datos por NFS

En este artículo, te enseñaré qué es NFS y cómo configurar un servidor y un cliente NFS en Linux para compartir archivos de manera efectiva.

Si te quieres sentir más cómodo usando Linux, puedes hacer mi curso gratuito para aprender Linux desde cero y empieza a dar tus primeros pasos.

¿Qué es NFS?

El Network File System, o NFS, es un protocolo de sistema de archivos distribuido que permite a los usuarios de una red acceder y compartir archivos y directorios como si estuvieran almacenados localmente en sus propios sistemas.

NFS es una tecnología ampliamente utilizada en entornos empresariales y de servidor debido a su eficiencia y facilidad de implementación.

Ventajas de usar NFS

Los principales beneficios de usar el sistema distribuido de archivos por NFS son:

  • Centralización de archivos: NFS facilita la centralización de archivos en un servidor, lo que simplifica la administración y la copia de seguridad.
  • Acceso remoto: Los usuarios pueden acceder a archivos y directorios desde cualquier lugar de la red, lo que facilita la colaboración y el intercambio de recursos.
  • Rendimiento optimizado: NFS está diseñado para ofrecer un rendimiento rápido y eficiente, lo que lo hace ideal para entornos de alto tráfico.

Cómo configurar un servidor NFS en Linux

Configurar un servidor NFS en Linux es un proceso relativamente sencillo que implica sólo dos pasos, que son los siguientes:

  • Instalación del servidor NFS: Primero, asegúrate de tener instalado el paquete nfs-kernel-server en tu sistema. Puedes instalarlo usando el gestor de paquetes de tu distribución, por ejemplo, en sistemas basados en Debian/Ubuntu, puedes usar el comando
sudo apt install nfs-kernel-server
  • Configuración de exportación: El siguiente paso es configurar los directorios que deseas compartir a través de NFS. Edita el archivo /etc/exports y agrega las rutas de los directorios que deseas compartir, junto con las opciones de configuración adecuadas. Por ejemplo:
/ruta/compartida cliente_ip(opciones)

Donde /ruta/compartida es la ruta del directorio que deseas compartir y cliente_ip es la dirección IP del cliente al que deseas permitir el acceso.

  • Resumen de las opciones: Las opciones de permisos en el archivo /etc/exports son fundamentales para controlar quién tiene acceso y qué tipo de acceso se les concede a los archivos y directorios compartidos a través de NFS. Aquí hay una explicación más detallada de algunas de las opciones comunes de permisos en este archivo:
  1. ro (read-only): Esta opción indica que los clientes solo pueden acceder a los archivos compartidos en modo de solo lectura. Es útil cuando deseas permitir que los usuarios remotos accedan a los archivos, pero no quieres que realicen modificaciones en ellos. Por ejemplo:
  1. rw (read-write): Esta opción permite a los clientes acceder a los archivos compartidos en modo de lectura y escritura. Los clientes pueden leer, escribir, crear y eliminar archivos en el directorio compartido. Por ejemplo:
  1. sync y async: Estas opciones controlan cómo se manejan las operaciones de escritura en los archivos compartidos. sync garantiza que las escrituras se sincronicen inmediatamente en el servidor, lo que significa que los cambios en los archivos se escriben en el disco de manera inmediata. Por otro lado, async permite que las escrituras se realicen de manera asíncrona, lo que puede mejorar el rendimiento, pero existe el riesgo de pérdida de datos en caso de un corte de energía repentino o un fallo del sistema. Por ejemplo:
  1. no_root_squash y root_squash: Estas opciones controlan cómo se manejan los privilegios de root en los clientes remotos. Por defecto, NFS reduce los privilegios de root en los clientes remotos para evitar posibles abusos. no_root_squash desactiva esta función, lo que significa que el usuario root en el cliente tendrá los mismos privilegios que el usuario root en el servidor. root_squash, por otro lado, cambia los privilegios de root en el cliente remoto a un usuario sin privilegios, como nobody o nfsnobody, para proteger el sistema de posibles ataques.

Un ejemplo de opciones podría ser:

/ruta/compartida cliente_ip(rw,async,no_root_squash)

Estas son solo algunas de las opciones más comunes que puedes utilizar en el archivo /etc/exports para controlar el acceso y los permisos en un servidor NFS en Linux. Es importante entender estas opciones y cómo se aplican para asegurar un acceso seguro y eficiente a los recursos compartidos a través de NFS.

  • Reiniciar el servicio NFS: Después de configurar los directorios exportados, reinicia el servicio NFS para aplicar los cambios. Puedes hacerlo con el comando
sudo systemctl restart nfs-kernel-server
  • Configuración del firewall: Si estás utilizando un firewall en tu servidor (por ejemplo ufw o iptables), asegúrate de abrir los puertos necesarios para el tráfico NFS. Por lo general, los puertos 2049, 111 y 20048 deben estar abiertos para el tráfico NFS.

Configuración de un cliente NFS en Linux

Configurar un cliente NFS en Linux es igualmente fácil. Sigue estos pasos:

  • Instalación del cliente NFS: Asegúrate de tener instalado el paquete nfs-common en tu sistema cliente. Puedes instalarlo utilizando el gestor de paquetes de tu distribución.
sudo apt install nfs-common
  • Montaje del directorio compartido: Utiliza el comando mount para montar el directorio compartido desde el servidor NFS en el cliente. Por ejemplo:
sudo mount -t nfs servidor_ip:/ruta/compartida /punto_de_montaje

Donde servidor_ip es la dirección IP del servidor NFS, /ruta/compartida es la ruta del directorio que deseas montar y /punto_de_montaje es la ubicación en el sistema de archivos local donde deseas que se monte el directorio compartido.

  • Verificación del montaje: Una vez que hayas montado el directorio compartido, verifica que puedes acceder a los archivos y directorios correctamente desde el cliente. Puedes usar estos comandos para revisar los montajes de NFS desde el cliente.
sudo df -h 
sudo mount | grep nfs

Configuración automática del montaje NFS

Si deseas que el directorio compartido se monte automáticamente cada vez que se inicie el cliente, puedes agregar una entrada correspondiente en el archivo /etc/fstab.

Una entrada en el archivo /etc/fstab para montar un directorio compartido a través de NFS generalmente sigue el siguiente formato:

servidor_ip:/ruta/compartida /punto_de_montaje nfs opciones 0 0

Donde:

  • servidor_ip: Es la dirección IP del servidor NFS.
  • /ruta/compartida: Es la ruta del directorio que deseas montar desde el servidor.
  • /punto_de_montaje: Es la ubicación en el sistema de archivos local donde deseas que se monte el directorio compartido.
  • nfs: Es el tipo de sistema de archivos, en este caso, NFS.
  • opciones: Son las opciones adicionales que deseas especificar para el montaje. Por ejemplo, opciones de montaje como ro para solo lectura, rw para lectura y escritura, noauto para no montar automáticamente en el arranque, etc.
  • Los dos últimos campos 0 0 se utilizan para especificar opciones de respaldo y son opcionales en el caso de montaje NFS.

Aquí hay un ejemplo de cómo sería una entrada en el archivo /etc/fstab para montar un directorio compartido a través de NFS:

192.168.1.100:/home/compartido /mnt/compartido nfs rw,noauto 0 0

Esta entrada montaría el directorio compartido /home/compartido del servidor con la dirección IP 192.168.1.100 en el punto de montaje /mnt/compartido en el sistema de archivos local del cliente. La opción rw indica que el montaje será de lectura y escritura, mientras que noauto especifica que el montaje no se realizará automáticamente durante el arranque del sistema.

Con estos pasos, has configurado con éxito un cliente NFS en tu sistema Linux, y ahora puedes acceder y compartir archivos con el servidor NFS.

Utiliza NFS con cuidado

El Network File System (NFS) es una herramienta invaluable para compartir archivos en entornos de red basados en Linux. Con la configuración adecuada, un servidor NFS puede centralizar archivos y simplificar la colaboración entre usuarios, mientras que un cliente NFS permite acceder de manera transparente a estos recursos compartidos.

Eso si, no todo es de color de rosa. Los peligros de usar NFS incluyen la posibilidad de exposición a ataques de seguridad si no se configura adecuadamente, así como el riesgo de pérdida de datos en caso de interrupciones de red o fallos del sistema debido a la sincronización asincrónica de escrituras. Es crucial implementar medidas de seguridad y gestionar adecuadamente las opciones de configuración para mitigar estos riesgos.

Espero que esta guía te proporcione una comprensión clara de qué es NFS y cómo configurar un servidor y un cliente NFS en Linux. De esta forma te será más fácil aprovechar al máximo esta poderosa tecnología de archivos distribuidos.

¡Ahora es tu turno de comenzar a compartir archivos de manera eficiente con NFS!

Deja una respuesta

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