Cuando queremos controlar remotamente una máquina por Internet existen básicamente 2 estrategias diferentes:
Por acceso directo
La gestión se hace desde un puesto de trabajo remoto y nos conectamos directamente por Internet al dispositivo que conecta la máquina que queremos controlar. Es una conexión punto a punto por la cual necesitamos identificar de manera univoca a la máquina remota desde nuestro puesto de trabajo. Esta identificación se hace por la IP de la máquina. Es la estrategia antigua heredada del mundo industrial de control remoto de máquinas.
Por plataforma IoT
Accedemos a los datos de la máquina mediante una plataforma en Internet que guarda los datos actualizados de todas las máquinas que queremos controlar. Es la máquina que establece la conexión con la plataforma, se identifica y actualiza los datos que le concierne en la plataforma. Luego, nosotros, desde nuestro puesto de trabajo, con la referencia de la máquina, consultamos el dato que nos interese y que eventualmente actualicemos. Es la fílosofia general que adopta el mundo de Internet de las Cosas.
La razón fundamental de que existan 2 formas diferentes de acceder a los datos viene de la gestión de la seguridad y en concreto de la gestión de IPs de las conexiones a Internet. Hay 2 factores a tomar en cuenta al respeto:
Agotamiento de las IPs públicas
No existen más IPs públicas a adjudicar en el mundo. Se considera un recurso escaso que se entrega con cuenta gota.
Seguridad en Internet
Si exponemos una IP pública en Internet se facilitan los accesos indebidos a nuestra conexión desde el mundo exterior. Hay rastreos continuos en Internet que tienen como objetivo encontrar vulnerabilidades y aprovecharlas.
Por estas 2 razones los operadores han decidido utilizar direccionamientos IP privados para sus conexiones IoT que permiten a los dispositivos conectarse a Internet con una IP dinámica pero no permiten acceder directamente desde el mundo exterior (por eso, un ping a nuestro dispositivo que conecta la máquina no suele funcionar a pesar de que el dispositivo si comunica datos con el mundo exterior).
No obstante, si queremos acceder directamente a la máquina en tiempo real sin esperar a que se refresquen los datos de la máquina por la plataforma IoT necesitamos una IP fija. Tenemos entonces 2 opciones:
IP fija pública
Se desaconseja ese método porque representa un agujero de seguridad al permitir un acceso exterior no controlado. Además engorda los datos de tráfico al dispositivo de la máquina con un coste que no deberíamos asumir.
IP fija privada
La IP que nos da el operador no es válida por ser dinámica. Tiene que ser fija. La solución pasa por meter la máquina en una red privada cuyo direccionamiento decidimos. Construimos una VPN que incluya tanto a la máquina remota como al acceso remoto (nuestro puesto de trabajo). Se puede hacer mediante un mecanismo de intercambio de certificados para cifrar las comunicaciones entre el puesto de trabajo y la máquina a controlar. Existen por ejemplo servicios de OPENVPN que lo permiten.
No obstante, esa última solución presenta una desventaja: ¿Es capaz la máquina remota (o el dispositivo que la conecta) de soportar una configuración VPN? Si se trata de un sensor simple de temperatura por ejemplo es muy probable que la respuesta sea negativa. ¿Qué podemos hacer entonces?
La última solución pasa por ofrecer un servicio de VPN de operador que adjudica directamente una IP fija privada a la conexión. Cuesta dinero para instalarla y, normalmente, se construye para incluir varias máquinas en una sola VPN (no solo la que nos interesa). Pero sigue teniendo un problema: No suele incluir el puesto remoto en el direccionamiento privado que acabamos de construir. Con los cuál, "nos hemos quedado con la puerta cerrada en las narices".
¿Solución? O el operador de comunicaciones nos ofrece un acceso remoto a la VPN que incluye todas las máquinas (opción que normalmente no ofrecen los operadores) o instalamos un router al lado de nuestro puesto remoto con una conexión dentro de esta VPN (por ejemplo una SIM).
Pero, en definitiva, si no tenemos la posibilidad de instalar una VPN en la máquina remota (porque no ofrece la capacidad requerida) es aconsejable recurrir a una plataforma IoT que permita actualizar los datos (casi) en tiempo real.
En resumen tenemos:
OPENVPN | Plataforma IoT | VPN de operador | IP fija pública | |
No necesito acceder en tiempo real al dispositivo de la máquina | X | |||
El dispositivo que conecta la máquina ofrece VPN | X | |||
Puedo poner mi acceso remoto en la VPN del operador/existe un acceso remoto a la VPN del operador | X | |||
No tengo otra alternativa y/o soy inconsciente y no me importa la seguridad | X |