Ya está. Ya tengo un punto de partida y un gráfico cuqui para pensar mejor.
Primero vamos con él y luego describo los puntos claves y lo que es posible ahora y lo que hay que desarrollar un poco.
Del párrafo anterior vemos que hay dos tipos de problemas:
- Acceso desde el exterior
- Gestión de dispositivos
- Mecanismos de copia
Acceso desde el exterior
El acceso desde el exterior, estando dentro de una o varias capas de NAT tiene sus dificultades. Si sólo es una capa se puede configurar el router para que abra uno o dos puertos hacia la Raspberry. Si son dos la cosa es más complicada y la dejo para el final.
Para saber la IP de conexión desde el NAS cliente podemos añadir un servicio de DNS dinámico en la Raspberry o abrir un túnel SSH inverso. Aún no tengo claro cómo voy a implementarlo precisamente por lo que comento más arriba, si el proveedor de acceso emplea una doble NAT o algo similar la cosa se pone difícil.
El esquema de arriba también muestra algo que he añadido por si acaso, y es el de tener certificados digitales para las conexiones seguras. Es algo que ya llevo tiempo pensando y que no he afrontado aún. Dispongo de un dominio llamado balteus.net que reservé precisamente para ello: dar soporte de nombres a máquinas con IP dinámica. Conectando con SSH la transmisión cifrada va incluida pero para cualquier servicio vía web tener un certificado no autogenerado es toda una ventaja.
Resumiendo los temas que tengo que estudiar:
- IP asociada con un nombre
- Apertura de puertos desde router de fibra
- Túnel SSH inverso empleando un tercero
- VPN sencilla
Gestión de dispositivos
En este caso podemos emplear dos variantes: dispositivo siempre en línea o montaje a demanda. Tenerlo siempre en línea es cómodo pero también más peligroso en caso de intrusión en el sistema y supone un mayor desgaste porque un servidor de copias pasa la mayor parte del tiempo mano sobre mano. Además se crea una relación muy íntima con el sistema bajo el que funciona y hace más complicado cambiar de disco -para intercambiar volúmenes se me ocurre- al ser más rígida la configuración.
En cualquiera de los dos casos el dispositivo puede ser transparente para la Raspberry o tener una capa de cifrado que proporcione más seguridad al propietario de los datos, con la certeza de que puede situar el montaje en casa de alguien con menos confianza que un padre, por ejemplo.
Respecto a esto último ya he comentado algunas ideas en esta entrada. Construiré un paquete para poder instalar el mecanismo en varios sitios.
Mecanismos de copia
El montaje puede convertir a la Raspberry en un dispositivo de copias activo o pasivo. Por activo entiendo que el sistema es el que inicia las copias y abre conexiones al exterior. Por pasivo es lo contrario, recibe conexiones y abre servicios al exterior.
Estos servicios pueden ser variados, aunque yo prefiero limitarlos a lo más conocido posible:
- rsync
- rsync vía SSH
- scp vía SSH
- sftp vía SSH
Todos ellos con montaje previo de almacenamiento y verificación de credenciales, lo que nos lleva a otro problema: cómo hacer para mantener dichas credenciales. Una idea que ya funciona es la de crear cuentas de sistema como describí aquí (trabajo adelantado) y la otra sería crear un pequeño directorio LDAP que es muy socorrido cuando tienes servicios web con autentificación interna.
Es la parte que menos me preocupa así que iré resolviendo paso a paso todo lo demás.