GNU/Linux >> Tutoriales Linux >  >> Ubuntu

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 otra con 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 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.10
NFS Clients IPs: From the 192.168.33.0/24 range

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 cortafuegos.

Instalando el servidor NFS #

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

sudo apt updatesudo apt install nfs-kernel-server

Una vez completada 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 el siguiente cat 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 las situaciones.

Creando los sistemas de archivos #

El servidor NFSv4 usa 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, estableceremos 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. El /var/www/ es propiedad del usuario www-data y /opt/backups es propiedad de root .

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

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

Enlace 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 en los reinicios, abra el /etc/fstab archivo:

sudo nano /etc/fstab

y agregue las siguientes líneas:

/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 agregar los sistemas de archivos que se exportarán y los clientes autorizados a acceder a esos recursos compartidos a /etc/exports archivo.

Cada línea de un sistema de archivos exportado tiene el siguiente formato:

export host(options)

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

Abra el /etc/exports archivo y agregue las siguientes líneas:

sudo nano /etc/exports
/etc/exports
/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.20(rw,sync,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 está permitido a los clientes del 192.168.33.0/24 subred. El crossmnt Se requiere la opción 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. Se permite el acceso de lectura a todo el 192.168.33.0/24 rango, y acceso de lectura y escritura solo al 192.168.33.3 Dirección IP. La sync opción le dice a NFS que escriba los 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 man exports en tu terminal.

Guarde el archivo y exporte los recursos compartidos:

sudo exportfs -ar

Debe ejecutar el comando anterior cada vez que modifique /etc/exports expediente. Si hay 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 /etc/exports expediente. Esas son opciones predeterminadas y si desea cambiarlas, deberá configurarlas explícitamente.

/srv/nfs4/backups
		192.168.33.3(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
/srv/nfs4/www 	192.168.33.20(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,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,secure,root_squash,no_all_squash)

En Ubuntu, root_squash está habilitado de forma predeterminada. Esta es una de las opciones más importantes con respecto a la seguridad NFS. Evita que los usuarios raíz conectados desde los clientes tengan privilegios de raíz en los recursos compartidos montados mediante la asignación de raíz UID y GID a nobody /nogroup UID /GID .

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

Eso es todo. 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 del cortafuegos #

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 allow from 192.168.33.0/24 to any port nfs

Verifica el cambio:

sudo ufw status

El resultado debe mostrar que el tráfico en el puerto 2049 está permitido:

To                         Action      From
--                         ------      ----
2049                       ALLOW       192.168.33.0/24           
22/tcp                     ALLOW       Anywhere                  
22/tcp (v6)                ALLOW       Anywhere (v6)  

Configurar los clientes NFS #

Ahora que el servidor NFS está configurado y los recursos compartidos exportados, 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.

Instalando el cliente NFS #

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

  • 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 updatesudo apt install nfs-common
  • Instalar cliente NFS en CentOS y Fedora

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

    sudo yum install nfs-utils

Montar 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 a /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 mount comando:

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

Donde 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 archivo.

Al montar un sistema de archivos NFSv4, omita el directorio raíz de NFS. Usa /backups , en lugar de /srv/nfs4/backups .

Verifique que los sistemas de archivos remotos se hayan montado correctamente mediante el comando mount o df comando:

df -h

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

Filesystem              Size  Used Avail Use% Mounted on
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% /run/lock
tmpfs                   994M     0  994M   0% /sys/fs/cgroup
/dev/sda1               456M  197M  226M  47% /boot
tmpfs                   199M     0  199M   0% /run/user/1000
192.168.33.10:/backups  124G  2.8G  115G   3% /backups
192.168.33.10:/www      124G  2.8G  115G   3% /srv/www

Para hacer que los montajes 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   nfs   defaults,timeo=900,retrans=5,_netdev	0 0
192.168.33.10:/www /srv/www       nfs   defaults,timeo=900,retrans=5,_netdev	0 0

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

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

Probando 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 para /backups directorio usando el touch comando:

sudo touch /backups/test.txt

El /backup el sistema de archivos se exporta como de solo lectura y, como era de esperar, verá un Permission denied mensaje de error:

touch: cannot touch ‘/backups/test’: Permission denied

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

sudo touch /srv/www/test.txt

De nuevo, verá Permission denied mensaje.

touch: cannot touch ‘/srv/www’: Permission denied

Si recuerdas, el /var/www el directorio es propiedad de www-data usuario, y este recurso compartido tiene root_squash conjunto de opciones que asigna el usuario raíz a nobody usuario y nogroup grupo que no tiene permisos de escritura para el recurso compartido remoto.

Asumiendo que tienes un www-data usar 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-data :

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 Apr 10 22:18 .
drwxr-xr-x 3 root     root     4096 Apr 10 22:29 ..
-rw-r--r-- 1 www-data www-data    0 Apr 10 21:58 index.html
-rw-r--r-- 1 www-data www-data    0 Apr 10 22:18 test.txt

Desmontar sistema de archivos NFS #

Si el recurso compartido NFS remoto ya no es necesario, puede desmontarlo como cualquier otro sistema de archivos montado mediante umount comando.

Por ejemplo, para desmontar el /backup compartir, ejecutaría:

sudo umount /backups

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


Ubuntu
  1. Cómo instalar y configurar VNC en Ubuntu 20.04

  2. Cómo configurar un servidor NFS y montar recursos compartidos NFS en Ubuntu 14.10

  3. Cómo instalar y configurar el servidor Algo VPN en Ubuntu 20.04

  4. Cómo instalar y configurar el servidor DHCP en Ubuntu 20.04

  5. Cómo instalar y configurar el servidor Redis en Ubuntu

Cómo instalar y configurar el servidor OpenLDAP en Ubuntu 16.04

Cómo instalar y configurar VNC en Ubuntu Server 20.04

Cómo instalar y configurar Parse Server en Ubuntu 20.04

Cómo instalar y configurar un servidor TeamSpeak en Ubuntu 18.04

Cómo instalar y configurar un servidor de Minecraft en Ubuntu 18.04

Cómo instalar y configurar un servidor Linux Ubuntu NFS