VPN Temporal para salir de apuros

En una de las visitas a Madrid, me encontré con un problema en el hotel. Tenía Internet, buena velocidad, IP española (algo que últimamente hecho de menos) pero no podía conectar con la VPN que tengo montada en casa, mirando y haciendo pruebas observé que solo tenía salida por los puertos de dns, web y correo. En otra ocasión ya me pasó algo parecido en Granada, pero me pude conectar a la red de la UGR y pude salir sin problemas, pero ahora tenía que buscar otra solución.

El motivo.

Cuando conecto con mis servidores o servicios, no lo hago en puertos por defecto, por lo que nada me funcionaba. Eso me ocasionaba un gran problema en ese momento porque no podía hacer nada.

La solución.

La solución era simple, montar un servidor de OpenVPN u otro similar pero no parecía fácil ya que nada donde podía conectar estaba permitido,  no me quedaba otra que buscar alternativas fuera de los recursos a los que tengo normalmente tengo acceso.

Buscaba algo que fuese por horas o días y no un servicio VPN comercial, así que buscando encontré Clouding.io que tiene este servicio y con una IP española y ya que me regalaban 5€ en el registro decidí probarlo. En mi caso iba a ser usado durante los 3 días que iba a durar mi estancia en Madrid no necesitaba que fuese un alquiler mensual, con lo que con esos 5€ de crédito inicial podía probar el servicio.

Creando el Servidor.

Lo primero que hice fue crear un servidor seleccionando desde su panel seleccionando apps y docker, ya que tenía claro que iba y como lo iba a hacer 😉

Seleccion Maquina Clouding.io

Configuración previa.

Lo siguiente es crear un Firewall, en mi caso cree uno llamado Permisivo, ya que precisamente lo que quería era permitir todo en tcp y  udp:

Firewall Clouding.io

Y asociarlo a nuestra nueva máquina. La otra opción es permitir en los puertos por defecto el 53 udp y el 25 tcp que serán los que usemos para conectarnos por ssh y para el OpenVPN.

Me sirvió de gran ayuda el que disponga de una consola web porque tampoco podía conectar por el 22. Accedí por la web y pude cambiar el puerto del ssh por el 25:

ssh clouding.io

Una vez cambiado el ssh al puerto 25, ya pude acceder desde el portátil porque pasaba la prueba del firewall pensando que era correo  y el bloqueo ser sólo a nivel de puertos y no de servicios en si.

OpenVPN en Docker.

La imagen a usar en este caso es la de kylemanna/openvpn que es la más usada y más votada dentro de Docker Hub y que ya había usado con anterioridad.

Primero traernos la última versión de la imagen:

docker pull kylemanna/openvpn/

La configuración la empezaremos definiendo dos variables para facilitarlo:

OVPN_DATA="ovpn-servidor"
IP=$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)

Y ahora sólo nos queda empezar con la configuración:

docker volume create --name $OVPN_DATA
docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm kylemanna/openvpn ovpn_genconfig -u udp://${IP}
docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm -it kylemanna/openvpn ovpn_initpki

Levantamos el servicio en el puerto 53 UDP, ya que el único puerto UDP que no tendré bloqueado. El 53 porque es usado para poder hacer las peticiones DNS.

docker run --name=$OVPN_DATA -v $OVPN_DATA:/etc/openvpn -d -p 53:1194/udp --cap-add=NET_ADMIN kylemanna/openvpn

Una vez que tengamos el servidor arriba, tendremos que crear el usuario (alferezhotel) sin password para conectar:

docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm -it kylemanna/openvpn easyrsa build-client-full alferezhotel nopass

Una vez creado solo queda generar el fichero alferezhotel.ovpn para conectarnos:

docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm kylemanna/openvpn ovpn_getclient alferezhotel > alferezhotel.ovpn

Lo siguiente es usar ese fichero de configuración, que en mi caso tenía un fallo. OpenVPN está usando el 1194 UDP y yo lo uso en el 53 UDP al exterior. Hay que hacer ese cambio manualmente y ya podremos conectar a nuestra VPN sin solicitar clave, sólo con nuestro usuario definido en el fichero.

El resultado

Una vez pasado el fichero al móvil para probar este fue el resultado:

Conexión VPN

Con esto, salté el Firewall del hotel y accedí a todos mis servicios con total normalidad a través del servidor. Pasado la estancia en el hotel, pude apagar el servidor manteniendo el crédito restante para futuros usos.

Me funcionó, pude salir a internet y a mis servicios sin problemas saltándome la restricción del hotel. Fue rápido el montarlo y usarlo, así que con esto ya me valía así que puede obtener una conexión sin restricciones.