136 - La Raspberry aislada
Como tener una Raspberry aislada, sin ADSL ni fibra óptica, utilizando un modem USB, para poder comunicarnos fácilmente con ella utilizando WireGuard
En el episodio 134 del podcast te hablé sobre redes virtuales. En concreto, te estuve contando que abandonaba OpenVPN por WireGuard. Lo cierto es que llevo algo mas de un mes, utilizando una Raspberry como servidor de de WireGuard, y el funcionamiento es perfecto. Todo ha ido como la sede. Así que decidí dar el siguiente paso, que es el montar una Raspberry Aislada. ¿A que me refiero con esto de una Raspberry Aislada? Escucha el podcast y te enterarás de todo…
La Raspberry aislada
En que ando metido
Como todos los jueves te cuento en que ando metido. Para que sepas lo que encontrarás aquí en las próximas semanas.
Artículos
Respecto a los artículos contarte que el lunes escribí un artículo sobre, como evitar la actualización de un paquete en Ubuntu. Bueno, quien dice en Ubuntu, dice en Debian, Linux Mint, etc.
Aplicaciones
En cuanto a las aplicaciones, durante estos días estuve trabajando en la actualización y mejora de Simple Wallpaper Randomizer, sobre la que ya te comenté en el podcast del pasado lunes sobre como vestir tu escritorio de Navidad de forma aleatoria. Se trata de una sencilla aplicación que te permite cambiar entre fondos de pantalla de forma aleatoria, y también te permite instalar paquetes de fondos de pantalla.
Por otro lado, sigo trabajando sobre PAM Device. La aplicación que te permite desbloquear Ubuntu con tu móvil. En este caso, se trata de resolver un problema con KDE Neon. Y es que tiene un error reconocido, que te impide entrar dentro de la sesión. La única solución es desinstalar PAM Device. Y la otra cuestión sobre la que estoy trabajando es para dar soporte a los wereables. De esta manera, con una pulsera cuantificadora, o un reloj inteligente podrías desbloquear Ubuntu. Espero poder tenerlo resuelto pronto ambas cosas.
¿Que es eso de una Raspberry aislada?
Durante el mes de agosto surgió la necesidad de tener una Raspberry aislada. ¿A que me refiero? Pues me refiero a una Raspberry que estuviera en una casa de campo o en un terreno, y que su única conexión con el mundo exterior fuera un módem 4G. Un lugar donde no llegaba ni el ADSL, ni la fibra óptica.
Puedes pensar en un casa de campo, como te decía, o también un terreno de cultivo, o lo que tu quieras. Al final, se trata de tener la Raspberry aislada, y poder conectarte a ella, para ver lo que está sucediendo, o para interactuar con ella.
Sobre el módem
El módem con el que estuve haciendo las pruebas era un USB Huawei E3372 4G. Se trata de un dispositivo que está desbloqueado, permitiendo trabajar con cualquier operador de telefonía y con una velocidad de descarga de 150 Mbps y de 50 Mbps de subida.
Para poder funcionar sin ningún problema con el módem en tu Raspberry Pi aislada, necesitas quitar el PIN. Es decir, que este módem trabaje sin PIN.
También te tengo que decir, que algunos módem de este estilo los confunde con USB de almacenamiento masivo. Sin embargo, hacer que tu Raspberry lo reconozca como lo que es, es una operación relativamente sencilla. Aunque en mi caso no tuve ningún problema.
Para saber si este es tu caso, es decir, si tu Raspberry, está confundiendo al módem con un USB de almacenamiento masivo lo puedes ver utilizando dmesg
, tal y como indico en el artículo sobre solucionar problemas de firmware en Linux.
Una vez detectado que ese es el problema, para solucionarlo, tienes que añadir el siguiente contenido en el archivo /etc/usb_modeswitch.conf
,
TargetVendor=0x12d1
TargetProductList="14db,14dc"
HuaweiNewMode=1
NoDriverLoading=1
Y posteriormente ejecutar,
sudo usb_modeswitch -v 12d1 -p 1f01 -c /etc/usb_modeswitch.conf
Esto cambiando la definición correspondiente tanto al vendor como al product. Pero, sinceramente, espero que no tengas este problema.
Sobre la conexión vía modem
El siguiente problema al que nos enfrentamos, es que tu proveedor de telefonía, no te da una IP Pública. Ni siquiera te da una IP dinámica. Problema que es fácil resolver utilizando un proveedor de DDNS. Tu proveedor de telefonía utiliza CG-NAT para tu IP. Una IP que estás compartiendo con mas usuarios de la red.
¿Cual es el problema para tu Raspberry Aislada? El problema radica en que, si bien, tu Raspberry, accede sin problemas a Internet, tu no puedes acceder a la Raspberry, por el simple hecho de que no conoces su IP, y aunque la conozcas, no sabes como llegar a tu Raspberry, porque como te digo, esa IP, está compartida con mas clientes de tu proveedor de telefonía.
¿cual es la solución?. La solución es utilizar una VPN, y que esa Raspberry, deje de estar aislada, para que pase a estar dentro de esa red virtual. De esta manera tu podrás acceder fácilmente a ella.
En este sentido, he estado utilizando la Raspberry aislada utilizando OpenVPN y WireGuard. Lo cierto es que al final desistí de utilizar OpenVPN por lo lenta que iba la conexión. No estoy seguro que solo el tipo de VPN fuera el problema, también las condiciones no eran las mas óptimas.
Sin embargo, con WireGuard, no tuve ninguno de esos problemas. La conexión tenía un buen desempeño y todo parecía que iba de una forma razonablemente bien. Lo cierto, es que durante este último mes, he tenido a la Raspberry aislada aunque en casa, haciéndole todo tipo de pruebas y siempre se ha comportado razonablemente bien.
CGNAT y configuración
He de decirte que para que todo funcionara correctamente, es necesario que en la configuración de WireGuard en la Raspberry aislada, añadas la siguiente línea, PersistentKeepAlive=20
. Así, en mi caso la configuración de esta Raspberry queda como puedes ver a continuación.
[Interface]
Address = 10.200.200.85/24
PrivateKey = ERESAFDsfwqeq324rqfewfFdaaR$T$AFEQfadsfadE3=
[Peer]
Endpoint = servidor.duckdns.org:51820
PublicKey = 98asregvfasrASE$RQFDAsfdasFEDASrfeqwfdASfda=
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 10
La línea correspondiente a 0.0.0.0/0
es para que todo vaya por WireGuard, mientras que la de PersistentKeepAlive=10
, es por el motivo comentado anteriormente.
OpenVPN vs WireGuard
Respecto a decantarme por una solución u otra, OpenVPN o WireGuard, lo cierto es que no ha sido difícil. Y es que WireGuard está actualmente en desarrollo, y aunque parece que se incorporará al kernel de Linux, lo cierto es que actualmente no lo está. Esto de utilizar una tecnología que todavía está en desarrollo no me gusta, en este sentido prefiero sinceramente OpenVPN, que está plenamente asentada. Sin embargo, el problema de OpenVPN es la velocidad, como he comentado anteriormente.
Reiniciar la Raspberry
Uno de los problemas que te puedes encontrar con la Raspberry Aislada es que sufra un corte de suministro eléctrico. En este caso, en el caso de que se produzca un corte en el suministro eléctrico, el problema es que no termine de enganchar o bien con el módem o bien con WireGuard, con la VPN. En este caso, he realizado diferentes pruebas, quitando el suministro a la Raspberry.
En el momento que añadí PersistentKeepalive = 10 no tuve ningún problema con WireGuard a la hora de reiniciar. Si que tuve algún problema con el módem, que de las múltiples veces que reinicié una no se puso en funcionamiento, y lo cierto es que no he visto el porqué…
Conclusión
Espero que te sea de utilidad esta experiencia sobre la Raspberry Aislada. Si tienes un caso similar, no dudes en ponerte en contacto y comentarme, que esto siempre es realmente interesantes.
Imagen de portada de Zunnoon Ahmed en Unsplash