Linux

Cómo instalar y configurar un servidor NFS en Ubuntu 20.04

Cómo instalar y configurar un servidor NFS en Ubuntu 20.04

NFS o Network File System es un protocolo de sistema de archivos distribuido que le permite compartir directorios 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.

De forma predeterminada, el protocolo NFS no está cifrado y no proporciona autenticación de usuario. El acceso al servidor está restringido por las direcciones IP o los nombres de host del cliente.

Este artículo explica cómo configurar un servidor NFSv4 en Ubuntu 20.04. También le mostraremos cómo montar un sistema de archivos NFS en la máquina cliente.

Requisitos previos #

Usaremos dos máquinas, una con Ubuntu 20.04, que actuará como un servidor NFS, y otro que ejecute cualquier otra distribución de Linux en la que montaremos el recurso compartido. El servidor y los clientes deben poder comunicarse entre sí a través de una red privada. Puede utilizar direcciones IP públicas y configurar el servidor de seguridad 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:

IP del servidor NFS: 192.168.33.10 direcciones IP de clientes NFS: desde 192.168.33.Rango 0/24 

Configurar el servidor NFS #

El primer paso es configurar el servidor NFS. Instalaremos los paquetes necesarios, crearemos y exportaremos los directorios NFS y configuraremos el firewall.

Instalación del servidor NFS #

El paquete del servidor NFS proporciona el soporte de espacio de usuario necesario para ejecutar el servidor del kernel NFS. Para instalar el paquete, ejecute:

actualización de sudo aptsudo apt install nfs-kernel-server

Una vez que se complete la instalación, los servicios NFS se iniciarán automáticamente.

En Ubuntu 20.04, la versión 2 de NFS está deshabilitada. Las versiones 3 y 4 están habilitadas. Puede verificarlo ejecutando lo siguiente gato comando:

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

NFSv2 es bastante antiguo ahora y no hay razón para habilitarlo.

La configuración del servidor NFS se define en / etc / default / nfs-kernel-server y / etc / default / nfs-common archivos. La configuración predeterminada es suficiente para la mayoría de situaciones.

Creando los sistemas de archivos #

El servidor NFSv4 utiliza un directorio raíz global y los directorios exportados son relativos a este directorio. Puede vincular el punto de montaje compartido a los directorios que desea exportar utilizando montajes de enlace.

En este ejemplo, configuraremos el / srv / nfs4 directorio 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 ajustes de configuración. La / var / www / es propiedad del usuario www-datos, y / opt / backups es propiedad de raíz.

Primero cree el directorio raíz y los puntos de montaje compartidos:

sudo mkdir -p / srv / nfs4 / backupssudo mkdir -p / srv / nfs4 / www

Enlaza el montaje de los directorios a los puntos de montaje compartidos:

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

Para hacer que los montajes de enlace sean permanentes después de reiniciar, abra el / etc / fstab expediente:

sudo nano / etc / fstab

y agregue las siguientes líneas:

/ etc / fstab
/ opt / backups / srv / nfs4 / backups ninguno enlaza 0 0 / var / www / srv / nfs4 / www ninguno enlaza 0 0 

Exportando los sistemas de archivos #

El siguiente paso es agregar los sistemas de archivos que se exportarán y los clientes a los que se les permitirá acceder a esos recursos compartidos al / etc / exportaciones expediente.

Cada línea de un sistema de archivos exportado tiene la siguiente forma:

exportar host (opciones) 

Dónde exportar es el directorio exportado, anfitrión es un nombre de host o una dirección / rango de IP que puede acceder a la exportación, y opciones son las opciones de host.

Abre el / etc / exportaciones archivo y agregue las siguientes líneas:

sudo nano / etc / export
/ 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, sincronización, no_subtree_check) 192.168.33.3 (rw, sincronización, no_subtree_check) / srv / nfs4 / www 192.168.33.20 (rw, sincronización, no_subtree_check) 

La primera línea contiene el fsid = 0 opción, que define el directorio raíz de NFS (/ srv / nfs4). El acceso a este volumen NFS solo se permite a los clientes desde el 192.168.33.0/24 subred. La crossmnt Se requiere la opción 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. Se permite el acceso de lectura a todo 192.168.33.0/24 rango, y acceso de lectura y escritura solo al 192.168.33.3 dirección IP. La sincronizar La opción le dice a NFS que escriba cambios en el disco antes de responder.

La última línea se explica por sí misma. Para obtener más información sobre todas las opciones disponibles, escriba hombre exporta en tu terminal.

Guarde el archivo y exporte los recursos compartidos:

sudo exportfs -ar

Debe ejecutar el comando anterior cada vez que modifique el / etc / exportaciones expediente. Si hay algún error o advertencia, se mostrará 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 / exportaciones expediente. Esas son opciones predeterminadas y si desea cambiarlas, deberá establecer explícitamente esas opciones.

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

En Ubuntu, root_squash está habilitado por defecto. Esta es una de las opciones más importantes con respecto a la seguridad NFS. Evita que los usuarios root conectados desde los clientes tengan privilegios de root en los recursos compartidos montados mediante la asignación de root UID y GID a nadie/nogrupo UID/GID.

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

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

Configuración de firewall #

Si está instalando Jenkins en un servidor Ubuntu remoto que está protegido por un firewall, deberá habilitar el tráfico en el puerto NFS:

sudo ufw permitir desde 192.168.33.0/24 a cualquier puerto nfs

Verifique el cambio:

estado de sudo ufw

La salida debe mostrar que el tráfico en el puerto 2049 esta permitido:

A la acción desde - ------ ---- 2049 PERMITIR 192.168.33.0/24 22 / tcp PERMITIR en cualquier lugar 22 / tcp (v6) PERMITIR en cualquier lugar (v6) 

Configurar los 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.

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

Instalación del cliente NFS #

En las máquinas cliente, necesitamos instalar solo las herramientas necesarias para montar un sistema de archivos NFS remoto.

Montaje de sistemas de archivos #

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

Cree dos nuevos directorios para los puntos de montaje:

sudo mkdir -p / backupssudo mkdir -p / srv / www

Puede crear los directorios en cualquier ubicación que desee.

Monte los sistemas de archivos exportados con el montar mando:

sudo mount -t nfs -o vers = 4 192.168.33.10: / copias de seguridad / copias de seguridadsudo mount -t nfs -o vers = 4 192.168.33.10: / www / srv / www

Dónde 192.168.33.10 es la IP del servidor NFS. También puede usar el nombre de host en lugar de la dirección IP, pero la máquina cliente debe poder resolverlo. Esto generalmente se hace asignando el nombre de host a la IP en el / etc / hosts expediente.

Al montar un sistema de archivos NFSv4, omita el directorio raíz de NFS. Usar / copias de seguridad, en vez de / srv / nfs4 / backups.

Verifique que los sistemas de archivos remotos estén montados correctamente utilizando el montaje o df mando:

df -h

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

Tamaño del sistema de archivos utilizado% de uso disponible montado en udev 951M 0 951M 0% / dev tmpfs 199M 676K 199M 1% / run / dev / sda3 124G 2.8G 115G 3% / tmpfs 994M 0 994M 0% / dev / shm tmpfs 5.0M 0 5.0M 0% / ejecutar / bloquear tmpfs 994M 0 994M 0% / sys / fs / cgroup / dev / sda1 456M 197M 226M 47% / boot tmpfs 199M 0 199M 0% / ejecutar / usuario / 1000192.168.33.10: / copias de seguridad 124G 2.8G 115G 3% / copias de seguridad 192.168.33.10: / www 124G 2.8G 115G 3% / srv / www

Para que las monturas sean permanentes al reiniciar, abra el / etc / fstab archivo y agregue las siguientes líneas:

sudo nano / etc / fstab
/ etc / fstab
192.168.33.10: / backups / backups valores predeterminados de nfs, timeo = 900, retrans = 5, _netdev 0 0192.168.33.10: / www / srv / www nfs predeterminados, timeo = 900, retrans = 5, _netdev 0 0 

Para obtener información sobre las opciones disponibles al montar un sistema de archivos NFS, escriba hombre nfs en tu terminal.

Otra opción para montar sistemas de archivos remotos es usar el autofs herramienta o para 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 / copias de seguridad directorio usando el tocar mando:

sudo touch / backups / test.TXT

La /respaldo El sistema de archivos se exporta como de solo lectura y, como se esperaba, verá un Permiso denegado mensaje de error:

touch: no se puede tocar '/ backups / test': Permiso denegado 

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

sudo touch / srv / www / test.TXT

De nuevo, verás Permiso denegado mensaje.

touch: no se puede tocar '/ srv / www': Permiso denegado 

Si recuerdas, el / var / www el directorio es propiedad del www-datos usuario, y este recurso compartido tiene root_squash conjunto de opciones que asigna el usuario root al nadie usuario y nogrupo grupo que no tiene permisos de escritura en el recurso compartido remoto.

Asumiendo que tienes un www-datos utilizar en la máquina cliente con el mismo UID y GID como en el servidor remoto (que debería ser el caso si, por ejemplo, instaló nginx en ambas máquinas), puede intentar crear un archivo como usuario www-datos:

sudo -u www-data 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 / srv / www directorio:

ls -la / srv / www

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

drwxr-xr-x 3 www-data www-data 4096 10 de abril 22:18 . drwxr-xr-x 3 root root 4096 10 de abril 22: 29… -rw-r - r-- 1 www-data www-data 0 10 de abril 21:58 índice.html -rw-r - r-- 1 www-data www-data 0 10 de abril 22:18 prueba.TXT 

Desmontaje del sistema de archivos NFS #

Si el recurso compartido NFS remoto ya no es necesario, puede desmontarlo como cualquier otro sistema de archivos montado utilizando el desmontar mando.

Por ejemplo, para desmontar el /respaldo compartir, ejecutarías:

sudo umount / backups

Si el punto de montaje se define en el / etc / fstab archivo, asegúrese de eliminar la línea o comentarlo agregando # al principio de la línea.

Conclusión #

Le hemos mostrado 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 comparte 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á cifrado de forma predeterminada y es mucho más fácil de configurar y usar.

No dude en dejar un comentario si tiene alguna pregunta.

Cómo descargar y jugar Sid Meier's Civilization VI en Linux
Introducción al juego Civilization 6 es una versión moderna del concepto clásico introducido en la serie de juegos Age of Empires. La idea era bastant...
Cómo instalar y jugar a Doom en Linux
Introducción a Doom La serie Doom se originó en los años 90 después del lanzamiento del Doom original. Fue un éxito instantáneo y, desde ese momento e...
Vulkan para usuarios de Linux
Con cada nueva generación de tarjetas gráficas, vemos que los desarrolladores de juegos superan los límites de la fidelidad gráfica y se acercan un pa...