¿Cómo usar OpenVPN a través de un firewall restrictivo?

13

Actualmente estoy en la situación de intentar configurar OpenVPN en un VPS personal, para la conexión principalmente a través de un firewall demasiado restrictivo. Todas las configuraciones mencionadas a continuación funcionan cuando se utilizan a través de una conexión razonablemente protegida.

Yo he tratado:

  1. OpenVPN ejecutándose en el puerto estándar
  2. OpenVPN se ejecuta en el puerto 443 (inicio OpenVPN manualmente desde la línea de comandos en el VPS y veo que el servidor informa que la conexión se cierra casi de inmediato, supongo que esto es un resultado de DPI en el firewall)
  3. STunnel que se ejecuta en el puerto 443 para acceder a OpenVPN y evadir DPI. Este es el más exitoso y permite una conexión y acceso a Internet a través de la VPN durante ~ 10-20 segundos, antes de que la conexión se cierre por la fuerza.

¿Hay algo más que pueda intentar?

RL Stine
fuente
1
Estimado señor, ¿qué proveedor de "VPS personal" tiene que haga todo lo posible para evitar que ejecute una VPN? Además, no está claro si está intentando utilizar el VPS como un servidor OpenVPN, o si desea que sea el cliente.
allquixotic
Woops! Debería haber sido más claro. El proveedor de VPS es Linode, y definitivamente no están bloqueando nada. ;) El problema es que me estoy conectando a la VPN desde un cliente (mi computadora portátil) cuyo acceso a Internet está severamente protegido.
RL Stine
1
Como lo insinuó, una solución VPN en general se detectará con bastante facilidad por cualquier cosa que realice una inspección de paquetes con estado. La desconexión forzosa podría deberse a los métodos de análisis de tráfico que miran la conexión https de stunnel y dicen "¡esperen un minuto, las conexiones estándar de solicitud / respuesta HTTP no son tan habladoras!" - en esencia estás atrapado. Sin embargo, puede probar un proxy HTTPS; quizás algo en el que pasa la solicitud como un cuerpo HTTP (sobre SSL) a un servlet y reenvía su solicitud ... o_O
allquixotic
3
Es posible que desee tener en cuenta que eludir las restricciones implementadas por un cortafuegos de la empresa probablemente sea una violación de la política de la empresa. Le sugiero que hable con el administrador del firewall sobre el problema.
Ansgar Wiechers

Respuestas:

11

Las conexiones que se cortan después de un período de tiempo a veces indican un tipo de límite de bytes por segundo. Intente ver si la ralentización de su conexión VPN funciona. Además, si tiene OpenVPN configurado para UDP, pruebe con TCP (443 UDP puede estar bloqueado mientras que 443 TCP puede pasar desapercibido).

Visite un sitio conocido que utiliza SSL y verifique el certificado. Luego haz lo mismo en casa. Si no coinciden, su ubicación está utilizando un proxy SSL HTTPS transparente y puede ver su tráfico HTTPS.

Es posible que algo que no sea el puerto 443 no se observe tan de cerca. Prueba 22.

Puede sonar estúpido, pero intenta hacerlo por el puerto 80 y mira qué obtienes. También puede intentar configurar un túnel HTTP entre usted y el VPS para que el tráfico se vea como solicitudes HTTP.

Si te sientes loco, prueba el yodo .

LawrenceC
fuente
2
+1, ¡pero especialmente para el yodo!
0xC0000022L
5

Creo que sé por qué el método del aturdimiento se comporta así. Es porque usted establece una "ruta estática" para el servidor stunnel. Déjame explicarte eso. Cuando se conecta a un servidor openvpn, cambia su tabla de enrutamiento y enruta todos sus paquetes a través de vpn, excepto los paquetes openvpn. actualmente openvpn agregará una ruta para la dirección IP de su servidor. Pero cuando usa stunnel para conectarse a su servidor openvpn, conectará openvpn a una interfaz de bucle invertido y no hay una ruta a su servidor fuera de su vpn, por lo que los paquetes stunnel quieren ir al servidor y van a su vpn y sus paquetes vpn van aturdir :)

Por lo tanto, debe agregar una ruta a la IP de su servidor que salga de su VPN (enrutador doméstico).

Y para el problema con el puerto 443 del método, puedo decir que tal vez el cortafuegos use SPI o DPI y pueda crear fácilmente diferentes paquetes openvpn a partir de paquetes https (ssl). Entonces, la mejor manera es usar stunnel, o si el firewall bloquea los paquetes SSL, es mejor usar obfsproxy o fteproxy para evitarlo.

(Sé que la publicación es demasiado antigua pero estuve buscando respuestas sobre el mismo problema durante semanas, así que quería compartir lo que aprendí sobre esto)

Reza Askari
fuente
Esto no proporciona una respuesta a la pregunta. Para criticar o solicitar una aclaración de un autor, deje un comentario debajo de su publicación; siempre puede comentar sus propias publicaciones, y una vez que tenga la reputación suficiente , podrá comentar cualquier publicación .
Ramhound
3

La respuesta de Reza Askari fue exactamente la respuesta a la tercera pregunta. Esto ha estado sucediendo tanto en mi computadora Linux como en Android.

En la computadora, antes de conectarse a OpenVPN a través de

sudo openvpn --config configFile.ovpn

Debe agregar una regla para eliminar el servidor stunnel del túnel OpenVPN.

sudo /sbin/ip route add stunnel_ip via default_gateway_ip

Luego conéctese a su servidor OpenVPN. Cuando haya terminado, puede eliminar esa regla:

sudo /sbin/ip route del stunnel_ip

Para hacer las cosas más fáciles para que no olvides, crea un script de shell que agregará la regla y ejecutará OpenVPN, cuando OpenVPN salga, la regla se eliminará:

sudo /sbin/ip route add stunnel_ip via default_gateway_ip

sudo openvpn --config configFile.ovpn

sudo /sbin/ip route del stunnel_ip

En Android, use el cliente "OpenVPN para Android" de "Arne Schwabe" y "SSLDroid" de "Balint Kovacs".

Luego, en el cliente OpenVPN, excluya "SSLDroid" del perfil VPN que atraviesa el aturdimiento.

Me hubiera encantado votar la respuesta o comentario de Reza allí, pero esta regla de puntuación de reputación me lo impidió.

0x00FE
fuente
1

Nunca lo he intentado (¡así que déjame saber si funciona!), Pero dale una oportunidad @ usando ssh tunneling sobre 443 y ejecuta tu OpenVPN a través del túnel. Es posible que necesite un host remoto adicional para escuchar en 443 si no tiene uno, pero hay un ejemplo aquí http://www.anonyproz.com/openvpnsshtunnel.pdf para usar su servicio proxy [Nota del editor: este enlace de Wayback Machine puede ser más seguro], pero esto también es de Google:

https://www.google.com/search?q=ssh%20tunnel%20openvpn .

También he conocido a personas que usan este enfoque como proxy porque su empleador bloqueó el acceso a sitios de trabajo como dice.com cuando eran populares.

MDMoore313
fuente