Tutorial NFS - Network File System

Compartir una carpeta en la red con Ubuntu Server 22.04 y NFS

¿Qué es NFS?

NFS (Network File System) es un protocolo y un servicio que le permite a un sistema compartir archivos y directorios con otros sistemas a través de una red. Funciona mediante la habilitación de accesos remotos a archivos en un servidor desde clientes mediante puntos de montaje, permitiendo a los usuarios y programas acceder a esos archivos como si estuvieran almacenados localmente. NFS facilita el intercambio de datos entre diferentes sistemas en una red, proporcionando un método eficiente para acceder y compartir archivos en entornos distribuidos

Paso #1 - Instalación de Ubuntu Server 22.04

Ubuntu Server es una variante del sistema operativo Ubuntu diseñada específicamente para su uso en servidores, ofreciendo estabilidad, seguridad y un conjunto de herramientas orientadas a la administración de servidores. Proporciona una plataforma robusta y versátil para alojar aplicaciones, servicios y sitios web, ofreciendo actualizaciones regulares de seguridad, soporte a largo plazo en algunas versiones y acceso a repositorios extensos de software para servidores.

En esta sección, se explica el proceso de instalación de Ubuntu Server (omita este paso si ya tiene experiencia instalando Ubuntu Server). Para aquellos que deseen llevar a cabo la instalación, el primer paso es la descarga de la imagen ISO de Ubuntu Server desde la siguiente dirección:

https://ubuntu.com/server.

Asimismo, para la creación de máquinas virtuales, se recomienda la descarga de Oracle VM VirtualBox desde la siguiente dirección:

https://www.virtualbox.org/.

Estos pasos constituyen el inicio del proceso de instalación y configuración de Ubuntu Server.

Paso #2 - Instalación y configuración de NFS

Si omitió el paso anterior, recuerde que a partir de este punto estamos utilizando una máquina virtual Ubuntu Server 22.04 para ejecutar las instrucciones presentadas.

En este ejercicio, emplearemos un total de tres máquinas virtuales. La primera actuará como servidor NFS, mientras que las otras dos desempeñarán el papel de clientes NFS. Es importante señalar que, aunque en este caso se usan tres máquinas con sistema operativo Ubuntu Server, también es factible utilizar máquinas con Ubuntu Desktop.

En el video tutorial, los pasos presentados marcan el proceso de instalación y configuración de un servidor NFS en Ubuntu Server, así como la configuración de dos clientes NFS, ambos también utilizando Ubuntu Server.

Paso #3 - Resumen de la instalación y configuración del servidor y cliente NFS

Configuración del Servidor NFS

Aquí un breve resumen para la instalación de un servidor NFS en Ubuntu. En una terminal en Ubuntu Server, instale el servidor NFS ejecutando los siguientes comandos:

sudo apt-get update
sudo apt-get install nfs-kernel-server

Cree un directorio nuevo para compartir y abra el archivo /etc/exports con un editor de texto como nano:

sudo mkdir /var/nfs/shared_folder -p
ls -la /var/nfs/shared_folder
sudo nano /etc/exports

Añade la línea que especifica el directorio a compartir y las restricciones de acceso. Esto permite acceso de lectura y escritura a todos los clientes en la red.

/var/nfs/shared_folder *(rw,sync,no_subtree_check)

(rw,sync,no_subtree_check) son opciones de configuración para los permisos de acceso y la sincronización del sistema de archivos. Estos valores pueden variar dependiendo de sus necesidades específicas.

rw: Esta opción indica que los clientes tienen permisos de lectura y escritura en el sistema de archivos compartido.

sync: Esta opción especifica que los cambios en los archivos son escritos de manera síncrona y confirmados por el servidor antes de considerar la operación como completada. Asegura que los datos se escriban físicamente en el disco antes de confirmar la operación al cliente. Aunque esto proporciona mayor seguridad de los datos, puede ralentizar el rendimiento en comparación con el modo asincrónico (async).

no_subtree_check: Esta opción desactiva la verificación de árbol subordinado. Cuando un cliente accede a un directorio en un recurso compartido, NFS verifica si tiene permisos para acceder a todos los directorios padres. Desactivar esta verificación puede mejorar el rendimiento al evitar esta comprobación, pero se debe tener cuidado ya que puede permitir acceso a directorios que normalmente no se accederían.

El asterisco (*) indica cualquier origen de conexión. Si es de su preferencia y por seguridad, puede especificar el segmento de red autorizado o incluso los hosts específicos.

/var/nfs/shared_folder    192.168.1.0/24(rw,sync,no_subtree_check)

Ajuste los permisos del directorio compartido. La instrucción sudo chown nobody:nogroup /var/nfs/shared_folder cambia la propiedad del directorio /var/nfs/shared_folder para que coincida con las credenciales de "nobody" y "nogroup". Esto se hace para asegurarse de que, cuando se realicen operaciones desde un cliente con privilegios de root en ese directorio, NFS actúe de acuerdo con las políticas de seguridad y use las credenciales restringidas "nobody:nogroup".

Básicamente, al cambiar la propiedad del directorio a "nobody:nogroup", se busca que las operaciones realizadas con privilegios de root desde el cliente sean tratadas de manera segura por NFS, utilizando credenciales limitadas para evitar posibles riesgos de seguridad.

sudo chown nobody:nogroup /var/nfs/shared_folder

Después de modificar el archivo /etc/exports, es necesario reinicia el servicio NFS para aplicar los cambios:

sudo exportfs -a
sudo systemctl restart nfs-kernel-server

(Opcional) Si tiene el firewall de Ubuntu Server habilitado, asegúrese de permitir el tráfico NFS. Por ejemplo, para UFW:

sudo ufw status
sudo ufw allow from [dirección_IP_del_cliente] to any port nfs
sudo ufw reload

sudo ufw status
sudo ufw allow from 192.168.1.0/24 to any port nfs
sudo ufw status

Reemplace [dirección_IP_del_cliente] con la dirección IP del cliente o el segmento de red que necesita acceder al servidor NFS.

Configuración del Cliente NFS

Finalmente, para acceder a los archivos compartidos desde el cliente (Otra máquina Linux). En el cliente (otro sistema en la red), monta el recurso compartido NFS en un directorio local. Para esto instale el cliente NFS:

sudo apt update
sudo apt install nfs-common

Cree un directorio local, donde mapeara el directorio compartido:

mkdir /home/ubuntu/remote_folder

El archivo /etc/fstab es un archivo de configuración que contiene información sobre los sistemas de archivos y cómo deben montarse al iniciar el sistema. Incluye detalles como la ubicación de los sistemas de archivos, los puntos de montaje y las opciones de montaje. Edite el archivo:

sudo nano /etc/fstab

y agregue la siguiente información:

[server_nfs_ip]:/var/nfs/shared_folder    /home/ubuntu/remote_folder   nfs defaults 0 0

Reemplace el campo [server_nfs_ip] por la dirección IP del servidor NFS configurado previamente.

defaults: Esto indica al sistema que utilice las opciones predeterminadas para el montaje del sistema de archivos NFS. Estas opciones incluyen cosas como el uso de cache, permisos por defecto, etc. Básicamente, se refiere a una serie de configuraciones predefinidas que se aplican al montar este sistema de archivos.

0 0: Estos dos valores corresponden a opciones de copia de seguridad del sistema de archivos. El primer valor 0 se refiere a la copia de seguridad del sistema de archivos (dump), y el segundo valor 0 se refiere al orden en que se realiza la comprobación del sistema de archivos (fsck) al inicio del sistema. En este caso, 0 0 indica que no se realizará copia de seguridad ni se realizará comprobación del sistema de archivos al inicio.

Cuando ejecuta el comando mount -a, el sistema lee el archivo /etc/fstab y monta todos los sistemas de archivos que están listados en él y que no están actualmente montados.

mount -a

Referencias

Did you find this article valuable?

Support Jesse Padilla by becoming a sponsor. Any amount is appreciated!