NFS, Server
Dentro de los proyectos personales, tenia, el crear un servidor NFS, en Linux por supuesto, pues manos a la obra.
Como primer requisito es tener un servidor Linux «Ubuntu» (¿Qué hay otro?) bien armado y testeado (probado, pa los que no digerimos los anglicismos)
Definición de NSF, Network File System, es un protocolo de sistema de archivos distribuido, su origen se remonta a Sun Microsystems.
Como sistema Cliente Servidor, se requiere configurar ambas partes, empezaremos por el server
sudo apt install nfs-kernel-server -y
con esto lograríamos instalar el servicio NFS y posterior necesitamos definir que carpeta se va a compartir, crearemos una carpeta y le definimos los permisos necesarios
sudo mkdir -p Contenido
sudo chown nobody:nogroup Contenido
sudo chmod 777 Contenido
El siguiente paso será exportar esta carpeta o directorio, para esta actividad, se deberá primero dar permiso a los clientes que accederán al servidor, esto se logra editando el archivo /etc/exports
sudo vi /etc/exports
A continuación pondré varios ejemplos
/ruta/de/Contenido ip-de-cliente(rw,sync,no_subtree_check)
/ruta/de/Contenido ip-de-cliente-1(rw,sync,no_subtree_check)
/ruta/de/Contenido ip-de-cliente-2(rw,sync,no_subtree_check)
/ruta/Contenido ip-de-cliente1/24(rw,sync,no_subtree_check)
Los permisos «rw, sync, no_subtree_check» significan que los clientes pueden realizar:
rw : operaciones de lectura y escritura
sync : escriba cualquier cambio en el disco antes de aplicarlo
no_subtree_check : evita la comprobación de subárbol
Y por ultimo exportamos la carpeta compartida
sudo exportfs -a
y reiniciamos NFS
sudo systemctl restart nfs-kernel-server
Por seguridad debemos tener activado el «UFW» para protección de la información (Port nfs = 2049)
sudo ufw allow from ip/rango to any port nfs
sudo ufw allow from 192.168.1.1/24 to any port nfs
hasta aquí se supone que ya esta listo el server y la carpeta compartida, pero en la práctica me tope con ciertos inconvenientes ya que el cliente que quería conectar era un Windows 10 y por default no traen activado el cliente de NSF, otro inconveniente que tuve, fue que hay que abrir otros puertos en el ufw para que pueda el cliente hacer el discovery de la carpeta compartida (¿Discovery?- pensé que no me gustaban los anglicismos)
una vez instalado el cliente de NSF (no voy a ver ese tema en este post), ejecutamos en línea de comandos del lado del cliente
rpcinfo -p IP-DEL-SERVIDOR
Nos mostrara un listado como el siguiente
programa versión protocolo puerto
————————————————–
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 37740 status
100024 1 tcp 60631 status
100005 1 udp 59152 mountd
100005 1 tcp 38881 mountd
100005 2 udp 52347 mountd
100005 2 tcp 39849 mountd
100005 3 udp 59175 mountd
100005 3 tcp 58591 mountd
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
100021 1 udp 37653 nlockmgr
100021 3 udp 37653 nlockmgr
100021 4 udp 37653 nlockmgr
100021 1 tcp 46549 nlockmgr
100021 3 tcp 46549 nlockmgr
100021 4 tcp 46549 nlockmgr
Para ver este listado tuve que abrir el ufw de otra manera no me habría dado cuenta de todos los puertos que intervienen en el dicovery y para el montaje de la carpeta compartida, en resumen se necesitan los siguientes permisos en el ufw
sudo ufw allow from IP-Cliente proto tcp to any port 111
sudo ufw allow from IP-Cliente proto tcp to any port 60631
sudo ufw allow from IP-Cliente proto tcp to any port 46549
sudo ufw allow from IP-Cliente proto tcp to any port 38881
sudo ufw allow from IP-Cliente proto tcp to any port 39849
sudo ufw allow from IP-Cliente proto tcp to any port 58591
Por ultimo desde línea de comandos, en el cliente, ejecutamos lo siguiente para Mapear una unidad lógica con la carpeta compartida
mount -o anon IP-SERVER:/Contenido z: