nfs
El servicio de NFS es un servicio de red que nos permite compartir archivos entre distintos equipos. Este funciona de forma similar a una carpeta compartida en Windows. Esta pensado para funcionar como servidor o cliente. El servidor comparte una carpeta con uno o más clientes y los clientes acceden a los archivos de la carpeta ( montando las carpetas en su sistema de ficheros ).
Esta guía se parte por un lado en la configuración de un servidor NFS y por otro en la configuración de un cliente NFS.
Servidor
Instalación de los requisitos
Para funcionar NFS sobre el servidor debemos instalar los siguientes paquetes:
apt install nfs-kernel-server nfs-common
Con esto ya podemos para a la configuración.
Preparando la carpeta a compartir
Primero tenemos que crear la carpeta que vamos a compartir (en el caso de que ya la tengas puedes omitir este paso):
mkdir <carpeta_compartida>
Luego tenemos que asignar un propietario especial a esta carpeta.
Este usuario nobody
y grupo nogroup
se utilizan para que los clientes remotos puedan acceder a los archivos de la carpeta compartida.
chown nobody:nogroup <carpeta_compartida>
Configurando el servidor
Para configurar el servidor NFS, debemos modificar el archivo de configuración /etc/exports
. Al final del fichero de configuración debemos añadir la siguiente línea:
/ruta/carpeta/compartida <origenes permitidos>(<opciones>)
# Ejemplo, los orígenes son todos los clientes, especificado con *.
/home/usuario/carpeta_compartida *(rw,sync,no_subtree_check,no_root_squash)
# Podíamos especificar múltiples clientes con distintas opciones por cada uno de ellos
/ruta/carpeta/compartida 192.168.1.56(rw,sync) 192.168.1.68(rw,sync)
Podemos especificar los origenes permitidos al servidor de las siguientes maneras:
- Host único: podríamos especificar una IP o un nombre de host único como origen y repetir las opciones por cada uno de ellos.
- Redes de IPs: Podríamos especificar rangos de IPs especificando la IP con máscara de red. Ejemplo,
192.168.1.0/24
permitiría todas las IPs de la red desde192.168.1.0
hasta192.168.1.255
. - Comodines: Podríamos usar
*
para indicar que todos los clientes están permitidos y tambien se puede combinar con nombres de dominios. Por ejemplo,*.example.com
permitiría todos los clientes que tengan con subdominio deexample.com
. - Grupos de red: Se podría definir un grupo de equipos de red especificándolo de la siguiente manera
@grupo_de_red
.
Veamos las diferentes opciones que podemos configurar por cada origen o grupo de orígenes:
- Permisos de lectura:
rw
para lectura y escritura yro
para solo lectura. - Opciones de sincronización:
sync
para sincronizar los archivos yasync
para no sincronizar los archivos. - Opciones de compartición:
no_subtree_check
para que no se compruebe el subdirectorio yno_root_squash
para que no se comparta el root.
Una vez configuradas las carpetas a compartir tendríamos que reiniciar el servicio para que se aplique la nueva configuración.
systemctl restart nfs-kernel-server
Permitir conexiones remotas en el firewall
Para permitir conexiones remotas en el firewall debemos permitir conexiones al puerto 2049
y 111
que utiliza el servicio NFS. Con ufw
en ubuntu se puede hacer de la siguiente manera:
# Permitir orígenes específicos en el firewall
ufw allow from <origen> to any port nfs
# Permitir todos los orígenes en el firewall
ufw allow from any to any port nfs
Cliente
Instalación de los requisitos
Para funcionar NFS como cliente debemos instalar el siguiente paquete:
apt install nfs-common
Punto de montaje o carpeta donde montar los archivos remotos
Debemos espesificar la carpeta donde vamos a montar los archivos remotos. Esto se puede hacer con el comando mount
:
mount <IP del servidor>:/ruta/carpeta/remota /ruta/carpeta/local
Una vez montada la carpeta podemos listar todos los puntos de montaje del servidor con el siguiente comando:
showmount -e <IP del servidor>
También podríamos listar los montajes locales con el comando:
df -h
Por último, podríamos desmontar un punto de montaje con el comando:
umount /ruta/carpeta/local
Montaje automático en el arranque - Fstab
Podemos montar automáticamente la carpeta remota en el arranque añadiendo una línea de configuración en el archivo /etc/fstab
:
La línea tendría el siguiente formato:
<IP del servidor>:<ruta/carpeta/remota> /ruta/carpeta/local nfs <opciones> 0 0
# Por ejemplo:
192.168.1.56:/home/user/compartida /home/cliente/compartida nfs rw,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
Ahora podríamos reiniciar el servidor y comprobar que la carpeta se ha montado automáticamente. A veces tarda unos segundos/minutos en realizar el montaje.