"Después del juego es antes del juego"
Sepp Herberger

jueves, 24 de febrero de 2022

NAS sobre DLink DIR 860L-B1 y OpenWRT

Seguimos haciendo cosas con los puntos wifi DLink DIR 860L-B1. Ahora vamos a ver como montar un servidor NAS que tenga al menos los servicios samba y sshfs. Opcionalmente se podrían montar otros servicios adicionales como NFS, RemoteFS, SFTP...

La almacenamiento será sobre disco duro externo de 1TB conectado al puerto USB 3.0 del DLink.

En un principio he intentado hacerlo funcionar con OpenWRT 21.02.1, que ya había utilizado para el montaje del routed client, pero he tenido estos dos problemas:
  • Los paquetes de samba4 ocupan una burrada, no hay espacio en los 16Mb de memoria SD del dispositivo para ellos.
  • En esta versión de OpenWRT no hay samba3. Existe un paquete llamado ksmbd-server que emula samba v3 a nivel de módulo del nucleo. El problema es que en las pruebas que he hecho es inestable y se cae con frecuencia.
Visto lo visto, he vuelto a usar OpenWRT 15.05, que sigue siendo una versión muy estable con buen funcionamiento.

Una vez cargado el sistema y hechas las configuraciones iniciales básicas, veamos como queda. La red pide una IP por DHCP en el puerto "lan" (hemos dado de alta el equipo en el arbol ldap con el nombre "nas" y una IP fija)
# cat /etc/config/network 
config interface 'loopback'
	option ifname 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'

config globals 'globals'
	option ula_prefix 'fdda:86a9:b1ad::/48'

config interface 'lan'
	option ifname 'eth0.1'
	option force_link '1'
	option macaddr '9a:45:4e:fb:75:c1'
	option type 'bridge'
	option proto 'dhcp'
	
config interface 'wan'
	option ifname 'eth0.2'
	option force_link '1'
	option macaddr '9a:45:4e:fb:75:c2'
	option proto 'dhcp'

config interface 'wan6'
	option ifname 'eth0.2'
	option proto 'dhcpv6'

config switch
	option name 'switch0'
	option reset '1'
	option enable_vlan '1'

config switch_vlan
	option device 'switch0'
	option vlan '1'
	option ports '1 2 3 4 6t'

config switch_vlan
	option device 'switch0'
	option vlan '2'
	option ports '0 6t'    
Los interfaces wifi quedan apagados:
# cat /etc/config/wireless 
config wifi-device  radio0
	option type     mac80211
	option channel  36
	option hwmode	11a
	option path	'pci0000:00/0000:00:00.0/0000:01:00.0'
	option htmode	VHT80
	# REMOVE THIS LINE TO ENABLE WIFI:
	option disabled 1

config wifi-iface
	option device   radio0
	option network  lan
	option mode     ap
	option ssid     OpenWrt
	option encryption none

config wifi-device  radio1
	option type     mac80211
	option channel  11
	option hwmode	11g
	option path	'pci0000:00/0000:00:01.0/0000:02:00.0'
	option htmode	HT20
	# REMOVE THIS LINE TO ENABLE WIFI:
	option disabled 1

config wifi-iface
	option device   radio1
	option network  lan
	option mode     ap
	option ssid     OpenWrt
	option encryption none
Creamos un usuario normal para usar luego en samba. En /etc/passwd añadimos el usuario "nas":
# cat /etc/passwd
root:x:0:0:root:/root:/bin/ash
daemon:*:1:1:daemon:/var:/bin/false
ftp:*:55:55:ftp:/home/ftp:/bin/false
network:*:101:101:network:/var:/bin/false
nobody:*:65534:65534:nobody:/var:/bin/false
nas:*:1000:65534:nas:/var:/bin/ash
Y definimos una contraseña para él:
# passwd nas
El montaje del disco externo USB necesita estos paquetes:
# opkg update
# opkg install fdisk block-mount e2fsprogs kmod-fs-ext4 kmod-usb-storage kmod-usb2 kmod-usb3
Formateamos el disco externo (aconsejamos usar formato ext3) y lo pinchamos en el puerto usb. Con:
# fdisk -l
Sacamos un listado de los discos conectados, nuestro disco duro debe aparecer como /dev/sdaX. A continuación creamos el punto de montaje:
# mkdir /disco
# chown nas: /disco
# chmod 777 /disco
Modificamos el fichero "fstab" para que se automonte el disco en el arranque:
# cat /etc/config/fstab 
...
config mount
	option enabled '1'
	option device '/dev/sda1'
	option target '/disco'
Instalamos paquetes para permitir conexiones y transferencia de datos con sshfs, scp y rsync:
# opkg update
# opkg install openssh-sftp-server rsync
Y vamos a la configuración de samba:
# opkg update
# opkg install kmod-usb-storage block-mount samba36-server luci-app-samba
La configuración sería:
# cat /etc/config/samba 
config samba
	option workgroup 'WORKGROUP'
	option homes '1'
	option name 'NAS'
	option description 'NAS'

config sambashare
	option name 'datos'
	option path '/disco'
	option read_only 'no'
	option guest_ok 'no'
	option create_mask '777'
	option dir_mask '777'
   	option users 'nas'
Hay que crear el usuario "nas" en samba, con la contraseña que nos pareza conveniente:
# smbpasswd -a nas
Tras esto reiniciamos y probamos a montar desde una maquina cliente. En una máquina Linux que hará de cliente vamos a probar a montar mediante sshfs:
# sshfs root@nas:/disco /mnt
# mount
....
root@nas:/disco on /mnt type fuse.sshfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0)
# umount /mnt
Vamos a por samba. Samba casi siempre da problemas de permisos con el sistema de ficheros compartido. Para evitarlo, una vez montado el disco duro modificamos de nuevo los permisos de la carpeta (esto se debe a que cuando la partición montada es tipo extX no existe el parametro umask):
# chmod 777 /disco
Y ahora en un cliente Linux probamos a montar usando samba/cifs y creamos un directorio y un fichero para confirmar que todo va bien:
# mount -t cifs //172.19.231.150/datos /mnt -o username=nas,password=xxxx
# mount
....
//172.19.X.Y/datos on /mnt type cifs (rw,relatime,vers=1.0,cache=strict,username=nas,domain=NAS,uid=0,noforceuid,gid=0,noforcegid,addr=172.19.X.Y,unix,posixpaths,serverino,acl,rsize=1048576,wsize=1048576,actimeo=1)
# mkdir /mnt/prueba
# touch /mnt/prueba/test
# umount
Por último, para clientes Windows se realiza el montaje accediendo desde el explorador de archivos a la ruta "\\nas\disco". Pedirá usuario y contraseña y listo...excepto en Windows 10, que da un error derivado de que en dicho sistema se han puesto tiquismiquis con la versión de SMB soportada. Todo el asunto está descrito en este enlace, para que funcione simplemente hay que activar el soporte para SMB 1.0 siguiendo estos pasos:
  • Pulsar Windows Key + R, teclea "optionalfeatures.exe" y pulsa Enter. Sale una ventana muy años 90.
  • Buscar la sección "SMB 1.0/CIFS File Sharing Support" o similar, abrirla.
  • Marcar SMB 1.0/CIFS Client. Desmarcar MB 1.0/CIFS Automatic Removal y SMB 1.0/CIFS Server.
  • Reiniciar y acceder a "\\nas\disco" para verificar que funciona.
Por supuesto, todo esto es un ejemplo sencillo. Nada impide compartir distintas carpetas con distintos permisos de acceso dentro del disco externo, usando recursos samba diferentes. Eso queda al libre albedrío de cada cual.

Al ser un sistema donde el disco va por USB no es lo más rápido del mundo, pero queda ideal para copias de seguridad y tareas que no requieran una velocidad de transferencia excesiva.

Y poco mas se puede probar, simplemente estoy mirando la posibilidad de usar syncthing para mantener el disco NAS sincronizado con otor sistema de ficheros, en plan "copia de seguridad en tiempo real", a ver que tal rinde.

Ya iremos contando. До свидания!

No hay comentarios:

Publicar un comentario