Cómo configurar un montaje NFS en Ubuntu 18.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 le permite montar directorios remotos en su servidor. Esto le 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á cómo instalar el software necesario para la funcionalidad NFS en Ubuntu 18.04, configurar montajes NFS en un servidor y cliente, y montar y desmontar los recursos compartidos remotos.

    Prerrequisitos

    En este tutorial, utilizaremos dos servidores, uno de los cuales compartirá parte de su sistema de archivos con el otro. Para completar este tutorial, necesitarás:

    • Dos servidores Ubuntu 18.04. Cada uno de ellos debe tener un usuario no rootsudo con privilegios configurados, 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 18.04 .

      • Si utiliza Droplets de DigitalOcean para su servidor y cliente, lea Cómo crear una VPC para configurar una red privada.

    En este tutorial, nos referiremos al servidor que comparte sus directorios como host y al servidor que monta estos directorios como cliente . Usaremos las siguientes direcciones IP como sustitutos de los valores de host y cliente :

    • Anfitrión: 203.0.113.0
    • Cliente: 203.0.113.24

    Cuando estas direcciones IP aparezcan en comandos y archivos de configuración, reemplácelas con sus respectivas direcciones IP de host y cliente .

    Paso 1: Descarga e instalación de los componentes

    Primero comience 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

    A continuación, instale el paquete:

    1. sudo apt install nfs-kernel-server

    Una vez instalados estos paquetes, cambie al servidor cliente .

    En el cliente

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

    1. sudo apt update

    Luego, instala el paquete:

    1. 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

    Vamos a compartir 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 archivos de proyecto.

    Primero, crea un 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 -la /var/nfs/general
    Outputtotal 8drwxr-xr-x 2 root root 4096 Feb  7 23:21 .drwxr-xr-x 3 root root 4096 Feb  7 23:21 ..

    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

    Ahora está listo para exportar este directorio.

    Ejemplo 2: Exportación del directorio de inicio

    En nuestro 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 diversos 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 NFS para configurar el uso compartido de estos recursos.

    En la máquina anfitriona , abra el /etc/exportsarchivo en su editor de texto preferido con privilegios de root . Aquí usaremos nano:

    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)

    Necesitará crear una línea para cada uno de los directorios que planea compartir. Dado que nuestro cliente de ejemplo tiene una IP de 203.0.113.24, nuestras líneas se verán como las siguientes. Asegúrese de cambiar la dirección IP a la de su cliente :

    /etc/exportaciones

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

    Aquí, usamos las mismas opciones de configuración para ambos directorios, con excepción de no_root_squash. Repasemos 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. Si está utilizando nano, puede hacerlo presionando CTRL + Xthen Yy ENTER. 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 confirmar si está habilitado y, si es así, revise lo que está permitido actualmente:

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

    En nuestro sistema, solo se permite el tráfico SSH, por lo que necesitaremos 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 203.0.113.24 to any port nfs

    Puede verificar el cambio ejecutando lo siguiente:

    1. sudo ufw status

    Debería recibir una lista del 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.

    Crea dos directorios para tus montajes. Ejecuta el siguiente comando para crear el primero:

    1. sudo mkdir -p /nfs/general

    Luego ejecute este comando para crear el segundo::

    1. 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 , que en esta guía es 203.0.113.0:

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

    Estos comandos montarán los recursos compartidos desde el equipo host en la máquina cliente . Puede comprobar que se hayan montado correctamente de varias maneras. Puede comprobarlo con un comando mounto , pero proporciona una salida más legible que ilustra cómo se muestra el uso del disco de forma diferente para los recursos compartidos NFS:findmntdf -h

    1. df -h
    OutputFilesystem Size Used Avail Use% Mounted onudev 480M 0 480M 0% /devtmpfs 99M 5.6M 94M 6% /run/dev/vda1 25G 1.3G 23G 6% /tmpfs 493M 0 493M 0% /dev/shmtmpfs 5.0M 0 5.0M 0% /run/locktmpfs 493M 0 493M 0% /sys/fs/cgroup/dev/vda15 105M 4.4M 100M 5% /boot/efitmpfs 99M 0 99M 0% /run/user/1000203.0.113.0:/var/nfs/general 25G 1.3G 23G 6% /nfs/general203.0.113.0:/home 25G 1.3G 23G 6% /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 verificar cuánto espacio se está utilizando realmente en cada punto de montaje, use 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:

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

    Esto le muestra que el contenido de todo el directorio de inicio utiliza solo 44K 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

    A continuación, verifique su titularidad:

    1. ls -l /nfs/general/general.test
    Output-rw-r--r-- 1 nobody nogroup 0 Feb  7 23:53 /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

    A continuación revise la propiedad del archivo:

    1. ls -l /nfs/home/home.test
    Output-rw-r--r-- 1 root root 0 Feb  7 23:56 /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 el siguiente archivo con privilegios de root en su editor de texto preferido:

    1. sudo nano /etc/fstab

    Al final del archivo, agregue una línea para cada una de sus acciones, como la siguiente:

    /etc/fstab

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

    Nota: Puede encontrar más información sobre las opciones especificadas aquí en la manpágina NFS. Puede acceder a ella ejecutando el siguiente comando:

    1. man nfs

    El servidor 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.

    Primer cambio en el directorio de inicio:

    1. cd ~

    Luego, desmóntalo . Ten en cuenta que el comando no /nfs/hometiene el nombre que esperarías:umountunmount

    1. sudo umount /nfs/home

    A continuación, desmonte /nfs/general:

    1. sudo umount /nfs/general

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

    1. df -h
    OutputFilesystem      Size  Used Avail Use% Mounted onudev            480M     0  480M   0% /devtmpfs            99M  5.5M   94M   6% /run/dev/vda1        25G  1.3G   23G   6% /tmpfs           493M     0  493M   0% /dev/shmtmpfs           5.0M     0  5.0M   0% /run/locktmpfs           493M     0  493M   0% /sys/fs/cgroup/dev/vda15      105M  4.4M  100M   5% /boot/efitmpfs            99M     0   99M   0% /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á montarlo 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 su cliente NFS . Si busca 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 archivos 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. Tenga en cuenta que esto a menudo da como resultado una reducción significativa del rendimiento. Si el rendimiento es un problema, considere usar SSHFS .

    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