Raspberry Pi 4 para desarrolladores
“Acceso remoto a una Raspberry Pi 4 mediante OpenVPN y PiVPN para administración
y soporte desde redes privadas”
Gestionar
y controlar una Raspberry pi de forma remota desde diferentes puntos de acceso
privado, se ha convertido en una tarea importante para la construcción de canales
de acceso remoto entre las diferentes empresas de desarrollo y sus respectivos
clientes, buscando el cumplimiento de los siguientes tres criterios:
1.
Detectar
y atender fallas reportadas por el cliente o el mismo sistema.
2.
Actualizar
y desarrollar a distancia.
3.
Seguir
y monitorear el funcionamiento de cada uno de los dispositivos instalados.
De
acuerdo a lo anterior, ahora ustedes se preguntarán:
¿Cuál
es la metodología práctica utilizada para el acceso remoto de dispositivos conectados
en redes privadas diferentes?
El
acceso remoto de dispositivos mediante redes privadas, han venido siendo
administrado mediante el uso de una herramienta denominada VPN (“Virtual Private
Network”). El cual no es más que una tecnología de red capaz de generar un enlace
directo entre una red local y una red pública que utiliza un formato de
autentificación credencial bajo un conjunto de protocolos de transporte de
datos como UDP y TCP.
Para
entender más a fondo como funciona esta metodología lo que se propone de forma general
en cada una de sus etapas es:
1. Generar un servidor VPN sobre el
dispositivo que se quiere controlar (la Raspberry Pi), utilizando un gestor de
conexión VPN que dependerá del tipo de tecnología a usar.
2. Apertura de puertos de comunicación de
los protocolos de transporte de datos UDP o TCP del enlace a configurar. (Pueden
existir otros protocolos y depende de tipo de gestor VPN a usar, además de que
esto se realiza sobre el router que proporciona acceso de red a la Raspberry Pi).
3. Generación y distribución de credenciales
de acceso a los usuarios interesados de la VPN del servidor.
4. Acceso remoto mediante herramientas de
gestión VPN como OpenVPN (desde nuestro computador de desarrollo o celular),
bajo la importación de la credencial de autentificación generada por el
servidor.
Por lo
tanto, para entender cada una de estar etapas se propone la siguiente práctica:
“Generar
un acceso remoto utilizando un gestor VPN, que permita controlar y gestionar una
Raspberry Pi desde un computador o celular que se encuentra en un entorno de
red diferente”
Para
solucionar este ejercicio vamos a seguir los siguientes pasos, aclarando que no
es una metodología definitiva ya que existen muchos gestores VPN para realizar este
tipo de enlace remoto:
PASO # 1: Configuración
de la VPN sobre la Raspberry Pi.
Para
realizar esta primera etapa, si o si la Raspberry Pi deberá estar conectada a una
red con internet, con el fin de poder descargar la aplicación “PiVPN”, la
cual es un gestor de red privada para sistemas embebidos como la Raspberry Pi.
El cual puede ser instalado mediante el comando:
curl -L https://install.pivpn.io | bash
Redireccionándonos seguidamente a una ventana de configuración en la que
podremos detallar y gestionar todo el proceso de instalación de cada uno los
paquetes previamente descargados por dicho enlace. Pasando luego a una ventana
de información en la que se nos especificara que la Raspberry Pi se
transformara en un servidor VPN.
Seguidamente,
se nos advertirá que es importante establecer una red con IP estática para la Raspberry
Pi sobre alguna de las interfaces de red disponibles por este hardware. En
donde, escoger la red cableada o la red inalámbrica dependerá de la
infraestructura de conexión del medio de trabajo en el que se encuentra
instalada la Raspberry Pi.
Luego,
él estado de configuración nos advertirá si queremos confirmar el uso de la IP
asignada por defecto, recordándonos que el uso de IP dinámicas podría llevar a
la comunicación a un conflicto de red. Sobre el que al darle aceptar lo que
hace este administrador PiVPN es configurar internamente la Raspberry Pi, para
que cuando se conecte a la Red si o si el proveedor le asigne una IP definida
bajo petición directa de la misma tarjeta.
Encontrándonos
que el problema de que la Raspberry Pi sea el que define su propia IP, es que,
si el proveedor ISP ya la tiene definida, conllevara a un conflicto de conexión
sobre los enlaces afectados. Por lo cual es recomendable que la definición de
la IP de la Raspberry Pi, sea establecida y reservada de forma jerárquica por
el mismo proveedor ISP (router). Aunque para este ejemplo se trabajo la
petición de asignación por petición de la Raspberry.
Una
vez que tenemos configurado el tema de la interfaz de red, el gestor nos pedirá
que definamos el usuario que administrara los servicios del servidor VPN en la
Raspberry Pi, junto a la activación de las actualizaciones periódicas para
mantener segura la interfaz de conexión VPN.
Finalizando de esta manera la primera fase de configuración de la VPN en la Raspberry Pi.
PASO # 2: Apertura de puertos de comunicación para la VPN y preconfiguración del nivel de autentificación del certificado de conexión.
La configuración de la VPN en la Raspberry Pi, nos pedirá seleccionar un protocolo de comunicación bajo dos opciones que dependerán de lo que el entorno de comunicación proporcione y se solicite:
· UDP (alta velocidad con baja latencia sin confirmación de paquetes recibidos).
· TCP (alta fiabilidad con mayor latencia y menor velocidad con confirmación de paquetes recibidos).
Conllevando
a que según la decisión que tomemos, se nos establecerá un puerto de enlace por
defecto para el UDP como el 1194 y para el TCP el 443. Tomando en este caso la
configuración de la opción UDP.
Puerto
que deberá ser abierto sobre la red de trabajo de la Raspberry Pi, mediante la
configuración directa del router que proporciona la conexión de red a la
Raspberry. Teniendo en cuenta que generalmente este tema es de autonomía propia
de la oficina de comunicación en las empresas que trabajamos o del mismo
cliente al que se le prestara el servicio.
Aclarando que la IP asociada al puerto que se configurará, será la definida por los pasos anteriores a la Raspberry Pi.
NOTA:
Si no se genera la apertura del puerto del protocolo UDP
o TCP, al momento de generar la conexión obtendremos un error de acceso. Así
que este paso es fundamental.
Luego
de generar la definición del protocolo de transporte y su respectivo puerto de
comunicación, la interfaz de configuración de PiVPN, nos pedirá decidir si
queremos establecer un grado de autentificación para el certificado de conexión.
El cual es un archivo físico de extensión “. ovpn” que utilizara el interesado
para conectarse a la Raspberry Pi de forma remota utilizando herramientas como
OpenVPN ya sea desde un celular o un computador.
Pidiendo
de forma conjunta que se decida si nuestro servidor será visto por los clientes
mediante un IP publica o mediante un identificador DNS. Destacando que para
este ejercicio se trabajó bajo el uso de la IP pública del ISP al que se conectó
la Raspberry Pi.
PASO # 3: Generación del certificado de conexión de la VPN.
Terminando
la configuración de la VPN en la Raspberry Pi, se nos advertirá de que el
comando para generar un servidor con su respectivo certificado de conexión
será:
pivpn
add (Para credenciales
con contraseña de autentificación)
pivpn
add nopass (Para credenciales
sin contraseña de autentificación)
o
también se puede utilizar de la forma:
pivpn
-a (Para credencial con
contraseña de autentificación)
pivpn
-a nopass (Para
credencial sin contraseña de autentificación)
En
donde dependiendo de cómo lo hagamos, deberemos definir una contraseña de
autentificación. La cual, deberá ser compartida junto el certificado de
conexión encontrado en la carpeta “ovpns” en la Raspberry Pi.
PASO # 4: Conexión
remota desde otra red privada al servidor VPN de la Raspberry Pi.
Para
realizar una conexión sobre una VPN lo primero que debemos hacer es disponer de
una herramienta o software capaz de administrar este tipo de conexiones. En
este caso lo que vamos a realizar es la instalación previa de un programa
denominado OpenVPN. El cual presenta una interfaz de trabajo intuitiva y
versátil para este tipo de conexiones bajo una compatibilidad en sistemas
operativos como Windows, Linux, Android y iOS.
Luego
de que hemos descargado e instalado OpenVPN en nuestro computador o celular que
utilizaremos como enlace remoto hacia la Rapberry Pi, tomaremos o solicitaremos
la credencial generada por el servidor de la Raspberry Pi, junto a su
respectiva clave de autentificación. La cual, simplemente deberá ser importada
por la herramienta OpenVPN.
Logrando
así una conexión remota sobre la red a la que se encuentra conectada la Raspberry
Pi desde una red privada y sobre la que solo nos queda verificar si podemos
ingresar a la Raspberry Pi. Proceso que debería ser validado mediante el uso de
un enlace directo utilizando el protocolo SSH tal cual se ha definido en las publicaciones
de estos tutoriales anteriormente.
Ahora ustedes se preguntarán: ¿A qué IP debemos apuntar para conectarnos
a la Raspberry PI utilizando un enlace SSH?, pues resulta que, si ya estamos enlazados
a la red privada de la Raspberry Pi mediante una VPN, es como si estuviéramos físicamente
conectados a la misma red. Por lo cual la respuesta a esta pregunta sería a la
IP asignada por la red privada de la Rasbperry Pi o al identificador por
defecto de su host.
Ejemplo
que también puede ser replicado utilizando un teléfono móvil bajo la aplicación
OpenVPN disponible según su sistema operativo junto a una comunicación SSH gestionada
por una aplicación como “Termius” para teléfonos con sistema operativo Android.
Finalmente solo me queda decirles que espero que esta información les ayude como guía para entender el alcance del
uso de enlaces VPN para la gestión de dispositivos conectados en redes privadas
independientes. Así que muchas gracias y si les ha gustado esta
pequeña práctica por favor divulgar esta información, para que todos aquellos
que quieran aprender a desarrollar sobre la Raspberry Pi no se pierdan las
próximas publicaciones.