NFS (del inglés Network File System) es un protocolo de nivel de aplicación, según el modelo OSI, que se utiliza para sistemas de archivos distribuido en un entorno de red de área local. Permite que diferentes sistemas conectadas en una misma red puedan acceder a ficheros remotos como si se trataran de locales. NFS fue desarrollado inicialmente por Sun MicroSystems por allá el año 1984, con el objetivo de que fuera independiente de la maquina, el SO y el protocolo de transporte.
Generalmente encontraremos este protocolo en sistemas operativos UNIX y en la mayoría de distribuciones de GNU/Linux. NFS está compuesto por un servidor y uno o más clientes. Los clientes acceden de forma remota a los datos que se encuentran almacenados en el servidor. Como que los datos se encuentran centralizados en un servidor, los clientes utilizan menos espacio en disco.
Para hacer más ameno esta explicación, vamos hacerlo con dos servidores en Clouding. El primero, que será el servidor de NFS lo llamaremos a partir de ahora S1 y tendrá la IP privada 10.20.10.4. En el servidor que hará de cliente y que por lo tanto montará la carpeta de S1 lo llamaros a partir de ahora S2 y tendrá la IP 10.20.10.5.
Puertos Firewall
El protocolo NFS utiliza los puertos 2049 y 111. Asegúrate de tener ambos puertos abiertos tanto para tráfico TCP como UDP en tu servidor NFS. Tienes más información sobre cómo añadir una norma de firwall a tu servidor en el siguiente artículo.
Instalación en el servidor S1
En S1 lo primero que haremos será instalar el servidor de NFS:
# apt update && apt install nfs-kernel-server
Y creamos el directorio para compartir
# mkdir -p /home/compartido
# chmod 755 /home/compartido
A continuación restringiremos el usuario y grupo como medida de seguridad:
# chown -R nobody:nogroup /home/compartido
Opcionalmente, asígnale permisos de escritura si quieres poder crear archivos/directorios:
# chmod -R a+wrx /home/compartido
Editamos el fichero de configuración /etc/exports:
# nano /etc/exports
Y añadimos:
/home/compartido 10.20.10.0/24(rw,subtree_check,secure,no_root_squash)
El formato del fichero /etc/exports tiene la siguiente estructura:
<export> <host1>(<options>) <hostN>(<options>)...
Donde <export> se refiere al directorio a exportar, <host1> .. <hostN> se corresponde con el host o red que tendrá acceso a la carpeta exportada. Puedes especificar múltples hosts o redes separadas por espacio con sus opciones correspondientes.
Las opciones son variadas, las usadas en el ejemplo, son r de leer y w de escribir. Subtree_check, significa que a parte de compartir el directorio /home/compartido, que comparta las carpetas que hay dentro de la carpeta compartida. Es decir, si existe una carpeta llamada S1 dentro de /home/compartido, también será compartida.
Reiniciamos el servicio:
# /etc/init.d/nfs-kernel-server restart
Y seguimos con el cliente…
Configuración en cliente S2
En S2 simplemente tendremos que montar la carpeta con el comando mount:
# apt install nfs-common # mount -t nfs 10.20.10.4:/home/compartido /mnt
Otra opción, es montarlo automáticamente por /etc/fstab. Editamos el fichero:
# nano /etc/fstab
Para añadir la línea de montaje:
10.20.10.4:/home/compartido /mnt nfs defaults 0 0
Configuración en cliente Windows
Primero deberás instalar el cliente NFS, en Activar o desactivar las características de Windows selecciona dentro de Servicios para NFS, el Cliente para NFS y haz clic en aceptar:
Una vez instalado, abre un CMD con permisos de administrador y ejecuta el comando para montar una unidad de red del directorio compartido por NFS del servidor de archivos:
# mount -o anon \\10.20.10.4\home\compartido Z:
Deberá aparecer el siguiente mensaje:
Z: is now successfully connected to \\10.20.10.4\home\compartido
The command completed successfully.
También puedes verificar el montaje ejecutando simplemente mount:
Local Remote Properties
-------------------------------------------------------------------------------
Z: \\10.20.10.4\home\compartido UID=0, GID=0
rsize=1048576, wsize=1048576
mount=soft, timeout=1.6
retry=1, locking=yes
fileaccess=755, lang=ANSI
casesensitive=no
sec=sys
Esperamos haberte ayudado con este tutorial 🙂. Recuerda, si tienes consultas sobre esta u otra cuestión relacionada con tus servidores en Clouding, no dudes en escribir a soporte@clouding.io ¡Estamos a tu lado para lo que necesites!