web-dev-qa-db-fra.com

Connectez-vous via deux clients VPN

Que se passe-t-il exactement si je me connecte via deux clients VPN sur mon ordinateur portable? Par exemple, je me connecte à l'aide de Cisco Any Connect, puis j'utilise un autre client VPN (tel que HotSpot Shield ou proXPN) pour me connecter via un autre tunnel.

Les données réelles seront-elles déchiffrées sur le premier serveur/site et seront-elles en clair/visibles? Je veux dire, cela se produira-t-il: les données sont cryptées sur mon ordinateur portable, envoyées au serveur 1, décryptées, puis cryptées, envoyées au serveur 2 où elles sont finalement décryptées. J'en doute, car le deuxième tunnel passe par mon client vers le serveur 2, pas serveur 1 vers serveur 2.

Ou ce sera un tunnel dans un tunnel? Donc: les données sont cryptées et encapsulées deux fois sur mon ordinateur portable, décryptées sur le serveur 1, mais ne sont pas encore en texte clair, et seraient acheminées vers le serveur 2 où elles seront finalement décryptées.

Ou l'ordinateur portable choisira-t-il simplement un tunnel (ce dernier?) Pour un VPN client-à-site normal? Ou le second connecté ne s'établira-t-il même pas en premier lieu?

38
Alaa Ali

Un client VPN typique fonctionne comme ceci: il se connecte au serveur, puis il demande au système d'exploitation de lui donner tous les paquets qui doivent être envoyés à n'importe quelle adresse dans un ensemble donné. Par exemple, supposons que le client VPN annonce qu'il doit gérer tous les paquets destinés à 10.0.0.0/8 (c'est-à-dire toutes les adresses IP qui commencent par "10"). Lorsque l'OS voit un paquet qui doit aller à l'adresse "u.v.w.x", il vérifie si "u" est "10"; si oui, alors il donne le paquet au VPN, qui fait sa magie avec lui et le transmet, sous cryptage lourd/MAC/quoi que ce soit au serveur; sinon, le paquet est émis "sur Internet" comme l'OS l'aurait fait sans le client VPN.

Les détails sur la façon dont ce système est mis en œuvre dépendent de la mise en œuvre du VPN (par exemple, il peut déclarer des "itinéraires" spécifiques; ou il pourrait intercepter tous les paquets sortants avec des règles de pare-feu et rediriger les paquets qui l'intéressent; ...).

Si vous avez deux clients VPN et que leurs "ensembles d'adresses annoncés" ne se chevauchent pas, il y a de fortes chances qu'ils cohabitent bien au niveau IP: chacun récupérera les paquets pour son propre virtuel réseau, laissant les autres paquets intacts. Cependant, ils pourraient également se battre pour les "ressources d'interception", ce qui pourrait entraîner la désactivation complète du premier client VPN.

D'un autre côté, si les deux VPN annoncent des ensembles d'adresses qui se chevauchent, les problèmes sont à peu près garantis. Si vous avez de la chance, le deuxième VPN refusera de s'exécuter avec un message explicite. Sinon, l'un des clients peut avoir la priorité, éventuellement par intermittence, et les choses seront étranges et déroutantes. Il est possible qu'un serveur VPN reçoive les paquets qui étaient dus au VPN autre, ce qui entraînerait une grave fuite de données.

Il y aura des problèmes avec DNS . Les applications et les humains ne veulent pas traiter avec adresses IP mais avec noms d'hôtes. Le DNS convertit les noms d'hôte en adresses IP. Un VPN étant un "réseau virtuel privé", il utilise des noms qui ne sont pas visibles dans le monde entier, DNS Internet. Par conséquent, un client VPN interceptera non seulement les paquets IP, mais également le système de résolution de noms, et redirigera certaines (sinon toutes) des demandes de résolution de noms vers un serveur DNS dédié sur le VPN.

Vos deux clients VPN seront en concurrence pour cette redirection. Les choses peut-être fonctionnent bien si les clients parviennent à rediriger les demandes pour certains domaines seulement. Mais il y a des chances que des détournements se produisent. Certains noms pour un VPN cesseront probablement d'être convertibles en adresses IP, ce qui entraînera une réduction des fonctionnalités. Peut-être, un VPN recevra des résolutions de noms pour le autre VPN, donc non seulement la fonctionnalité est cassée (parce que le DNS dans un VPN ne saura pas quoi faire avec les noms de l'autre VPN) mais certaines fuites de données privées d'un VPN à un autre (hôte noms sont rarement très sensibles, mais c'est toujours une fuite).

Dans cette dernière situation, le VPN qui reçoit des demandes de résolution de noms pour les noms privés de l'autre VPN est en position idéale pour répondre avec des réponses DNS falsifiées et rediriger tout le trafic de l'autre VPN vers lui-même.

Alors ne faites pas ça . L'exécution simultanée de plusieurs clients VPN est une source de problèmes, d'échecs difficiles à diagnostiquer et de fuites de données potentielles.


Pour éviter les problèmes avec plusieurs VPN , vous devez vous efforcer d'utiliser des formes de VPN plus "contrôlées". Par exemple, un proxy SOCKS avec ssh. Cela vous permettrait d'exécuter un navigateur Web qui redirige tout son trafic vers un autre hôte (le "serveur VPN") tout en laissant le reste de la machine (et, surtout, d'autres instances de navigateur) inchangé. Voir cette réponse par exemple. Certains puristes disent qu'un tel proxy est pas un VPN, mais à de nombreuses fins pratiques (tout ce qui est basé sur le Web, vraiment), cela est fonctionnellement équivalent. Voir également l'alternative avec les tunnels basés sur les ports.

J'avais l'habitude de faire beaucoup de choses à la fois (une douzaine de tunnels basés sur les ports, et aussi le proxy SOCKS, et tout fonctionnait bien). La solution SOCKS fonctionne également bien pour la résolution de noms: les demandes de résolution de noms du navigateur Web passeront par le tunnel, pour être résolues de l'autre côté (c'est-à-dire dans le VPN), sans toucher à la configuration DNS locale. Les tunnels basés sur les ports nécessitent une déclaration de nom local statique.

34
Thomas Pornin

Par exemple, je me connecte à l'aide de Cisco Any Connect, puis j'utilise un autre client VPN (tel que HotSpot Shield ou proXPN) pour me connecter via un autre tunnel.

Je suppose que vous utilisez les deux clients sur un seul ordinateur, vous avez donc deux tunnels parallèles, pas l'un dans l'autre (comme vous le feriez si vous vous connectiez de votre ordinateur à Server1, et vous avez lancé VPN2 pour connecter Server1 à Server2).

Dans le premier scénario (parallèle), chaque client VPN créera sa propre interface virtuelle, avec sa propre adresse, masque de réseau, passerelle distante et routage associé.

Toutes les données envoyées via un tunnel seront cryptées par ce tunnel et aucun autre, donc la question devient: comment votre ordinateur détermine-t-il quelles données envoyer quel tunnel?

Cela se fait via des règles de routage sur le client. Par exemple, vous pouvez recevoir l'adresse 192.168.42.17/24 sur VPN1 et l'adresse 192.168.77.13/24 sur VPN2. Si vous essayez de vous connecter à l'hôte .42.33, vous passerez par VPN1, et VPN2 n'en saura rien.

Maintenant, 192.168.42.0/24 pourrait être uniquement le réseau privé utilisé entre vous et le serveur, c'est-à-dire celui attribué par Server1 à tous ses clients VPN; le vrai réseau desservi par Server1 pourrait être 10.20.30.0/24, et donc Server1 ajouterait également un routage à 10.20.30.0/24 via 192.168.42.1 ; puis lorsque vous essayez de vous connecter à 10.20.30.137, cette connexion passera par VPN1, sera cryptée, et encore VPN2 ne saurait même pas que cela se produit (pourquoi devrait-il le faire?).

Problèmes possibles: que se passe-t-il si les deux VPN1 et VPN2 diffusent un itinéraire pour le même sous-réseau, qui ne correspond pas au même hôtes physiques? Par exemple, vous avez deux bureaux avec la même configuration exacte , et ServerAtOffice1 a l'adresse 10.20.30.137, tandis que ServerAtOffice2 a l'adresse 10.20.30.195. Étant donné que ces deux réseaux ne se parlent jamais , cela n'entraîne aucun conflit.

Jusqu'à ce que vous lanciez VPN1, qui indique que 10.20.30.0 passe par VPN1, puis que vous lancez également VPN2, qui dit que non, 10.20.30.0 passe par VPN2 et personne d'autre.

Ce qui se passe dans ce cas dépend du client VPN. Un client intelligent vous dirait "Hé, j'étais sur le point de router 10.20.30.0 mais, que savez-vous?, Cette route va déjà ailleurs, et peut-être que je pourrais le notifier à mon administrateur système, juste au cas où vous seriez à quelque chose de fringant ".

Ou vous pourriez avoir deux clients stupides, et le dernier à écraser les demandes de configuration de l'autre devrait en profiter.

Ou quelque chose d'encore plus étrange pourrait continuer, et les connexions pourraient commencer à fonctionner puis mourir en désordre quelques paquets plus tard.

Une dernière possibilité pourrait être que les deux clients souhaitent configurer par eux-mêmes une route par défaut - une pour les adresses que vous ne connaissez pas.

Ensuite, une fois connecté à Server1, toute votre navigation Internet peut être cryptée via Server1. Ensuite, vous lancez également VPN2, et la navigation "par défaut" est acheminée via VPN2. Désormais, toutes vos requêtes Google concernant le client n ° 1 sont acheminées, en clair, via le réseau du client n ° 2, des pare-feu, des analyseurs de paquets, etc., etc. ce qui pourrait signifier la fin des ennuis, selon votre rôle et l'amabilité des termes des deux clients.

Tweaks

Comment pourrais-je faire une autre version, pas les deux clients en parallèle? Si j'ai DD-WRT en cours d'exécution sur un routeur ALPHA qui a un PPTP serveur VPN en cours d'exécution,

à qui vous vous connectez depuis le client CHARLIE,

puis-je le connecter au serveur VPN BRAVO? Est-ce que cela enchaîne les tunnels? Dans tous les cas, le serveur final verrait mon trafic provenant du routeur entre les deux, non? –- László

Nous pouvons avoir deux scénarios ici (j'ai ajouté des noms à vos machines).

Dans le premier scénario ALPHA est lui-même aussi client DELTA du serveur BRAVO. Dans ce cas, le paquet de CHARLIE est normalement masqué par le serveur ALPHA, de sorte que tout client desservi par BRAVO voit les paquets comme provenant de DELTA. Cela peut être difficile ou impossible à faire si les clients de BRAVO ont le même schéma que les clients d'ALPHA, car dans ce cas, vous pourriez avoir une ambiguïté quant à qui a, disons, l'adresse 192.168.112.17; est-ce le 17e client d'ALPHA ou est-ce le 17e client de BRAVO?

Dans le deuxième scénario, ALPHA ne fait que router, de sorte que BRAVO est désormais disponible via le VPN d'ALPHA. Donc, vous ouvrez n deuxième tunnel VPN à l'intérieur du premier, et vous êtes attribué un deuxième adresse IP par BRAVO. Vous êtes maintenant à la fois client CHARLIE du serveur ALPHA et (à l'insu d'ALPHA) client DELTA du serveur BRAVO.

Les clients de BRAVO vous verront comme DELTA, tandis que BRAVO sera bien sûr conscient que vous êtes le client d'ALPHA CHARLIE.

Encore une fois, vous pouvez avoir des problèmes ici si les adresses et leur conflit de routage (par exemple, la connexion à BRAVO repose sur une route par défaut, mais BRAVO installe lui-même sa propre route par défaut lors de la connexion , remplaçant celui par ALPHA).

De plus (même si de nos jours cela devient hors de propos), la charge sur ALPHA est plus faible dans ce deuxième scénario, et la charge sur votre CPU est proportionnellement plus élevée (tous les paquets du réseau BRAVO sont cryptés par BRAVO-Driver, puis transmis à ALPHA-Driver et rechiffré , avant d'être finalement transmis à ADSL-Driver et envoyé en chemin).

1
LSerni

Théoriquement, ce sera un tunnel dans un tunnel. Le premier tunnel se situe entre votre ordinateur et le premier point de terminaison VPN. Le deuxième tunnel traverse le premier tunnel vers le premier point de terminaison VPN où il quitte le premier tunnel, puis va vers le deuxième point de terminaison VPN.

Je dis théoriquement parce que je pense que cela dépend de la façon dont les clients VPN configurent les connexions et la table de routage. Le deuxième client VPN pourrait configurer la table de routage et les métriques de telle manière que même si vous avez la configuration théorique du tunnel dans le tunnel par le dessus, les données seront envoyées au premier tunnel et le deuxième tunnel ne sera pas utilisé du tout.

0
Cristian Dobre

Deux cas, deux possibilités:

Vous pouvez initier une connexion client de votre ordinateur portable à le Cisco , qu'une seconde connexion de le Cisco à la cible finale:

<laptop> ---- <Cisco> ... <Cisco> ---- <final>

Dans ce cas, les données transitent en clair sur Cisco Host.

Ou vous pouvez établir une connexion client à partir de votre ordinateur portable à le Cisco , qu'une deuxième connexion de votre ordinateur portable à la cible finale:

<laptop> ---- <Cisco> .... <final>
<laptop> ----------------- <final>

Dans ce cas (alors que les deux tunnels de chiffrement sont lancés successivement depuis le même hôte: le ordinateur portable ), ce sera un tunnel within a tunnel et Cisco ne verra pas les données non chiffrées.

Nota: En cela,

----  mean encrypted connection and
....  mean unencrypted (local or network) connection
0
F. Hauri