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 *