Primeros pasos con Zerotier
La situación.
Hace unos días que vengo teniendo problemas con la conexión VPN (Servidor VPN) que utilizo para conectarme a la red de mi casa cuando estoy en movilidad. Parece que el problema no está en el servidor VPN que corre sobre la Raspberry B+ ni en el cliente de openvpn que utilizo en mi terminal Android, pero no ha sido fácil llegar a esta conclusión. Después de varias pruebas y de mucho tiempo funcionando de un día para otro y sin tocar ninguna configurando el sistema ha dejado de funcionar.
El diagnóstico
A priori el fallo puede venir de varios sitios por lo que me dispongo a ir excluyendo uno tras otro.
- El cliente
- El servidor
- El redireccionamiento de ip
- El redireccionamiento de puertos
En un primer momento, después de reconfigurar la conexión en el cliente vnp, de probar con distintos parámetros y de incluso reinstalarlo borrando los datos de configuración, he terminado por descartar que el fallo esté en el cliente.
Puesto que la Raspberry se reinicia cada dos días el servidor PiVPN hace lo propio. Directamente paso a reinstalarlo pero la conexión vpn desde el exterior sigue sin funcionar.
Otro motivo de error puede ser el redireccionamiento que, gracias a NoIp, utilizo para no tener que ir modificando continuamente la Ip dinamica que me asigna el operador telefónico. Esta redirección parece que funciona correctamente pero con todo intento la conexión vpn sustituyendola por la ip pública asignada en ese momento y el fallo persiste en idéntica situación.
La comunicación vía vpn la vengo realizando en los últimos meses a través del puerto 1194 UDP redireccionado a la ip de la Raspberry. Ya sólo me queda comprobar que esto sigue bien configurado. Lo compruebo y parece que todo está bien pero voy un paso más allá gracias a un chequeador de puertos online y observo como, a pesar de lo que indica la configuración del router, el puerto 1194 UDP no está abierto para mi ip pública.
El fallo
Ya tengo acotado el origen de mis problemas, el router no abre el puerto para realizar la comunicación a pesar de que se lo indico adecuadamente en la configuración del mismo.
Se trata de un Livebox Fibra de Orange y en la siguiente imagen se puede ver como el puerto parece estar abierto.
Pues nada, tal y como se puede ver en este hilo con tengo abierto en el soporte de Orange realizo las siguientes pruebas con el router, unas según mi propio criterio y otras como respuesta a los comentarios de uno de los “solucionadores”:
- Reiniciar el Router
- Eliminar el puerto redireccionado y volverlo a crear
- Abrir el puerto mediante uPnP en lugar de desde NAT/PAT
- Restablecer el Router a los valores de fábrica
- Poner el Firewall del router al valor “medio”
- Usar un puerto por encima del 10000
El caso es que después de todas estas pruebas y de buscar más información en la web no he sido capaz de solucionar el problema por lo que me dispongo a rodearlo usando una tecnología distinta.
Probando ZeroTier One
Uno de los productos de la compañia Zerotier es un software de código libre que establece conexiones punto a punto vpn entre computadores, teléfonos, apps… ZeroTier One es una solución alternativa al vpn clásico que es posible implementar de una forma más sencilla. En principio utilizaré ZeroTier en los tres equipos que utilizo habitualmente:
- NAS Synology DS216+II
- Raspberry Pi 3 Model B+
- Lineage OS
Antes de comenzar la instalación del software en cualquiera de los dispositivos nos crearemos una cuenta gratuita en Zerotier y en el apartado “Networks” crearemos una nueva red. No voy a entrar en detalles ni peculiaridades ya que mis comocimientos todavía no me permiten dar muchas más explicaciones, si las quieres te recomiendo ver los vídeos de Naseros sobre Zerotier.
De aquí necesitamos el identificador de red, que en mi caso será 78898a1265hfg34b, para poder instalar el cliente Zerotier en cada uno de los dispositivos.
Zetorier One en la Raspberry
Bastan dos líneas de código, una de instalación del cliente y otra para unir el cliente a la red que hemos creado anteriormente.
curl -s https://install.zerotier.com/ | sudo bash
sudo zerotier-cli join 78898a1265hfg34b
Ahora accederemos desde la web a la red que hemos creado y autorizaremos a la Raspberry a acceder a la misma habilitando el primer cuadro tal y como se muestra en la imagen.
Y ya está, vamos a por el siguiente dispositivo
Zerotier en el NAS Synology DS216+II
Aquí la cosa se complica un poco más. Primero tenemos que determinar la versión a descargar según la arquitectura del procesador de nuestro nas. Para Synology se puede buscar aquí. Para el caso de mi Synology DS216+II es fácil determinar que necesito descargar la versión braswell (x64).
Con el archivo *.spk descargado ya podemos instalarlo en nuestro NAS, para lo cual realizeremos una instalación manual desde el centro de paquetes y seleccionando el archivo descargado en nuestro pc.
A partir de aquí no resta más que abrir la aplicación e introducir en el recuadro de la esquina inferior derecha (Si, tambien hay que pulsar el botón “Join”) el identificador de la red que hemos creado para unirnos a esta.
Por último hay que aceptar esta nueva onexión a las red desde la web de zeroTier.
ZeroTier en Android
Aquí nos encontramos con un problema “importante” y es que la única manera oficial de instalar la aplicación Zerotioer One es desde la tienda Google Play por lo que deberas tener instalados en tu terminal los servicios de Google. Cierto es que por la web no es complicado encontrar apk’s con la aplicación para descargar pero al no ser sitios soportados por el fabricante con son fuentes para nada confiables.
Con la aplicación ya instalada y abierta sólo hay que seguir tres pasos tal y como se puede ver en la siguiente imagen.
- Pulsar para añadir una nueva red
- Introducir el identificador de red y añadirla
- Activar la red y comprobar que estamos “ONLINE”
En la barra superior de notificaciones podremos ver como ha aparecido una “llave” que indica que estamos bajo una conexión VPN
Ahora y del mismo modo que en los casos anteriores tendremos que permitir el aceso a la red de este dispositivos desde la web de Zerotier.
Para realizar esta conexión en movilidad sin el amparo de una red wifi deberemos activar la opción “Use Cellular Data” desde el menú de configuración.
Zerotier instalado, y ahora que…
Se suele dar el caso de que estoy fuera de casa y necesito acceder a la Raspberry o el NAS que tienen instalado Zerotier. Antes de nada necesito conocer la IP que Zerotier ha asignado al dispositivo que necesito conectarme. En mi caso se puede ver en la siguiente imagen como la Raspberry ha adquirido la IP 192.168.191.168
Con todo lo anterior ya estoy preparado para acceder desde fuera de mi red local a la Raspberry. Utilizaré una aplicación u otra dependiendo del servicio al que me quiera conectarme
- Chrome para acceder al servidor web
- Termux para acceder a través de ssh
- ES Explorador de archivos para acceder a través de samba o ftp