Cómo configurar un montaje NFS en Rocky Linux 8

Cómo configurar un montaje NFS en Rocky Linux 8

Network File System o NFS es un protocolo de sistema de archivos distribuido que permite a los hosts remotos montar sistemas de archivos en una red y realizar operaciones de archivos en ellos como si estuvieran montados localmente. Esto es especialmente √ļtil cuando desea compartir recursos de un servidor con varios clientes o permitir que varios clientes escriban en un √ļnico espacio de almacenamiento.

En este tutorial, aprender√° a instalar y configurar el servidor NFS y los clientes NFS basados ‚Äč‚Äčen Rocky Linux 8. Para ello, configuraremos un host o servidor para compartir archivos y un cliente para acceder a los archivos del host mediante un montaje NFS. .

requisitos previos

  • Dos servidores Rocky Linux 8. Cada uno de estos debe tener un usuario no root con privilegios sudo.
  • Tanto el host como el cliente deben tener una direcci√≥n IP est√°tica. Incluso puede configurar ambos a trav√©s de una red privada. Para nuestro tutorial, usaremos host_ip para indicar la direcci√≥n IP del Host y ip_cliente para referirse a la direcci√≥n IP del Cliente.

Paso 1: instale NFS en el host y el cliente

Anfitrión

Para instalar paquetes NFS, debe instalar el paquete nfs-utils. Proporciona un demonio para el servidor NFS y herramientas relacionadas.

Instale el paquete.

$ sudo dnf install nfs-utils

Habilite e inicie el servicio del servidor nfs. Los servicios restantes necesarios para montar y compartir NFS como nfsd, nfs-idmapd, rpcbind, rpc.mountd, lockd, rpc.statd, rpc.quotad y rpc.idmapd se inician automáticamente junto con él.

$ sudo systemctl enable nfs-server --now

Verifique la versión de la instalación de NFS.

$ sudo cat /proc/fs/nfsd/versions
-2 +3 +4 +4.1 +4.2

Las versiones 3 y 4 de NFS están habilitadas de manera predeterminada y la versión 2 está deshabilitada. NFSv2 es bastante antiguo y está desactualizado y, por lo tanto, puede ver el -ve firmar delante de él.

NFS almacena sus configuraciones en los archivos /etc/nfsmount.conf y /etc/nfs.conf. /etc/nfsmount.conf es para configurar montajes NFS mientras que /etc/nfs.conf es para configurar el demonio NFS y las herramientas asociadas. La configuraci√≥n predeterminada es suficiente para nuestro tutorial y no se requiere ning√ļn cambio.

Cliente

En el cliente, instale los paquetes nfs-utils y nfs4-acl-tools.

$ sudo dnf install nfs-utils nfs4-acl-tools

Paso 2: cree los directorios compartidos en el host

Usaremos dos ejemplos con diferentes ajustes de configuración: uno con un montaje de propósito general y otro compartiendo el directorio de inicio del host.

Los directorios montados en NFS no forman parte del Cliente. Por lo tanto, NFS no puede realizar tareas que requieran privilegios de superusuario. Significa que el cliente no puede cambiar la propiedad, escribir en ellos como usuario raíz o realizar tareas de alto nivel. Sin embargo, hay casos en los que un usuario de confianza en el cliente necesita realizar tales tareas sin requerir acceso de superusuario en el host. El servidor NFS se puede configurar para permitir esto, pero se corre el riesgo de que un cliente pueda acceder al host.

Trabajar con una montura de uso general

Para nuestro primer caso, crearemos un montaje simple que use el comportamiento predeterminado de NFS, lo que significa que el cliente no puede realizar ninguna tarea que requiera privilegios de superusuario.

Cree un directorio compartido.

host:$ sudo mkdir /var/nfs/share -p

El usuario raíz del host será el propietario de este directorio, ya que usamos sudo para crearlo.

host:$ ls -l /var/nfs
total 0
drwxr-xr-x. 2 root root 6 Dec 13 07:30 share

NFS traducirá todas las operaciones raíz en el lado del cliente a las credenciales de nadie: nadie por razones de seguridad. Por lo tanto, debemos emparejarlos en el lado del host.

host:$ sudo chown nobody:nobody /var/nfs/general

Trabajar con el directorio de inicio

Para nuestro segundo caso, haremos que el directorio de inicio en el host est√© disponible para el cliente. No necesitamos crearlo ya que ya existe. No necesitamos cambiar ning√ļn permiso, ya que afectar√≠a a los usuarios en la m√°quina host.

Paso 3: configuración de exportaciones NFS en el host

Abra el archivo /etc/exports en la m√°quina host para editarlo.

host:$ sudo nano /etc/exports

Pegue el siguiente código en el archivo.

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

Cada directorio y su configuración deben estar en una línea separada. Reemplace el valor de client_ip con la dirección IP real de la máquina cliente.

Repasemos todas las opciones para las exportaciones de NFS.

  • rw – otorga a la m√°quina cliente acceso de lectura y escritura en el volumen NFS.
  • sincronizar – esta opci√≥n obliga a NFS a escribir cambios en el disco antes de responder. Esta opci√≥n se considera m√°s confiable. Sin embargo, tambi√©n reduce la velocidad de las operaciones con archivos.
  • no_subtree_check – esta opci√≥n evita la verificaci√≥n de sub√°rboles, un proceso en el que el host debe verificar si el archivo est√° disponible junto con los permisos para cada solicitud. Tambi√©n puede causar problemas cuando se cambia el nombre de un archivo en el host mientras a√ļn est√° abierto en el cliente. Deshabilitarlo mejora la confiabilidad de NFS.
  • no_root_squash – De forma predeterminada, NFS traduce las solicitudes de un usuario ra√≠z en el cliente a un usuario sin privilegios en el host. Esta opci√≥n deshabilita ese comportamiento y debe usarse con cuidado para permitir que el cliente obtenga acceso al host.

Una vez terminado, guarde el archivo presionando Control + X y entrando Y Cuando se le solicite.

Para exportar los recursos compartidos, ejecute el siguiente comando.

host:$ sudo exportfs -arv
exporting client_ip:/home
exporting client_ip:/var/nfs/share
  • -a – esta opci√≥n hace que se exporten todos los directorios.
  • -r – esta opci√≥n hace que todos los directorios se exporten mediante la construcci√≥n de una nueva lista en el directorio /var/lib/nfs/etab. Esta opci√≥n se utiliza para actualizar la lista de exportaci√≥n con cualquier cambio realizado en /etc/exports.
  • -v – habilita la salida detallada.

Para enumerar todos los directorios exportados, ejecute el siguiente comando. Mostrar√° todas las opciones, incluidas las predeterminadas que no se especificaron en el archivo /etc/exports.

host:$ sudo exportfs -s
/var/nfs/share  client_ip(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
/home  client_ip(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)

Paso 4: configuración del cortafuegos en el host

Rocky Linux usa Firewalld Firewall. Compruebe el estado del cortafuegos.

host:$ sudo firewall-cmd --state
running

Esto indica que est√° funcionando correctamente.

El firewall funciona con diferentes zonas, y la zona p√ļblica es la predeterminada que usaremos. Enumere todos los servicios y puertos activos en el firewall.

host:$ sudo firewall-cmd --permanent --list-services

Debería mostrar el siguiente resultado.

cockpit dhcpv6-client ssh

A continuación, debemos permitir el tráfico a los servicios NFS necesarios: mountd, nfs y rpc-bind. También necesitamos permitir el acceso desde la IP del cliente. Si sus clientes y servidores host están en la misma subred, entonces no necesita agregar la dirección IP del cliente.

host:$ sudo firewall-cmd --permanent --add-service=nfs
host:$ sudo firewall-cmd --permanent --add-service=rpc-bind
host:$ sudo firewall-cmd --permanent --add-service=mountd
host:$ sudo firewall-cmd --permanent --add-source=client_IP 

Vuelva a cargar el firewall para aplicar los cambios.

host:$ sudo firewall-cmd --reload

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

Ahora que el servidor/host NFS est√° configurado, el siguiente paso es configurar los puntos de montaje y los directorios en el cliente. Puede ejecutar el comando showmount en el cliente para verificar la lista de sistemas de archivos exportados en el host.

client:$ showmount -e host_ip
Export list for host_ip:
/home          host_ip
/var/nfs/share host_ip

Cree siempre un nuevo directorio como puntos de montaje en el cliente o use un directorio vacío existente. Si hay un archivo en un directorio que monte, se ocultará.

Cree los directorios de montaje.

client:$ sudo mkdir -p /nfs/share
client:$ sudo mkdir -p /nfs/home

Monte los recursos compartidos utilizando la dirección IP del host.

client:$ sudo mount host_ip:/var/nfs/share /nfs/share
client:$ sudo mount host_ip:/home /nfs/home

Verifique que el montaje fue exitoso.

client:$ df -h
Filesystem                 Size  Used Avail Use% Mounted on
devtmpfs                   370M     0  370M   0% /dev
tmpfs                      405M     0  405M   0% /dev/shm
tmpfs                      405M   16M  389M   4% /run
tmpfs                      405M     0  405M   0% /sys/fs/cgroup
/dev/vda1                   25G  2.4G   23G  10% /
tmpfs                       81M     0   81M   0% /run/user/1000
host_ip:/var/nfs/share      25G  2.4G   23G  10% /nfs/share
host_ip:/home               25G  2.4G   23G  10% /nfs/home

Ambos recursos compartidos se montan desde el mismo sistema de archivos. Por lo tanto, muestran el mismo uso de disco.

También puede usar el comando de montaje para verificar.

client:$ mount | grep nfs
rpc_pipefs on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
host_ip:/var/nfs/share on /nfs/share type nfs4 (rw,relatime,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=client_ip,local_lock=none,addr=host_ip)
host_ip:/home on /nfs/home type nfs4 (rw,relatime,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=client_ip,local_lock=none,addr=host_ip)

Paso 6 – Prueba de acceso NFS

Compartición de propósito general de prueba

Escriba un archivo de prueba en /var/nfs/share share.

client:$ sudo touch /nfs/share/test.txt

Comprueba su titularidad.

client:$ ls -l /nfs/share/test.txt
-rw-r--r--. 1 nobody nobody 0 Dec 13 08:08 /nfs/share/test.txt

Dado que montamos este volumen usando la configuración NFS predeterminada y creamos el archivo en el cliente usando sudo, la propiedad del archivo es por defecto nadie: nadie. Los superusuarios del cliente no pueden realizar ninguna tarea administrativa en el recurso compartido.

Testing Inicio Directorio Compartir

Escriba un archivo de prueba en /nfs/home share.

client:$ sudo touch /nfs/home/home.txt

Comprueba su titularidad.

client:$ ls -l /nfs/home/home.txt
-rw-r--r--. 1 root root 0 Dec 13 08:09 /nfs/home/home.txt

Dado que usamos la opción no_root_squash, permitió que el usuario root del cliente actuara como root en el recurso compartido.

Paso 7 – Haz que los puntos de montaje sean permanentes

Los recursos compartidos de NFS por defecto son temporales y deben montarse en el arranque. Podemos hacerlos permanentes editando el archivo /etc/fstab en el cliente.

Abra el archivo /etc/fstab para editarlo.

client:$ sudo nano /etc/fstab

Pegue las siguientes líneas en la parte inferior del archivo.

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

Puede obtener más información sobre las opciones enumeradas anteriormente ejecutando los siguientes comandos.

client:$ man nfs
client:$ man mount

Si desea leerlos en línea, puede buscar en Google la frase man nfs y man mount para obtener más información sobre estas opciones.

Paso 8: desmonte el recurso compartido NFS

Si ya no desea los montajes remotos en su sistema, puede desmontarlos usando el comando umount. Tenga en cuenta que el comando se llama desmontar y no desmontar que es un error com√ļn.

Salga de los montajes compartidos y desmóntelos.

client:$ cd ~
client:$ sudo umount /nfs/share
client:$ sudo umount /nfs/home

Si ya no necesita volver a montar los recursos compartidos al reiniciar, aseg√ļrese de comentar las entradas correspondientes en el archivo /etc/fstab colocando un signo # delante de ellas.

Conclusión

En este tutorial, aprendimos c√≥mo crear un servidor host NFS y montar directorios us√°ndolo, que compartimos con un cliente NFS. Si lo est√° implementando en una red privada, entonces no deber√≠a haber ning√ļn problema, pero si lo est√° usando en producci√≥n, debe recordar que el protocolo no est√° encriptado y debe implementar alguna autenticaci√≥n para proteger sus datos.

Si tiene alguna pregunta, publíquela en los comentarios a continuación.

Deja una respuesta

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