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 sólo tenía salida por los puertos de dns, web y correo.

El motivo.

Cuando conecto con mis servidores o servicios, nunca los tengo puesto en los puertos por defecto, por lo que nada me funcionaba y 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 😉

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:

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.

Una vez creado me sirvió de gran ayuda el que disponga de una consola web porque tampoco podía conectar por el 22, así que accedí por la web y pude cambiar el puerto del ssh por el 25:

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 para poder saltarlo, el puerto 53 no es al azar, ya que el único puerto UDP que no tendré bloqueado es 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) 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, ya que aunque el servidor OpenVPN internamente está usando el 1194 UDP, yo lo uso en el 53 UDP al exterior, por lo que hay que tener en cuenta hacer ese cambio a mano.

El resultado

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

Gracias a esto, pude saltar el Firewall del hotel y acceder a todos mis servicios con total normalidad gracias a que saltaba por este 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 y me fue rápido el montarlo y usarlo, así que con esto ya me valía. Lo que si me quedé con el gusanillo fue con el Mikrotik CHR, así que como me quedó crédito lo probaré.