Androide

Cómo instalar y configurar un servidor nfs en centos 8

Como configurar NFS Server en CentOS 7 || Sistemas Operativos III (Tutorial)

Como configurar NFS Server en CentOS 7 || Sistemas Operativos III (Tutorial)

Tabla de contenido:

Anonim

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

El protocolo NFS no está encriptado de manera predeterminada y, a diferencia de Samba, no proporciona autenticación de usuario. El acceso al servidor está restringido por las direcciones IP o nombres de host de los clientes.

En este tutorial, realizará 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

Suponemos 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 las 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 en este ejemplo tienen las siguientes IP:

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

Configurar el servidor NFS

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

Instalar el servidor NFS

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

sudo dnf install nfs-utils

Una vez completada la instalación, habilite e inicie el servicio NFS escribiendo:

sudo systemctl enable --now nfs-server

De forma predeterminada, en CentOS 8 NFS las versiones 3 y 4.x están habilitadas, la versión 2 está deshabilitada. NFSv2 es bastante viejo ahora, y no hay razón para habilitarlo. Para verificarlo, ejecute el siguiente comando 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.

Crear los sistemas de archivos

Al configurar un servidor NFSv4, es una buena práctica utilizar un directorio raíz NFS global y montar los directorios reales en el punto de montaje compartido. En este ejemplo, utilizaremos el director /srv/nfs4 como raíz NFS.

Para explicar mejor cómo se pueden configurar los montajes NFS, vamos a compartir dos directorios ( /var/www y /opt/backups ) con diferentes configuraciones.

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

Cree el sistema de archivos de exportación con el comando mkdir :

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

Montar 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 :

sudo nano /etc/fstab / etc / fstab

/opt/backups /srv/nfs4/backups none bind 0 0 /var/www /srv/nfs4/www none bind 0 0

Exportando los sistemas de archivos

El siguiente paso es definir los sistemas de archivos que exportará el servidor NFS, las opciones de recursos compartidos y los clientes a los que se les permite acceder a esos sistemas de archivos. Para hacerlo, abra el /etc/exports :

sudo nano /etc/exports

Exporte los directorios www y de backups y permita el acceso solo desde clientes en la red 192.168.33.0/24 :

/ etc / exportaciones

/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 NFS /srv/nfs . El acceso a este volumen NFS solo está permitido a los clientes desde la subred 192.168.33.0/24 . La opción crossmnt es necesaria para compartir directorios que son subdirectorios de un directorio exportado.

La segunda línea muestra cómo especificar múltiples reglas de exportación para un sistema de archivos. Exporta el directorio /srv/nfs4/backups y permite solo acceso de lectura a todo el rango 192.168.33.0/24 , y acceso de lectura y escritura a 192.168.33.3 . La opción de sync le dice a NFS que escriba los cambios en el disco antes de responder.

La última línea debe explicarse por sí misma. Para obtener más información sobre todas las opciones disponibles, escriba man exports en su terminal.

Guarde el archivo y exporte los recursos compartidos:

sudo exportfs -ra

Debe ejecutar el comando anterior cada vez que modifique el /etc/exports . Si hay algún error o advertencia, 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 . Esas son opciones predeterminadas, y si desea cambiarlas, deberá establecer esas opciones 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 con respecto a la seguridad NFS. Impide que los usuarios root conectados desde los clientes tengan privilegios root en los recursos compartidos montados. nogroup UID y GID raíz a nobody / nogroup UID / GID .

Para que los usuarios de las máquinas cliente tengan acceso, NFS espera que las ID de usuario y grupo del cliente coincidan con las del servidor. Otra opción es usar la función de asignación de mapas NFSv4 que traduce las identificaciones de usuarios y grupos a nombres y viceversa.

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

Configuración de 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 sudo firewall-cmd --zone=nfs --add-source=192.168.33.0/24 --permanent sudo firewall-cmd --reload

Configurar los clientes NFS

Ahora que el servidor NFS está configurado y los recursos compartidos se exportan, el siguiente paso configura los clientes y monta 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.

Instalar el cliente NFS

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

  • Instalar 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

    Instalar cliente NFS en CentOS y Fedora

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

    sudo yum install nfs-utils

Montaje de sistemas de archivos

Trabajaremos en la máquina cliente con IP 192.168.33.110 , que tiene acceso de lectura y escritura al sistema de archivos /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 que desee.

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 usar el nombre de host en lugar de la dirección IP, pero el equipo 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 NFS, por lo que en lugar de /srv/nfs4/backups debe usar /backups .

Verifique que los sistemas de archivos remotos se monten correctamente utilizando el comando mount o 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

y agregue las siguientes líneas:

/ etc / fstab

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 encontrar más información sobre las opciones disponibles al montar un sistema de archivos NFS, escriba man nfs en su terminal.

Otra opción para montar los sistemas de archivos remotos es usar la herramienta 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 directorio /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, verá un mensaje de error de Permission denied :

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

A continuación, intente crear un archivo de prueba en el directorio /srv/www como raíz utilizando el comando sudo :

sudo touch /srv/www/test.txt

Nuevamente, verá el mensaje Permission denied .

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

El directorio /var/www es propiedad del usuario de apache , y este root_squash compartido tiene root_squash opción root_squash , que asigna el usuario raíz al usuario de nobody y nogroup grupo nogroup que no tiene permisos de escritura para el nogroup compartido remoto.

Suponiendo que exista un apache usuario en la máquina cliente con el mismo UID y GID que en el servidor remoto (que debería ser el caso si, por ejemplo, instaló apache en ambas máquinas), puede probar para crear un archivo como apache usuario con:

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 verificarlo, enumere los archivos en el directorio /srv/www :

ls -la /srv/www

El resultado debe 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

Desmontaje del sistema de archivos NFS

sudo umount /backups

Si el punto de montaje se define en el /etc/fstab , asegúrese de eliminar la línea o coméntelo agregando # al comienzo de la línea.

Conclusión

En este tutorial, le mostramos cómo configurar un servidor NFS y cómo montar los sistemas de archivos remotos en las máquinas cliente. Si está implementando NFS en producción y compartiendo datos sensibles, es una buena idea habilitar la autenticación kerberos.

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

Siéntase libre de dejar un comentario si tiene alguna pregunta.

terminal de montaje centos nfs