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:
Asimismo, para la creación de máquinas virtuales, se recomienda la descarga de Oracle VM VirtualBox desde la siguiente dirección:
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