Cómo instalar y configurar un servidor NFS en CentOS 8 Linux

1 mar 2021 8 min di lettura
Cómo instalar y configurar un servidor NFS en CentOS 8 Linux
Indice dei contenuti

Introducción

Network File System (NFS) es un protocolo de sistema de archivos distribuido que permite compartir directorios remotos a través de una red. Con NFS, puede montar directorios remotos en su sistema y trabajar con archivos en la computadora remota como si fueran archivos locales.

El protocolo NFS no está cifrado de forma predeterminada y, a diferencia de Samba, no proporciona autenticación de usuario. El acceso al servidor está restringido por direcciones IP de cliente o nombres de host.

En este tutorial, seguirá los pasos necesarios para configurar un servidor NFSv4 en CentOS 8. También le mostraremos cómo montar un sistema de archivos NFS en el cliente.

Prerrequisitos

Digamos que tiene un servidor que ejecuta CentOS 8 en el que configuraremos el servidor NFS y otras máquinas que actuarán como clientes NFS. El servidor y los clientes deben poder comunicarse entre sí a través de una red privada. Si su proveedor de alojamiento no ofrece direcciones IP privadas, puede usar direcciones IP públicas y configurar el firewall del servidor para permitir el tráfico en el puerto 2049 solo de fuentes confiables.

Las máquinas de este ejemplo tienen las siguientes direcciones IP:

NFS Server IP: 192.168.33.148
 NFS Clients IPs: From the 192.168.33.0/24 range

Si desea instalar el servidor NFS en un servidor remoto, continúe leyendo; de lo contrario, omita el primer párrafo "Conexión al servidor" y lea el siguiente.

Conexión al servidor

Para acceder al servidor, necesita conocer la dirección IP. También necesitará su nombre de usuario y contraseña para la autenticación. Para conectarse al servidor como root, escriba el siguiente comando:

ssh root@IP_DEL_SERVER

A continuación, deberá ingresar la contraseña del usuario root.

Si no usa el usuario root, puede iniciar sesión con otro nombre de usuario usando el mismo comando, luego cambie root a su nombre de usuario:

ssh nome_utente@IP_DEL_SERVER

Luego se le pedirá que ingrese su contraseña de usuario.

El puerto estándar para conectarse a través de ssh es 22, si su servidor usa un puerto diferente, deberá especificarlo usando el parámetro -p, luego escriba el siguiente comando:

ssh nome_utente@IP_DEL_SERVER -p PORTA

Configurar el servidor NFS

Esta sección explica cómo instalar los paquetes necesarios, crear y exportar directorios NFS y configurar el firewall.

Instale el servidor NFS

El paquete "nfs-utils" proporciona utilidades y demonios NFS para el servidor NFS. Para instalarlo, ejecute el siguiente comando:

sudo dnf install nfs-utils

Una vez que se complete la instalación, habilite e inicie el servicio NFS escribiendo:

sudo systemctl enable --now nfs-server

De forma predeterminada, las versiones 3 y 4.x están habilitadas en CentOS 8 NFS, la versión 2 está deshabilitada. NFSv2 es bastante antiguo y no hay razón para habilitarlo. Para verificar esto, ejecute el siguiente cat

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

Las opciones de configuración del servidor NFS se establecen en los archivos /etc/nfsmount.conf y /etc/nfs.conf La configuración predeterminada es suficiente para nuestro tutorial.

Crea los sistemas de archivos

Al configurar un servidor NFSv4, es una buena idea utilizar un directorio raíz NFS global y asignar el montaje del directorio real al punto de montaje del recurso compartido. En este ejemplo, usaremos el director /srv/nfs4 como raíz de NFS.

Para explicar mejor cómo se pueden configurar los montajes NFS, compartiremos dos directorios ( /var/www y /opt/backups ) con diferentes ajustes de configuración.

/var/www/ es propiedad del usuario y el grupo apache /opt/backups es propiedad de root.

Cree el sistema de archivos de exportación usando el comando mkdir

sudo mkdir -p /srv/nfs4/{backups,www}

Monte los directorios reales:

sudo mount --bind /opt/backups /srv/nfs4/backups
sudo mount --bind /var/www /srv/nfs4/www

Para que los montajes de enlace sean permanentes, agregue las siguientes entradas al /etc/fstab.

En este tutorial usamos nano, si lo prefiere puede usar vi instalado por defecto en la mayoría de las distribuciones.

sudo dnf install nano
sudo nano /etc/fstab
/opt/backups /srv/nfs4/backups none bind 0 0
 /var/www /srv/nfs4/www none bind 0 0

Exportar los sistemas de archivos

El siguiente paso es definir los sistemas de archivos que se exportarán desde el servidor NFS, las opciones de uso compartido y los clientes que pueden acceder a esos sistemas de archivos. Para hacer esto, abra el /etc/exports:

sudo nano /etc/exports

Exporte los www y backups y permita el acceso solo desde el cliente de red 192.168.33.0/24:

/srv/nfs4 192.168.33.0/24(rw,sync,no_subtree_check,crossmnt,fsid=0)
 /srv/nfs4/backups 192.168.33.0/24(ro,sync,no_subtree_check) 192.168.33.3(rw,sync,no_subtree_check)
 /srv/nfs4/www 192.168.33.110(rw,sync,no_subtree_check)

La primera línea contiene fsid=0 que define el directorio raíz de /srv/nfs El acceso a este volumen NFS solo está permitido a los clientes de la subred 192.168.33.0/24 La crossmnt es necesaria para compartir directorios que son subdirectorios de un directorio exportado.

La segunda línea muestra cómo especificar varias reglas de exportación para un sistema de archivos. Exporte el /srv/nfs4/backups y solo permita el acceso de lectura dentro del rango 192.168.33.0/24 y acceso de lectura y escritura a 192.168.33.3. La sync permite que NFS escriba cambios en el disco antes de responder.

La última línea debería ser autoexplicativa. Para obtener más información sobre todas las opciones disponibles, escriba man exports en la terminal.

Guarde el archivo y exporte los recursos compartidos:

sudo exportfs -ra

Debe ejecutar el comando anterior cada vez que cambie el /etc/exports. En caso de errores o advertencias, se mostrarán en el terminal.

Para ver las exportaciones activas actuales y su estado, use:

sudo exportfs -v

La salida incluirá todas las acciones con sus opciones. Como puede ver, también hay opciones que no hemos definido en el /etc/exports. Estas son opciones predeterminadas y si desea cambiarlas, debe configurarlas explícitamente.

/srv/nfs4/backups
 192.168.33.3(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
 /srv/nfs4/www 192.168.33.110(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
 /srv/nfs4 192.168.33.0/24(sync,wdelay,hide,crossmnt,no_subtree_check,fsid=0,sec=sys,rw,secure,root_squash,no_all_squash)
 /srv/nfs4/backups
 192.168.33.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)

root_squash es una de las opciones más importantes cuando se trata de seguridad NFS. Evita que los usuarios root que hayan iniciado sesión desde los clientes tengan privilegios de root en recursos compartidos montados. Se trazará un mapa de raíz UID y GID a nobody /nogroup UID /GID.

Para que los usuarios de los equipos cliente tengan acceso, NFS espera que los ID de grupo y de usuario del cliente coincidan con los del servidor. Otra opción es utilizar la función idmapping de NFSv4 que traduce los ID de usuario y grupo en nombres y viceversa.

Eso es todo. En este punto, ha configurado un servidor NFS en su servidor CentOS. Ahora puede ir al siguiente paso y configurar los clientes y conectarse al servidor NFS.

Configurar el firewall

FirewallD es la solución de firewall predeterminada en Centos 8.

El servicio NFS incluye reglas predefinidas para permitir el acceso al servidor NFS.

Los siguientes comandos permitirán permanentemente el acceso desde la subred 192.168.33.0/24

sudo firewall-cmd --new-zone=nfs --permanent
sudo firewall-cmd --zone=nfs --add-service=nfs --permanent
sudo firewall-cmd --zone=nfs --add-source=192.168.33.0/24 --permanent
sudo firewall-cmd --reload

Configurar clientes NFS

Ahora que el servidor NFS está configurado y los recursos compartidos se exportan, el siguiente paso es configurar los clientes y montar los sistemas de archivos remotos.

También puede montar el recurso compartido NFS en máquinas macOS y Windows, pero nos centraremos en los sistemas Linux.

Instale el cliente NFS

En las máquinas cliente, instale las herramientas necesarias para montar sistemas de archivos NFS remotos.

Instale el cliente NFS en Debian y Ubuntu

El nombre del paquete que incluye programas para montar sistemas de archivos NFS en distribuciones basadas en Debian es nfs-common. Para instalarlo, ejecute:

sudo apt update
sudo apt install nfs-common

Instale el cliente NFS en CentOS y Fedora

En Red Hat y sus derivados, instale el paquete nfs-utils

sudo yum install nfs-utils

Monte los sistemas de archivos

Trabajaremos en la computadora cliente con IP 192.168.33.110, que tiene acceso de lectura y escritura al /srv/nfs4/www y acceso de solo lectura al sistema de archivos /srv/nfs4/backups.

Cree dos nuevos directorios para los puntos de montaje. Puede crear estos directorios en cualquier ubicación deseada.

sudo mkdir -p /backups
sudo mkdir -p /srv/www

Monte los sistemas de archivos exportados con el comando mount

sudo mount -t nfs -o vers=4 192.168.33.148:/backups /backups
sudo mount -t nfs -o vers=4 192.168.33.148:/www /srv/www

Donde 192.168.33.148 es la IP del servidor NFS. También puede utilizar el nombre de host en lugar de la dirección IP, pero la computadora cliente debe poder resolverlo. Esto generalmente se hace asignando el nombre de host a la IP en el /etc/hosts.

Al montar un sistema de archivos NFSv4, debe omitir el directorio raíz de NFS, por lo que en lugar de usar /srv/nfs4/backups, use /backups.

Verifique que los sistemas de archivos remotos estén montados correctamente usando mount o el comando df

df -h

El comando imprimirá todos los sistemas de archivos montados. Las dos últimas líneas son los recursos compartidos montados:

...
 192.168.33.148:/backups 9.7G 1.2G 8.5G 13% /backups
 192.168.33.148:/www 9.7G 1.2G 8.5G 13% /srv/www

Para hacer que los montajes sean permanentes al reiniciar, abra el /etc/fstab:

sudo nano /etc/fstab

Agrega las siguientes líneas:

192.168.33.148:/backups /backups nfs defaults,timeo=900,retrans=5,_netdev 0 0
 192.168.33.148:/www /srv/www nfs defaults,timeo=900,retrans=5,_netdev 0 0

Para obtener más información sobre las opciones disponibles al montar un sistema de archivos NFS, escriba man nfs en la terminal.

Otra opción para montar sistemas de archivos remotos es usar la autofs o crear una unidad systemd.

Prueba de acceso NFS

Probemos el acceso a los recursos compartidos creando un nuevo archivo en cada uno de ellos.

Primero, intente crear un archivo de prueba en el /backups usando el comando touch

sudo touch /backups/test.txt

El sistema de archivos /backup se exporta como de solo lectura y, como se esperaba, se mostrará un mensaje de error de Permission denied

touch: cannot touch '/backups/test': Permission denied

Luego, intente crear un archivo de prueba en el /srv/www como root usando el comando sudo

sudo touch /srv/www/test.txt

Nuevamente, verá un mensaje de Permission denied

touch: cannot touch '/srv/www': Permission denied

El /var/www es propiedad del apache, y este root_squash compartido tiene la opción root_squash configurada, que asigna al usuario root al usuario nobody y al nogroup, que no tiene permisos de escritura, al recurso compartido remoto.

Suponiendo que hay un apache en la computadora cliente con el mismo UID y GID en el servidor remoto (que debería ser el caso si, por ejemplo, tiene Apache instalado en ambas computadoras), puede intentar crear un archivo como usuario de apache con el siguiente comando:

sudo -u apache touch /srv/www/test.txt

El comando no mostrará ningún resultado, lo que significa que el archivo se creó correctamente.

Para verificar esto, enumere los archivos en el /srv/www con el comando ls:

ls -la /srv/www

La salida debería mostrar el archivo recién creado:

drwxr-xr-x 3 apache apache 4096 Jun 23 22:18.
 drwxr-xr-x 3 root root 4096 Jun 23 22:29..
 -rw-r--r-- 1 apache apache 0 Jun 23 21:58 index.html
 -rw-r--r-- 1 apache apache 0 Jun 23 22:18 test.txt

Desmontar el sistema de archivos NFS

Si ya no necesita el recurso compartido NFS remoto, puede desmontarlo como cualquier otro sistema de archivos montado usando el comando umount. Por ejemplo, para desmontar el recurso /backup, ejecutaría:

sudo umount /backups

Si el punto de montaje está definido en el /etc/fstab, asegúrese de eliminar la línea o comentarla agregando # al principio de la línea.

Conclusión

En este tutorial, le mostramos cómo configurar un servidor NFS y cómo montar sistemas de archivos remotos en computadoras cliente. Si está implementando NFS en producción y comparte datos confidenciales, es una buena idea habilitar la autenticación Kerberos.

Como alternativa a NFS, SSHFS se puede utilizar para montar directorios remotos a través de una conexión SSH. SSHFS está encriptado de forma predeterminada y es mucho más fácil de configurar y usar.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.