Usando el cliente de OpenVPN a través de un proxy

Disclaimer: Solo para uso educacional, no me hago responsable por el uso que se le de al presente manual.

Introducción

En esta ocasión no explicaré como se instala, configura y despliega un servidor de OpenVPN, pues eso es para otro post, o de alguien más. En este caso mostraré como usar el cliente de OpenVPN cuando nos encontramos detrás de un proxy (la mayoría de los sysadmin que conozco).

A veces como sysadmin nos encontramos con la necesidad de acceder a un servicio, por ejemplo el de actualizar las llaves públicas de nuestro sistema con GPG (con servidores que usen el protocolo hkp por el puerto 11371) o que tengamos que clonar un repositorio GIT (usando su propio protocolo por el puerto 9418) con el último parche de algun servicio crítico de nuestra red (y los desarrolladores solo lo brinden por protocolo GIT, no HTTP o HTTPs). Son muchos los casos en que por la propia seguridad y actualización de sistemas debemos acceder por puertos diferentes al 80 o 443 y aquí es donde nos enfrentamos a los proxy muy restrictivos.

Me centraré en el cliente para Debian, pues es la distribución de Linux que utilizo; pero para los demás sistemas operativos es análogo, pues el fichero de configuración es común.

Diferencia entre proxy HTTP y SOCKS

Seguro han visto esta diferenciación en alguna que otra configuración de los programas a la hora de definir el proxy, pues estos 2 tipos de proxy son muy diferentes:

Proxy HTTP

Este tipo como su nombre lo indica, es pensado para la navegación web, pues en realidad lo que se hace es enviar la solicitud de la página a navegar (o acceder) al servidor proxy y éste es quien realiza la petición, cacheando o no la respuesta, para luego retornarla al cliente.

Proxy SOCKS

Este tipo de proxy es más directo, en el sentido que, como su nombre lo indica, conecta directamente el cliente con el servidor, sirviendo simplemente de pasarela, es ampliamente utilizado para simular una conección directa. Por ejemplo, la aplicación TOR es un proxy SOCKS.

Este es de los proxy que menos se instalan en la infraestructura, puesto que el otro tipo (HTTP) es más enfocado a la navegación.

Caso HTTPS

En el caso del protocolo HTTPS (generalmente puerto TCP 443), un proxy SOCKS no tiene problemas, puesto que comunica directamente los dos nodos (como se definía anteriormente); pero un proxy HTTP, al hacer de puente, no pudiera en teoría funcionar, puesto que tendría que recibir las peticiones para poder resolverlas, caso en que el HTTPS por ser un protocolo cifrado entre el servidor remoto y el cliente no lo permitiría sin un ataque de MITM.

Para este caso los proxy HTTP (y los navegadores o programas clientes) utilizan un método llamado CONNECT que no es más que pedirle una comunicación directa (tipo SOCKS) entre los 2 nodos. Una vez establecida la comunicación, es un enlace directo entre el cliente y el servidor, por lo que todo lo que se transmite entre los extremos es cifrado y ajeno al proxy.

Manos a la obra

Para que OpenVPN se pueda comunicar a través de un proxy HTTP, éste debe permitir el método CONNECT, por lo que debemos tener un servidor remoto que esté escuchando por un puerto por el cuál el proxy permita la comunicación directa (como el TCP 443).

Hay muchos sitios en Internet que muestran listas de servidores de OpenVPN libres, como

solo bastaría descargar su fichero de configuración y debajo de remote vpn_hostname 443 tcp adicionarle:

http-proxy 1.2.3.4 8080
http-proxy-retry

Siendo 1.2.3.4 el ip real del proxy y 8080 el puerto.

en caso de necesidad de autenticación:

Crearemos un fichero que contiene el usuario y el password, por ejemplo en /root/auth :

user
pass

Y le indicamos a OpenVPN que lo utilice para la autenticación:

http-proxy 1.2.3.4 8080 /root/auth auto
http-proxy-retry

De esta manera solo quedaría ejecutar nuestro cliente OpenVPN con la configuración

$ openvpn config.ovpn

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 4.7 / 5. Recuento de votos: 6

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Sobre Luis Felipe Domínguez Vega 10 artículos
Administrador de Sistemas y Programador entusiasta de tecnologías libres.

6 comentarios

  1. Firefox 72.0 Firefox 72.0 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0

    hola estoy buscando aprender como se comfigura el vpn par poder usar la nabegacion nacional con salida a internet

  2. Google Chrome 99.0.4844.74 Google Chrome 99.0.4844.74 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36

    pudiste acceder a ese servicio?

  3. Google Chrome 96.0.4664.45 Google Chrome 96.0.4664.45 Android 9 Android 9
    Mozilla/5.0 (Linux; Android 9; SM-G955U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Mobile Safari/537.36

    Me gusta aprender sobre esto. He visto que muchos de alguna forma usan navegación nacional en Cuba para acceder a internet con OpenVPN ¿Que trucos usan y como lo hacen? Gracias por enseñarme siempre algo nuevo!

  4. Firefox 89.0 Firefox 89.0 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0

    buenos dias amigo, lei tu post y lo que te voy a preguntar tiene alguna relacion con el mismo, estoy en una conexion sin proxy y con control del servidor de internet es decir qe puedo abrir y cerrar puerto si asi lo necesito, en una pc de mi lan tengo un servidor openvpn, la configuracion para servidor y cliente la probe en otra lan y se conectan sin problemas, pero cuando trato conectarme desde internet a mi servidor openvpn no ocurre lo mismo, en mi servidor tengo abierto el puerto y map para la ip local donde esta el server pero nada no funcnioa ….que pudieras recomendarme

    • Google Chrome 98.0.4758.82 Google Chrome 98.0.4758.82 Windows 10 x64 Edition Windows 10 x64 Edition
      Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36

      Yo creo que etexa esta bloqueando el vpn x q ya no me puedo conectar con mi servidor por el internet. alguna sugerencia?

  5. Opera 55.0.2994.61 Opera 55.0.2994.61 Windows 7 Windows 7
    Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36 OPR/55.0.2994.61

    Saludos amigo. Deseo hacerle una consulta..

    Entiendo que un Proxy cambia la IP para acceso Web, pero para cambiar la IP al momento de usar un emulador como Bluestacks y desear que cambie la IP, necesitaría un VPN.

    Mi consulta es:

    Si tengo un servicio Proxy que cambie de IP mi dirección, puedo hacer que esa IP funcione en Bluestacks (O en Virtualbox)? Y sería posible crear un VPN a partir de un Proxy?

    Gracias de antemano.

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*