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.