Utiliser la connexion VPN uniquement pour les applications sélectionnées

39

J'ai accès à un VPN et je souhaite l'utiliser uniquement pour certaines applications, pas toutes.

Par exemple:
si je me connecte à un VPN, je souhaite que seules les applications Opera et Newsbin utilisent cette connexion VPN. Toutes les autres applications, comme par exemple Outlook, devraient utiliser la connexion Internet normale (pendant que le VPN est connecté / ouvert).

Afaik ce n'est pas possible, mais je ne suis pas totalement sûr. Donc donc ma question: est-ce faisable?

dirkt
la source

Réponses:

-1

Non ça ne l'est pas. Eh bien, ne pas utiliser de moyens normaux. Le routage est le routage. Le routage fonctionne plus bas dans le modèle OSI. Ce que vous devez faire, c'est qu'il soit conscient au niveau de l'application (plus haut) afin qu'il puisse détecter le programme que vous utilisez, etc. Les routeurs NORMAL ne vous permettent pas de configurer des itinéraires en fonction des applications ou des numéros de port.

Je pense que c'est possible cependant. Les routeurs peuvent voir les ports afin que vous puissiez les filtrer par numéro de port et envoyer le trafic sur différentes routes. je suis sûr que j'ai lu quelque chose il y a quelque temps avec les routeurs Cisco qui peuvent le faire. Cependant, ils ne sont pas bon marché et ce sont des routeurs professionnels qui nécessitent beaucoup de configuration et je suppose que vous voulez quelque chose de simple pour un usage domestique.

En résumé, c'est le routeur qui aurait besoin de cette fonctionnalité et vos marais standard pour un usage domestique, même les entreprises ne prennent pas en charge ces fonctionnalités. Seule la gamme avancée de Cisco et Sonicwalls offre ces capacités.

Mucker
la source
36

Il est possible d'accomplir cela, au moins sous Linux (et je pense aussi à BSD et OS X). Vous pouvez le faire en:

  • Créez un utilisateur exra pour tout le trafic VPN.
  • Créez une table de routage supplémentaire avec 1 route par défaut via le VPN.
  • Configurez Netfilter via Iptables pour utiliser l'autre table de routage pour tout le trafic provenant d'un ID utilisateur spécifique.
  • Exécutez les applications qui devraient utiliser le VPN sous leur propre utilisateur. Par exemple avec 'sudo'.

Il y a des scripts pour accomplir les étapes ci-dessus ici ou il y a un autre guide ici .

Voici un guide détaillé pour acheminer la transmission via un VPN (en utilisant un serveur VPN que vous possédez.

Freeaqingme
la source
Beaucoup plus facile sous Linux: créez un espace de noms réseau, connectez VPN à cet espace de noms, exécutez des applications qui devraient utiliser l'espace de noms dans le VPN. Vous pouvez même exécuter deux copies de la même application, l'une en utilisant le VPN et l'autre en utilisant la connexion directe.
dirkt
15

Vous pouvez utiliser le pare-feu Windows pour accomplir cela (à condition d'utiliser Win 7 ou Vista) - j'ai écrit un guide à ce sujet

  1. Connectez-vous à votre VPN comme vous le feriez normalement.

  2. Ouvrez le Centre Réseau et partage - faites un clic droit sur l'icône de connexion Internet dans la barre des tâches et choisissez «Ouvrir le Centre Réseau et partage» (voir ci-dessous)

  3. Vous devriez voir (au moins) deux réseaux répertoriés sous "Afficher vos réseaux actifs" - votre connexion VPN et un appelé "Réseau" - alias votre connexion FAI. Assurez-vous que votre VPN est un "réseau public" et que votre connexion FAI est "réseau domestique". Si vous devez modifier l'une ou l'autre des connexions, cliquez dessus et une fenêtre d'options apparaîtra (voir ci-dessous).

  4. Accédez au Panneau de configuration et cliquez sur Système et sécurité (voir ci-dessous).

  5. Dans la fenêtre résultante, cliquez sur Pare-feu Windows (voir ci-dessous).

  6. Dans la fenêtre Pare-feu Windows, cliquez sur Paramètres avancés dans le volet gauche (voir ci-dessous). Remarque: vous devez être connecté en tant qu'administrateur pour apporter des modifications aux paramètres du pare-feu.

  7. Vous devriez voir une fenêtre intitulée Pare-feu Windows avec sécurité avancée. Dans cette fenêtre, cliquez sur Règles entrantes (voir ci-dessous).

  8. Dans le volet droit, vous verrez une option pour une nouvelle règle. Cliquez dessus (voir ci-dessous).

  9. Dans l'Assistant Nouvelle règle entrante (qui devrait apparaître), procédez comme suit:

    • Choisissez Programme et cliquez sur Suivant.

    • Choisissez le programme auquel vous souhaitez bloquer tout le trafic, sauf sur la connexion VPN, puis cliquez sur Suivant.

    • Choisissez Bloquer la connexion.

    • Cochez Domaine et Privé. Assurez-vous que Public n'est pas coché.

  10. Répétez l'étape 9 pour les règles sortantes.

préambule
la source
11
Cela répond-il réellement à la question? Oui, cela empêche l'application de fonctionner si elle n'est pas sur le VPN, mais tout le trafic passe toujours par le VPN, n'est-ce pas?
Jason Coyne
3
@pramble Ainsi tout le trafic passe-t-il toujours par le vpn?
nsij22
Semble fonctionner. Je viens de le tester ..
Faiz
Cela ne le résout pas. Il s'agit d'un scénario très simple. Je veux que toutes mes affaires liées au travail passent par le VPN (connexions SQL Server, Slack, etc.), mais je veux que mon navigateur Web (Facebook, Soundcloud, etc., essentiellement tout le trafic du port 80) ne passe PAS par le VPN . Windows craint si ce n'est pas possible.
Triynko
@Triynko Votre scénario est très différent du scénario demandé par OP. Après vous être connecté au VPN, vous pouvez simplement définir les routes correspondantes vers vos éléments liés au travail, c'est-à-dire utiliser la passerelle VPN pour tous les sous-réseaux ou IP liés au travail. Le routage du trafic provenant d'applications spécifiques est plus difficile à réaliser.
speakr
4

Vous pouvez le faire avec des espaces de noms réseau sur GNU / Linux.

Voici comment exécuter OpenVPN et une seule application dans un espace de noms distinct:

Créez l'espace de noms du réseau net:

ip netns add myvpn

Démarrez l'interface de bouclage dans l'espace de noms (sinon beaucoup de choses ne fonctionnent pas comme prévu…)

ip netns exec myvpn ip addr add 127.0.0.1/8 dev lo
ip netns exec myvpn ip link set lo up

Créez des interfaces réseau virtuelles qui permettront à OpenVPN (dans l'espace de noms) d'accéder au réseau réel et configurez l'interface dans l'espace de noms (vpn1) pour utiliser l'interface hors de l'espace de noms (vpn0) comme passerelle par défaut

ip link add vpn0 type veth peer name vpn1
ip link set vpn0 up
ip link set vpn1 netns myvpn up
ip addr add 10.200.200.1/24 dev vpn0
ip netns exec myvpn ip addr add 10.200.200.2/24 dev vpn1
ip netns exec myvpn ip route add default via 10.200.200.1 dev vpn1

Activez le routage IPv4 et le NAT pour l'interface dans l'espace de noms. Comme mon interface par défaut est une interface sans fil, j'utilise wl + (qui peut correspondre à wlan0, wlp3s0, etc.) dans iptables pour l'interface sortante; si vous utilisez une interface filaire, vous devriez probablement utiliser en + (ou br + pour une interface pontée)

iptables -A INPUT \! -i vpn0 -s 10.200.200.0/24 -j DROP
iptables -t nat -A POSTROUTING -s 10.200.200.0/24 -o wl+ -j MASQUERADE
sysctl -q net.ipv4.ip_forward=1

Configurer le serveur de noms à utiliser à l'intérieur de l'espace de noms

mkdir -p /etc/netns/myvpn
echo 'nameserver 8.8.8.8' > /etc/netns/myvpn/resolv.conf

Presque terminé, nous devrions maintenant avoir un accès complet au réseau dans l'espace de noms

ip netns exec myvpn ping www.google.com

Enfin, démarrez OpenVPN dans l'espace de noms

ip netns exec myvpn openvpn --config /etc/openvpn/myvpn.conf

Une fois que tun0 est en place dans l'espace de noms, vous êtes prêt à démarrer le programme que vous vouliez!

while ! ip netns exec myvpn ip a show dev tun0 up; do sleep .5; done
ip netns exec myvpn sudo -u $MYSELF popcorntime

Article SOURCE.

Il existe également un script wrapper dans l'article source que vous pouvez adapter à vos besoins.

PocketSam
la source
3

Je l'ai fait sous Windows. L'idée est de lier les packages réseau sortants à l'interface VPN. Les gens suggèrent ForceBindIP pour cela, mais grâce à cette réponse, j'ai une idée d'utiliser un proxy. L'inconvénient de cette méthode est que vos applications doivent avoir un support proxy ou vous devrez utiliser un proxy (voir ici et ici ). L'avantage est que de cette façon, vous pourrez limiter l'utilisation du VPN dans le navigateur à des domaines spécifiques en utilisant FoxyProxy ou des modules complémentaires similaires.

J'utilise 3proxy en mode SOCKS et lie son interface externe à l'IP du VPN. OpenVPN est utilisé pour la connexion VPN.

Dans mon fichier .ovpn ( client, dev tun) j'ai ajouté ces lignes:

route-nopull
route 0.0.0.0 0.0.0.0 vpn_gateway
pull-filter ignore "dhcp-option DNS "
script-security 2
up 'c:\path\to\up.cmd'
down 'c:\path\to\down.cmd'

route-nopullpour ignorer les routes poussées depuis le serveur. Dans votre cas, vous devrez peut-être commenter la passerelle de redirection à la place.

route pour ajouter un itinéraire pour cette interface, sans cette ligne, elle ne sera pas utilisée même si l'application y est liée.

pull-filterpour conserver le DNS poussé qui autrement serait abandonné route-nopullavec les routes poussées. Cette option est prise en charge à partir d'OpenVPN 2.4, si vous devez vous en tenir à OpenVPN 2.3 (dernière version pour Windows XP), vous devrez ajouter deux dhcp-option DNS x.x.x.xlignes avec des adresses IP codées en dur à la place.

script-security 2 pour autoriser les scripts.

up scénario:

cd %~dp0
echo auth none> 3proxy-openvpn.conf
echo internal 127.0.0.1>> 3proxy-openvpn.conf
echo external %4>> 3proxy-openvpn.conf
echo socks>> 3proxy-openvpn.conf
start /b 3proxy.exe 3proxy-openvpn.conf

down scénario:

taskkill /f /im 3proxy.exe

Ainsi, après vous être connecté au VPN à l'aide de cette configuration, le 3proxy.exeprocessus sera démarré et un proxy SOCKS5 limité à l'hôte local avec une capacité de résolution DNS s'exécutera sur le 1080port, maintenant il suffit de configurer votre application pour utiliser le localhost:1080proxy SOCKS.

utilisateur
la source
Je reçois Options error: option 'route' cannot be used in this context ([PUSH-OPTIONS])et Options error: option 'redirect-gateway' cannot be used in this context ([PUSH-OPTIONS]). Néanmoins, cette solution fonctionne. Si vous sautez les apostrophes pour les scripts de bas en haut, utilisez des doubles barres obliques inverses:c:\\path\\to\\script
chx
1

Si vous êtes sous Linux et que vous utilisez openVPN, VPNShift fonctionne à merveille.

thouliha
la source
Veuillez ne pas poster la même réponse à plusieurs questions. Si la même information répond vraiment aux deux questions, alors une question (généralement la plus récente) doit être fermée en double de l'autre. Vous pouvez l'indiquer en votant pour le fermer comme doublon ou, si vous n'avez pas assez de réputation pour cela, lever un drapeau pour indiquer qu'il s'agit d'un doublon. Sinon, adaptez votre réponse à cette question et ne collez pas simplement la même réponse à plusieurs endroits.
DavidPostill
4
Le fait que ce soit "la même réponse à plusieurs questions" est-il si important? La question existe, elle n'est pas (encore) signalée comme doublon, et c'est une bonne réponse, donc elle mérite d'exister. Merci @thouliha 🙂.
Ronan Jouchet
0

Accédez simplement au VPN via une machine virtuelle.

  1. Créez une VM, puis de l'intérieur de la VM ...
  2. Installez les applications «sélectionnées»
  3. Configurer le VPN

Utilisez les applications «sélectionnées» de la machine virtuelle au lieu de les utiliser depuis la machine hôte.

PS Vous devez bien sûr donner un accès réseau à la VM via la machine hôte.

drowa
la source
Cela ne fait que mentionner une approche déjà décrite en détail dans d'autres réponses.
fixer1234
1
@ fixer1234: Personne n'a mentionné de machines virtuelles.
drowa
Pouvez-vous développer votre réponse en quelque chose de plus concret (expliquez comment)? Voir les autres réponses sur le fil pour une idée du niveau de détail. Le simple fait d'indiquer une direction à suivre irait dans un commentaire, qui nécessite un peu plus de répétition.
fixer1234
J'ai d'abord essayé un commentaire mais le système ne me l'a pas permis car j'ai moins de 50 points. J'essaierai alors d'élargir la réponse.
drowa
C'est l'idée que j'ai eue, et cela fonctionne très bien, sans aucune configuration de routage compliquée du côté administrateur système.
pwned
0

Je sais que c'est une réponse tardive que je viens de rencontrer, mais au cas où cela serait pertinent pour quelqu'un, j'ai eu la même circonstance où je voulais gérer mon trafic professionnel via le VPN, mais je ne voulais pas que mon trafic personnel soit acheminé via leur serveurs proxy et autres. J'exécutais donc Win7 à l'époque, mais ils exécutaient toujours WinXP sur beaucoup de leurs systèmes. Finalement, ils m'ont juste donné un 2e PC à exécuter pour le travail, ce qui a résolu le problème (un boîtier de connexion accroché aux deux PC, pourrait simplement sauter d'avant en arrière) mais avant cela, j'ai exécuté un Virtual XP que j'ai configuré comme mon système d'exploitation de travail. Je voudrais VPN à partir de ladite machine virtuelle pour me connecter au travail, ce qui laisserait le trafic de mon système d'exploitation personnel exempt de restrictions de travail et d'espionnage.

Warren Colvett
la source