web-dev-qa-db-fra.com

Comment utiliser OpenVPN à travers un pare-feu restrictif?

Je suis actuellement en train d'essayer de configurer OpenVPN sur un VPS personnel, pour une connexion principalement à travers un pare-feu trop restrictif. Toutes les configurations mentionnées ci-dessous fonctionnent lorsqu'elles sont utilisées via une connexion avec un pare-feu raisonnable.

J'ai essayé:

  1. OpenVPN s'exécutant sur le port standard
  2. OpenVPN s'exécutant sur le port 443 (je lance OpenVPN manuellement à partir de la ligne de commande sur le SMV et constate que le serveur signale que la connexion est fermée presque immédiatement; je suppose que cela est dû au DPI sur le pare-feu)
  3. STunnel s'exécutant sur le port 443 pour accéder à OpenVPN et échapper à DPI. Ceci est le plus réussi et permet une connexion et un accès Internet via le VPN pendant environ 10 à 20 secondes, avant que la connexion ne soit fermée de force.

Y a-t-il autre chose que je puisse essayer?

13
R.L. Stine

Les connexions coupées après un certain temps indiquent parfois un type de limite octets par seconde. Essayez de voir si le ralentissement de votre connexion VPN fonctionne. De même, si OpenVPN est configuré pour UDP, essayez TCP (443 UDP peut être bloqué alors que 443 TCP risque de ne pas être détecté).

Visitez un site bien connu qui utilise SSL et vérifiez le certificat. Puis fais la même chose à la maison. S'ils ne correspondent pas, votre emplacement utilise un proxy SSL HTTPS transparent et peut réellement voir votre trafic HTTPS.

Il est possible que quelque chose qui n'est pas le port 443 ne soit pas surveillé de si près. Essayez 22.

Cela peut sembler stupide mais essayez de le faire sur le port 80 et voyez ce que vous obtenez. Vous pouvez également essayer de configurer un tunnel HTTP entre vous et le SMV pour que le trafic ressemble à des requêtes HTTP.

Si vous vous sentez fou, essayez iode .

10
LawrenceC

Je pense que je sais pourquoi la méthode Stunnel se comporte comme ça. C'est parce que vous avez défini une "route statique" pour le serveur Stunnel. Laisse-moi expliquer ça. Lorsque vous vous connectez à un serveur openvpn, votre table de routage est modifiée et tous vos paquets sont acheminés via le vpn, à l'exception des paquets openvpn. actualy openvpn ajoutera une route pour votre adresse IP de serveur. Mais lorsque vous utilisez stunnel pour vous connecter à votre serveur openvpn, vous connectez openvpn à une interface de bouclage et il n’existe aucune route vers votre serveur en dehors de votre vpn. à stunnel :)

Vous devez donc ajouter une route à votre adresse IP de serveur qui sort de votre vpn (votre routeur domestique).

Et pour un problème avec le port de méthode 443, je veux dire que peut-être que votre pare-feu utilisant SPI ou DPI, peut facilement créer des paquets OpenVPN différents à partir de paquets https (SSL). Il est donc préférable d’utiliser stunnel ou, si le pare-feu bloque les paquets SSL, il est préférable d’utiliser obfsproxy ou fteproxy pour le contourner.

(Je sais que cet article est trop ancien, mais je cherchais une réponse sur le même problème pendant des semaines. Je voulais donc partager ce que j'ai appris à ce sujet.)

4
Reza Askari

La réponse de Reza Askari était exactement la réponse à la troisième question. Cela se produit à la fois sur mon ordinateur Linux et sur Android.

Sur ordinateur, avant de vous connecter à OpenVPN via

Sudo openvpn --config configFile.ovpn

Vous devez ajouter une règle pour supprimer le serveur stunnel du tunnel OpenVPN.

Sudo /sbin/ip route add stunnel_ip via default_gateway_ip

Ensuite, connectez-vous à votre serveur OpenVPN. Une fois terminé, vous pouvez supprimer cette règle en:

Sudo /sbin/ip route del stunnel_ip

Pour rendre les choses plus faciles pour ne pas oublier, créez un script Shell qui ajoutera la règle et exécutera OpenVPN. Lorsque OpenVPN se fermera, la règle sera supprimée:

Sudo /sbin/ip route add stunnel_ip via default_gateway_ip

Sudo openvpn --config configFile.ovpn

Sudo /sbin/ip route del stunnel_ip

Sur Android, utilisez le client "OpenVPN for Android" de "Arne Schwabe" et "SSLDroid" de "Balint Kovacs".

Ensuite, dans le client OpenVPN, excluez "SSLDroid" du profil VPN qui passe par le stunnel.

J'aurais adoré y retourner la réponse ou le commentaire de Reza, mais cette règle du score de réputation m'empêchait.

3
0x00FE

Je ne l’ai jamais essayé (je sais donc si ça marche!), Mais essayez @ tunneling SSH sur 443 et lancez votre OpenVPN dans le tunnel. Vous aurez peut-être besoin d'un hôte distant supplémentaire pour écouter 443 si vous n'en avez pas, mais il y a un exemple ici http://www.anonyproz.com/openvpnsshtunnel.pdf pour avoir utilisé leur service de proxy [ Note de l'éditeur: ce lien de Wayback Machine peut être plus sûr], mais c'est aussi Googlable:

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

J'ai également rencontré des personnes qui utilisaient cette approche comme proxy car leur employeur avait bloqué l'accès à des sites d'emploi tels que dice.com dès qu'ils étaient populaires.

1
MDMoore313