Cómo configurar un montaje NFS en Ubuntu 22.04

Introducción

Índice
  1. Introducción
  • Prerrequisitos
  • Paso 1: Descarga e instalación de los componentes
    1. En el anfitrión
    2. En el cliente
  • Paso 2: Creación de directorios compartidos en el host
    1. Ejemplo 1: Exportación de una montura de propósito general
    2. Ejemplo 2: Exportación del directorio de inicio
  • Paso 3: Configuración de las exportaciones NFS en el servidor host
  • Paso 4: Ajuste del firewall en el host
  • Paso 5: Creación de puntos de montaje y montaje de directorios en el cliente
  • Paso 6: Prueba del acceso a NFS
    1. Ejemplo 1: La acción de propósito general
    2. Ejemplo 2: El directorio de inicio compartido
  • Paso 7: montaje de los directorios NFS remotos durante el arranque
  • Paso 8: Desmontaje de un recurso compartido remoto NFS
  • Conclusión
  • NFS, o Network File System, es un protocolo de sistema de archivos distribuido que permite montar directorios remotos en el servidor. Esto permite administrar el espacio de almacenamiento en una ubicación diferente y escribir en ese espacio desde varios clientes. NFS proporciona una forma relativamente estándar y de alto rendimiento de acceder a sistemas remotos a través de una red y funciona bien en situaciones en las que se debe acceder a los recursos compartidos con regularidad.

    En esta guía, aprenderá a instalar el software necesario para la funcionalidad NFS en Ubuntu 22.04, configurar dos montajes NFS en un servidor y un cliente, y montar y desmontar los recursos compartidos remotos.

    Prerrequisitos

    En este tutorial, utilizará dos servidores, uno de los cuales comparte parte de su sistema de archivos con el otro. Para continuar, necesitará:

    • Dos servidores Ubuntu 22.04. Cada uno de ellos debe tener un usuario no root con sudoprivilegios, un firewall configurado con UFW y una red privada, si está disponible.

      • Para obtener ayuda para configurar un usuario no rootsudo con privilegios y un firewall, siga nuestra guía Configuración inicial del servidor con Ubuntu 22.04 .

      • Si utiliza Droplets de DigitalOcean para su servidor y cliente, puede leer más sobre cómo configurar una red privada en nuestra documentación sobre Cómo crear una VPC .

    En este tutorial, el servidor que comparte sus directorios se denominará host y el servidor que monta estos directorios se denominará cliente . Necesitará saber la dirección IP de ambos. Asegúrese de utilizar la dirección de red privada , si está disponible.

    A lo largo de este tutorial, se hará referencia a estas direcciones IP mediante los marcadores de posición host_ipy client_ip. Reemplace según sea necesario.

    Paso 1: Descarga e instalación de los componentes

    Comenzará instalando los componentes necesarios en cada servidor.

    En el anfitrión

    En el servidor hostnfs-kernel-server , instala el paquete que te permitirá compartir tus directorios. Dado que esta es la primera operación que realizarás apten esta sesión, actualiza el índice de paquetes local antes de la instalación:

    1. sudo apt update
    2. sudo apt install nfs-kernel-server

    Una vez instalados estos paquetes, cambie al servidor cliente .

    En el cliente

    En el servidor cliente , debe instalar un paquete llamado nfs-common, que proporciona la funcionalidad NFS sin incluir ningún componente de servidor. Nuevamente, actualice el índice de paquetes local antes de la instalación para asegurarse de tener información actualizada:

    1. sudo apt update
    2. sudo apt install nfs-common

    Ahora que ambos servidores tienen los paquetes necesarios, puedes comenzar a configurarlos.

    Paso 2: Creación de directorios compartidos en el host

    Compartirás dos directorios separados, con diferentes configuraciones, para ilustrar dos formas clave en que se pueden configurar los montajes NFS con respecto al acceso de superusuario.

    Los superusuarios pueden hacer cualquier cosa en cualquier parte de su sistema. Sin embargo, los directorios montados en NFS no forman parte del sistema en el que están montados, por lo que, de forma predeterminada, el servidor NFS se niega a realizar operaciones que requieran privilegios de superusuario. Esta restricción predeterminada significa que los superusuarios del cliente no pueden escribir archivos como root , reasignar la propiedad ni realizar ninguna otra tarea de superusuario en el montaje NFS.

    Sin embargo, a veces hay usuarios de confianza en el sistema cliente que necesitan realizar estas acciones en el sistema de archivos montado pero que no necesitan acceso de superusuario en el host . Puede configurar el servidor NFS para permitir esto, aunque introduce un elemento de riesgo, ya que un usuario así podría obtener acceso de root a todo el sistema host .

    Ejemplo 1: Exportación de una montura de propósito general

    En el primer ejemplo, creará un montaje NFS de propósito general que utiliza el comportamiento NFS predeterminado para dificultar que un usuario con privilegios de raíz en la máquina cliente interactúe con el host utilizando esos privilegios de superusuario del cliente . Puede utilizar algo como esto para almacenar archivos que se cargaron mediante un sistema de administración de contenido o para crear espacio para que los usuarios compartan fácilmente archivos de proyecto.

    Primero, crea el directorio compartido:

    1. sudo mkdir /var/nfs/general -p

    Dado que lo estás creando con sudo, el directorio es propiedad del usuario root del host :

    1. ls -dl /var/nfs/general
    Outputdrwxr-xr-x 2 root root 4096 Apr 17 23:51 /var/nfs/general

    Como medida de seguridad, NFS traducirá cualquier operación de root en el cliente a las nobody:nogroupcredenciales. Por lo tanto, debe cambiar la propiedad del directorio para que coincida con esas credenciales.

    1. sudo chown nobody:nogroup /var/nfs/general
    Outputdrwxr-xr-x 2 nobody nogroup 4096 Apr 17 23:51 /var/nfs/general

    Ahora está listo para exportar este directorio.

    Ejemplo 2: Exportación del directorio de inicio

    En el segundo ejemplo, el objetivo es hacer que los directorios de inicio de los usuarios almacenados en el host estén disponibles en los servidores cliente , y al mismo tiempo permitir a los administradores confiables de esos servidores cliente el acceso que necesitan para administrar cómodamente a los usuarios.

    Para ello, deberá exportar el /homedirectorio. Dado que ya existe, no es necesario crearlo. Tampoco deberá cambiar los permisos. Si lo hiciera , podría generar una serie de problemas para cualquier persona que tenga un directorio de inicio en la máquina host .

    Paso 3: Configuración de las exportaciones NFS en el servidor host

    A continuación, profundizaremos en el archivo de configuración de NFS para configurar el uso compartido de estos recursos.

    En la máquina host , abra el /etc/exportsarchivo en su editor de texto con privilegios de root :

    1. sudo nano /etc/exports

    El archivo contiene comentarios que muestran la estructura general de cada línea de configuración. La sintaxis es la siguiente:

    /etc/exportaciones

    directory_to_share    client(share_option1,...,share_optionN)

    Deberá crear una línea para cada uno de los directorios que planea compartir. Asegúrese de cambiar el client_ipmarcador de posición que se muestra aquí por su dirección IP real:

    /etc/exportaciones

    /var/nfs/general    client_ip(rw,sync,no_subtree_check)/home               client_ip(rw,sync,no_root_squash,no_subtree_check)

    Aquí, estás usando las mismas opciones de configuración para ambos directorios, con la excepción de no_root_squash. Observa qué significa cada una de estas opciones:

    • rw:Esta opción le otorga al equipo cliente acceso de lectura y escritura al volumen.
    • sync: Esta opción obliga a NFS a escribir los cambios en el disco antes de responder. Esto genera un entorno más estable y consistente, ya que la respuesta refleja el estado real del volumen remoto. Sin embargo, también reduce la velocidad de las operaciones con archivos.
    • no_subtree_check: Esta opción evita la comprobación de subárboles, que es un proceso en el que el host debe comprobar si el archivo sigue estando disponible en el árbol exportado para cada solicitud. Esto puede causar muchos problemas cuando se cambia el nombre de un archivo mientras el cliente lo tiene abierto. En casi todos los casos, es mejor desactivar la comprobación de subárboles.
    • no_root_squash:De manera predeterminada, NFS traduce las solicitudes de un usuario root de forma remota a un usuario sin privilegios en el servidor. Esto se pensó como una función de seguridad para evitar que una cuenta root en el cliente use el sistema de archivos del host como root . no_root_squashDeshabilita este comportamiento para ciertos recursos compartidos.

    Cuando haya terminado de realizar los cambios, guarde y cierre el archivo. Luego, para que los recursos compartidos estén disponibles para los clientes que configuró, reinicie el servidor NFS con el siguiente comando:

    1. sudo systemctl restart nfs-kernel-server

    Sin embargo, antes de poder usar los nuevos recursos compartidos, deberá asegurarse de que las reglas del firewall permitan el tráfico hacia ellos.

    Paso 4: Ajuste del firewall en el host

    Primero, verifique el estado del firewall para ver si está habilitado y, si es así, para ver qué está permitido actualmente:

    1. sudo ufw status
    OutputStatus: activeTo                         Action      From--                         ------      ----OpenSSH                    ALLOW       AnywhereOpenSSH (v6)               ALLOW       Anywhere (v6)

    En su sistema solo se permite el tráfico SSH, por lo que deberá agregar una regla para el tráfico NFS.

    Con muchas aplicaciones, puede usarlas sudo ufw app listy habilitarlas por nombre, pero nfsno es una de ellas. Sin embargo, dado que ufwtambién verifica /etc/servicesel puerto y el protocolo de un servicio, aún puede agregar NFS por nombre. La práctica recomendada recomienda que habilite la regla más restrictiva que aún permita el tráfico que desea permitir, por lo que, en lugar de habilitar el tráfico desde cualquier lugar, será específico.

    Utilice el siguiente comando para abrir el puerto 2049en el host , asegurándose de sustituir la dirección IP de su cliente :

    1. sudo ufw allow from client_ip to any port nfs

    Puede verificar el cambio escribiendo:

    1. sudo ufw status

    Debería ver el tráfico permitido desde el puerto 2049en la salida:

    OutputStatus: activeTo                         Action      From--                         ------      ----OpenSSH                    ALLOW       Anywhere                 2049                       ALLOW       203.0.113.24        OpenSSH (v6)               ALLOW       Anywhere (v6)

    Esto confirma que UFW solo permitirá tráfico NFS en el puerto 2049desde su máquina cliente .

    Paso 5: Creación de puntos de montaje y montaje de directorios en el cliente

    Ahora que el servidor host está configurado y brindando sus recursos compartidos, preparará su cliente .

    Para que los recursos compartidos remotos estén disponibles en el cliente , debe montar los directorios en el host que desea compartir en directorios vacíos en el cliente .

    Nota: Si hay archivos y directorios en su punto de montaje, se ocultarán tan pronto como monte el recurso compartido NFS. Para evitar la pérdida de archivos importantes, asegúrese de que, si monta en un directorio que ya existe, el directorio esté vacío.

    Crearás dos directorios para tus montajes:

    1. sudo mkdir -p /nfs/general
    2. sudo mkdir -p /nfs/home

    Ahora que tiene una ubicación para colocar los recursos compartidos remotos y ha abierto el firewall, puede montar los recursos compartidos utilizando la dirección IP de su servidor host :

    1. sudo mount host_ip:/var/nfs/general /nfs/general
    2. sudo mount host_ip:/home /nfs/home

    Estos comandos montarán los recursos compartidos desde la computadora host a la máquina cliente . Puede comprobar que se hayan montado correctamente de varias maneras. Puede comprobarlo con un comando mounto findmnt, pero df -hproporciona un resultado más legible:

    1. df -h
    OutputFilesystem                   Size  Used Avail Use% Mounted ontmpfs                        198M  972K  197M   1% /run/dev/vda1                     50G  3.5G   47G   7% /tmpfs                        989M     0  989M   0% /dev/shmtmpfs                        5.0M     0  5.0M   0% /run/lock/dev/vda15                   105M  5.3M  100M   5% /boot/efitmpfs                        198M  4.0K  198M   1% /run/user/100010.124.0.3:/var/nfs/general   25G  5.9G   19G  24% /nfs/general10.124.0.3:/home              25G  5.9G   19G  24% /nfs/home

    Los dos recursos compartidos que montó aparecen en la parte inferior. Debido a que se montaron desde el mismo sistema de archivos, muestran el mismo uso del disco. Para ver cuánto espacio se está utilizando realmente en cada punto de montaje, utilice el comando disk usage duy la ruta del montaje. El -sindicador proporciona un resumen del uso en lugar de mostrar el uso de cada archivo. -hImprime una salida legible para humanos.

    Por ejemplo:

    1. du -sh /nfs/home
    Output36K    /nfs/home

    Esto nos muestra que el contenido de todo el directorio de inicio está utilizando solo 36K del espacio disponible.

    Paso 6: Prueba del acceso a NFS

    A continuación, prueba el acceso a las acciones escribiendo algo en cada una de ellas.

    Ejemplo 1: La acción de propósito general

    Primero, escribe un archivo de prueba en el /var/nfs/generalrecurso compartido:

    1. sudo touch /nfs/general/general.test

    Luego, verifique su propiedad:

    1. ls -l /nfs/general/general.test
    Output-rw-r--r-- 1 nobody nogroup 0 Apr 18 00:02 /nfs/general/general.test

    Debido a que montó este volumen sin cambiar el comportamiento predeterminado de NFS y creó el archivo como usuario raíz de la máquina cliente a través del comando, la propiedad del archivo es predeterminada por . Los superusuarios del cliente no podrán realizar acciones administrativas típicas, como cambiar el propietario de un archivo o crear un nuevo directorio para un grupo de usuarios, en este recurso compartido montado en NFS.sudonobody:nogroup

    Ejemplo 2: El directorio de inicio compartido

    Para comparar los permisos del recurso compartido de propósito general con el recurso compartido del directorio de inicio, cree un archivo de /nfs/homela misma manera:

    1. sudo touch /nfs/home/home.test

    Luego mira la propiedad del archivo:

    1. ls -l /nfs/home/home.test
    Output-rw-r--r-- 1 root root 0 Apr 18 00:03 /nfs/home/home.test

    Lo creaste home.testcomo root usando el sudocomando, exactamente de la misma manera que creaste el general.testarchivo. Sin embargo, en este caso es propiedad de root porque anulaste el comportamiento predeterminado cuando especificaste la no_root_squashopción en este montaje. Esto permite que tus usuarios root en la máquina cliente actúen como root y hace que la administración de cuentas de usuario sea mucho más conveniente. Al mismo tiempo, significa que no tienes que darles a estos usuarios acceso root en el host .

    Paso 7: montaje de los directorios NFS remotos durante el arranque

    Puede montar los recursos compartidos NFS remotos automáticamente durante el arranque agregándolos al /etc/fstabarchivo en el cliente .

    Abra este archivo con privilegios de root en su editor de texto:

    1. sudo nano /etc/fstab

    En la parte inferior del archivo, agregue una línea para cada uno de sus recursos compartidos. Se verán así:

    /etc/fstab

    . . .host_ip:/var/nfs/general    /nfs/general   nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0host_ip:/home               /nfs/home      nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

    Nota: Puede encontrar más información sobre las opciones que está especificando aquí en la página del manual de NFS. Puede acceder a ella ejecutando el siguiente comando:

    1. man nfs

    El cliente montará automáticamente las particiones remotas durante el arranque, aunque puede llevar unos minutos establecer la conexión y que los recursos compartidos estén disponibles.

    Paso 8: Desmontaje de un recurso compartido remoto NFS

    Si ya no desea que el directorio remoto esté montado en su sistema, puede desmontarlo saliendo de la estructura de directorio del recurso compartido y desmontándolo, de la siguiente manera:

    1. cd ~
    2. sudo umount /nfs/home
    3. sudo umount /nfs/general

    umountTen en cuenta que el comando no tiene el nombre unmountque esperas.

    Esto eliminará los recursos compartidos remotos y dejará solo accesible su almacenamiento local:

    1. df -h
    OutputFilesystem      Size  Used Avail Use% Mounted ontmpfs           198M  972K  197M   1% /run/dev/vda1        50G  3.5G   47G   7% /tmpfs           989M     0  989M   0% /dev/shmtmpfs           5.0M     0  5.0M   0% /run/lock/dev/vda15      105M  5.3M  100M   5% /boot/efitmpfs           198M  4.0K  198M   1% /run/user/1000

    Si también desea evitar que se vuelvan a montar en el próximo reinicio, edite /etc/fstaby elimine la línea o coméntela colocando un #carácter al principio de la línea. También puede evitar el montaje automático eliminando la autoopción, lo que le permitirá seguir montándola manualmente.

    Conclusión

    En este tutorial, creó un host NFS e ilustró algunos comportamientos clave de NFS mediante la creación de dos montajes NFS diferentes, que compartió con un cliente NFS.

    Si desea implementar NFS en producción, es importante tener en cuenta que el protocolo en sí no está cifrado. En los casos en los que comparte a través de una red privada, esto puede no ser un problema. En otros casos, será necesaria una VPN o algún otro tipo de túnel cifrado para proteger sus datos.

    SUSCRÍBETE A NUESTRO BOLETÍN 
    No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

    Deja una respuesta

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

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion