Comment utiliser OpenVPN via un pare-feu restrictif?

13

Je suis actuellement dans la situation de tenter de configurer OpenVPN sur un VPS personnel, pour une connexion principalement via un pare-feu trop restrictif. Toutes les configurations mentionnées ci-dessous fonctionnent lorsqu'elles sont utilisées via une connexion à pare-feu raisonnable.

J'ai essayé:

  1. OpenVPN fonctionnant sur le port standard
  2. OpenVPN s'exécutant sur le port 443 (je démarre OpenVPN manuellement à partir de la ligne de commande sur le VPS et je vois que le serveur signale que la connexion est fermée presque immédiatement, je suppose que c'est le résultat de DPI sur le pare-feu)
  3. STunnel s'exécutant sur le port 443 pour accéder à OpenVPN et échapper à DPI. C'est le plus réussi et permet une connexion et un accès Internet via le VPN pendant ~ 10-20 secondes, avant que la connexion ne soit fermée de force.

Puis-je essayer autre chose?

RL Stine
la source
1
Cher seigneur, quel fournisseur de "VPS personnel" possédez-vous qui va si loin pour vous empêcher d'exécuter un VPN?! De plus, il n'est pas clair si vous essayez d'utiliser le VPS comme serveur OpenVPN, ou si vous voulez en faire le client?
allquixotic
Woops! J'aurais dû être plus clair. Le fournisseur VPS est Linode, et ils ne bloquent absolument rien. ;) Le problème est que je me connecte au VPN à partir d'un client (mon ordinateur portable) dont l'accès à Internet est sévèrement pare-feu.
RL Stine
1
Une solution VPN en général va être assez facilement détectée par tout ce qui fait une inspection des paquets avec état, comme vous l'avez laissé entendre. La déconnexion forcée pourrait être due à des méthodes d'analyse du trafic regardant la connexion https de Stunnel et allant "attendez une minute, les connexions standard de demande / réponse HTTP ne sont pas aussi bavardes!" - en substance, vous êtes coincé. Vous pouvez cependant essayer un proxy HTTPS; peut-être quelque chose où vous passez la demande en tant que corps HTTP (via SSL) à un servlet et il transmet votre demande ... o_O
allquixotic
3
Vous pouvez garder à l'esprit que le contournement des restrictions mises en œuvre par un pare-feu d'entreprise est probablement une violation de la politique de l'entreprise. Je vous suggère de parler à l'administrateur du pare-feu du problème.
Ansgar Wiechers

Réponses:

11

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

Visitez un site bien connu qui utilise SSL et vérifiez le certificat. Faites de même à 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 VPS pour que le trafic ressemble à des requêtes HTTP.

Si vous vous sentez fou, essayez l' iode .

LawrenceC
la source
2
+1, mais surtout pour l'iode!
0xC0000022L
5

Je pense que je sais pourquoi la méthode stunnel se comporte comme ça. C'est parce que vous définissez un "itinéraire statique" pour le serveur stunnel. Permettez-moi d'expliquer cela. Lorsque vous vous connectez à un serveur openvpn, il modifie votre table de routage et achemine tous vos paquets via le vpn, à l'exception des paquets openvpn. actualy openvpn ajoutera une route pour l'adresse IP de votre serveur. Mais lorsque vous utilisez stunnel pour vous connecter à votre serveur openvpn, vous connecterez openvpn à une interface de bouclage et il n'y a pas de route vers votre serveur en dehors de votre vpn, donc les paquets stunnel veulent aller au serveur et ils vont à votre vpn et vos paquets vpn vont étourdir :)

Vous devez donc ajouter une route à votre IP de serveur qui va en dehors de votre VPN (votre routeur domestique).

Et pour un problème avec le port de méthode 443, je veux dire que votre pare-feu peut utiliser SPI ou DPI et peut facilement créer des paquets openvpn différents à partir de paquets https (ssl). Le meilleur moyen est donc 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 ce message est trop ancien mais je cherchais une réponse sur le même problème depuis des semaines, donc je voulais partager ce que j'apprends à ce sujet)

Reza Askari
la source
Cela ne fournit pas de réponse à la question. Pour critiquer ou demander des éclaircissements à un auteur, laissez un commentaire sous son article - vous pouvez toujours commenter vos propres articles, et une fois que vous aurez une réputation suffisante, vous pourrez commenter n'importe quel article .
Ramhound
3

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

Sur l'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

Connectez-vous ensuite à 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 pour 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é voter la réponse ou le commentaire de Reza, mais cette règle de score de réputation m'a empêché.

0x00FE
la source
1

Je ne l'ai jamais essayé (alors permettez-moi de savoir si cela fonctionne!) Vous pouvez avoir besoin d'un hôte distant supplémentaire pour écouter sur 443 si vous n'en avez pas, mais il y a un exemple ici http://www.anonyproz.com/openvpnsshtunnel.pdf pour utiliser leur service proxy [Note de l'éditeur: ce lien Wayback Machine peut être plus sûr], mais c'est aussi googlable:

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

J'ai également connu des gens pour utiliser cette approche comme proxy, car leur employeur avait bloqué l'accès à des sites d'emploi tels que dice.com lorsqu'ils étaient populaires.

MDMoore313
la source