Skip to content
Skip to content
Menu
Info Cafe
Info Cafe

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

By admin on febrero 1, 2021

El sistema de archivos de red (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 los archivos de la máquina remota como si fueran archivos locales.

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

En este tutorial, repasaremos cómo configurar un servidor NFSv4 en Ubuntu 18.04. También le mostraremos cómo montar un sistema de archivos NFS en el cliente.

Requisitos previos #

Este ejemplo asume que usted tiene un servidor que ejecuta Ubuntu 18.04 y otro que ejecuta cualquier otra distribución de Linux. El servidor y los clientes deben ser capaces de comunicarse entre sí a través de una red privada. Si su proveedor de alojamiento no ofrece direcciones IP privadas, puede utilizar las direcciones IP públicas y configurar el cortafuegos del servidor para permitir el tráfico en el puerto 2049 sólo desde fuentes de confianza.

Las máquinas de este ejemplo tienen las siguientes IPs:

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

Configurar el servidor NFS #

Comenzaremos por instalar y configurar el servidor NFS.

Instalar el servidor NFS #

Refresca el índice de paquetes e instala el paquete del servidor NFS:

sudo apt updatesudo apt install nfs-kernel-server

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

Por defecto, en Ubuntu 18.04 la versión 2 de NFS está desactivada. Las versiones 3 y 4 están habilitadas. Puedes comprobarlo ejecutando el siguiente comando cat:

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

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

Las opciones de configuración del servidor NFS se establecen en los archivos /etc/default/nfs-kernel-server y /etc/default/nfs-common. La configuración por defecto es suficiente en nuestro caso.

Creando los sistemas de archivos #

Cuando se configura un servidor NFSv4 es una buena práctica es utilizar un directorio raíz NFS global y enlazar el montaje de los directorios reales al punto de montaje del recurso compartido. En este ejemplo, utilizaremos el director /srv/nfs4 como raíz NFS.

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

El /var/www/ es propiedad del usuario y grupo www-data y /opt/backups es propiedad de root.

Crea el sistema de archivos de exportación utilizando el comando mkdir:

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

Monta los directorios reales:

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

Para que los montajes bind sean permanentes, abre el archivo /etc/fstab:

sudo nano /etc/fstab

y añade 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 ficheros #

El siguiente paso es definir los sistemas de ficheros que serán exportados por el servidor NFS, las opciones de compartición y los clientes que tienen permiso para acceder a esos sistemas de ficheros. Para ello abre el archivo /etc/exports:

sudo nano /etc/exports
El archivo /etc/exports también contiene comentarios que describen cómo exportar un directorio.

En nuestro caso necesitamos exportar los directorios www y backups y permitir el acceso sólo de los clientes de la red 192.168.33.0/24:

/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.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 sólo está permitido a los clientes de la subred 192.168.33.0/24. La opción crossmnt es necesaria para compartir directorios que son subdirectorios de un directorio exportado.

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

La última línea debería explicarse por sí misma. Para más información sobre todas las opciones disponibles escribe man exports en tu terminal.

Guarda el archivo y exporta las acciones:

sudo exportfs -ra

Tienes que ejecutar el comando anterior cada vez que modifiques el archivo /etc/exports. Si hay algún error o advertencia se mostrará en la terminal.

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

sudo exportfs -v

La salida incluirá todas las acciones con sus opciones. Como puedes ver también hay opciones que no hemos definido en el archivo /etc/exports. Esas son las opciones por defecto y si quieres cambiarlas tendrás que configurarlas explícitamente.

/srv/nfs4/backups192.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.110(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/backups192.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á activado por defecto. Esta es una de las opciones más importantes en cuanto a la seguridad de NFS. Evita que los usuarios root conectados desde los clientes tengan privilegios de root en los recursos compartidos montados. Mapeará el root UID y GID a nobodynogroupUIDGID.

Para que los usuarios de los equipos 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 idmapping de NFSv4 que traduce los ID de usuario y grupo a nombres y al revés.

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

Configuración del firewall #

Si ejecuta un firewall en su red, tendrá que añadir una regla que permita el tráfico en el puerto NFS.

Suponiendo que estás usando UFWpara gestionar tu firewall para permitir el acceso desde la 192.168.33.0/24 subred necesitas ejecutar el siguiente comando:

sudo ufw allow from 192.168.33.0/24 to any port nfs

Para verificar el cambio ejecuta:

sudo ufw status

La salida 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 están exportados el siguiente paso es configurar los clientes y montar los sistemas de archivos remotos.

También se pueden montar los recursos compartidos NFS en máquinas macOS y Windows, pero nosotros nos centraremos en los sistemas Linux.

Instalar el cliente NFS #

En las máquinas cliente sólo tenemos que instalar las herramientas necesarias para montar un sistema de archivos NFS remoto.

  • Instalar el cliente NFS en Debian y Ubuntu

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

    sudo apt updatesudo apt install nfs-common
  • Instala el cliente NFS en CentOS y Fedora

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

    sudo yum install nfs-utils
  • Montando 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 sólo lectura al sistema de archivos /srv/nfs4/backups.

    Crea dos nuevos directorios para los puntos de montaje. Puedes crear estos directorios en la ubicación que quieras.

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

Monta los sistemas de archivos exportados con el comando mount:

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 se puede utilizar el nombre de host en lugar de la dirección IP, pero tiene que ser resoluble por la máquina cliente. Esto se suele hacer mapeando el nombre de host a la IP en el archivo /etc/hosts.

Cuando se monta un sistema de archivos NFSv4, hay que omitir el directorio raíz NFS, por lo que en lugar de /srv/nfs4/backups hay que usar /backups.

Verifica que los sistemas de archivos remotos están montados con éxito 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:

Filesystem Size Used Avail Use% Mounted on/dev/mapper/VolGroup00-LogVol00 38G 1.7G 36G 5% /devtmpfs 236M 0 236M 0% /devtmpfs 244M 0 244M 0% /dev/shmtmpfs 244M 4.5M 240M 2% /runtmpfs 244M 0 244M 0% /sys/fs/cgroup/dev/sda2 1014M 87M 928M 9% /boottmpfs 49M 0 49M 0% /run/user/1000192.168.33.10:/backups 9.7G 1.2G 8.5G 13% /backups192.168.33.10:/www 9.7G 1.2G 8.5G 13% /srv/www

Para que los montajes sean permanentes al reiniciar, abre el archivo /etc/fstab:

sudo nano /etc/fstab

y añade las siguientes líneas:

/etc/fstab
192.168.33.10:/backups /backups nfs defaults,timeo=900,retrans=5,_netdev0 0192.168.33.10:/www /srv/www nfs defaults,timeo=900,retrans=5,_netdev0 0

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

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

Probando el acceso a NFS #

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

Primero, intenta crear un archivo de prueba en el directorio /backups utilizando el comando touch:

sudo touch /backups/test.txt

El sistema de archivos /backup se exporta como de sólo lectura y como era de esperar verás un Permission denied mensaje de error:

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

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

sudo touch /srv/www/test.txt

De nuevo, verás el mensaje Permission denied.

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

Si recuerdas el directorio /var/www es propiedad del usuario www-data y este recurso compartido tiene root_squash que asigna el usuario root al usuario nobody y al grupo nogroup que no tiene permisos de escritura en el recurso compartido remoto.

Suponiendo que tienes un www-data uso 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, instalaste nginxen ambas máquinas) puedes probar a crear un archivo como usuario www-data con:

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

El comando no mostrará ninguna salida lo que significa que el archivo se ha creado con éxito.

Para verificarlo lista los archivos en el directorio /srv/www:

ls -la /srv/www

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

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

Desmontaje del sistema de archivos NFS #

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

sudo umount /backups

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

Conclusión #

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

Como alternativa a NFS, puedes usar SSHFSpara montar directorios remotos a través de una conexión SSH. SSHFS está encriptado por defecto y es mucho más fácil de configurar y utilizar.

Navegación de entradas

¿Qué es un período de prueba y cómo funciona?
Máquinas de Estado Finito

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Entradas recientes

  • Firebush (Español)
  • 9 mejores vitaminas y suplementos para perros para mejorar su salud
  • Previsión de tasas de CD para 2021: Las tasas probablemente se mantendrán bajas, pero podrían aumentar más adelante en el año
  • Dolor pélvico crónico y prostatitis: síntomas, diagnóstico y tratamiento
  • Juegos y actividades saludables para niños | UIC Online Informatics
  • Cervezas de trigo (americanas)
  • Los beneficios de la lactancia materna después de un año
  • ¿Es seguro tirar los posos del café por el fregadero?
  • Enfriarse después de hacer ejercicio
  • Nuestro trabajo

Meta

  • Acceder
  • Feed de entradas
  • Feed de comentarios
  • WordPress.org

Archivos

  • marzo 2021
  • febrero 2021
  • enero 2021
  • diciembre 2020
  • DeutschDeutsch
  • NederlandsNederlands
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • PolskiPolski
  • 日本語日本語
©2021 Info Cafe | WordPress Theme by SuperbThemes.com