84 votes

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

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

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

Il me semble que ce n'est pas possible, mais je n'en suis pas totalement sûr. Ma question est donc la suivante : est-ce faisable ?

55voto

Freeaqingme Points 667

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

  • Créer un utilisateur exra pour tout le trafic VPN.
  • Créer une table de routage supplémentaire avec 1 route par défaut via le VPN.
  • Configurer 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 doivent utiliser le VPN sous leur propre utilisateur. Par exemple avec 'sudo'.

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

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

22voto

pramble Points 253

Vous pouvez utiliser le pare-feu Windows pour y parvenir (à condition que vous utilisiez Win 7 ou Vista). J'ai écrit un guide sur ce sujet

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

  2. Ouvrez le Centre Réseau et Partage - cliquez avec le bouton droit de la souris 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). Center" (voir ci-dessous)

  3. Vous devriez voir (au moins) deux réseaux répertoriés sous "View Your Active Networks" - votre connexion VPN et un réseau appelé "Network" - c'est-à-dire votre connexion ISP. alias votre connexion ISP. Assurez-vous que votre VPN est un "Public réseau public" et que votre connexion ISP est un "réseau domestique". Si vous devez changer l'une ou l'autre des connexions, cliquez dessus et une fenêtre d'options apparaîtra (voir ci-dessous).

  4. Allez dans le Panneau de configuration et cliquez sur Système et sécurité (voir ci-dessous).

  5. Dans la fenêtre qui s'affiche, cliquez sur Pare-feu Windows (voir ci-dessous).

  6. Dans la fenêtre du Pare-feu Windows, cliquez sur Paramètres avancés dans le volet de gauche (voir ci-dessous). Remarque : Vous devez être connecté en tant qu'administrateur 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 Inbound Rules (voir ci-dessous).

  8. Dans le volet de droite, 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 vers lequel vous souhaitez bloquer tout le trafic, sauf sur la connexion VPN, et cliquez sur suivant.

    • Choisissez Bloquer la connexion.

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

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

10voto

Jonathan Hawkes Points 492

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

Voici comment faire fonctionner OpenVPN et une seule application dans un espace de nom séparé :

Créez l'espace de nom de réseau net :

ip netns add myvpn

Démarrer 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 dans l'espace de noms

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

C'est presque terminé, maintenant nous devrions avoir un accès complet au réseau dans l'espace de nom.

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 à lancer 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 de la SOURCE.

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

9voto

user Points 1032

J'ai fait ça sous Windows. L'idée est de lier les paquets réseau sortants à l'interface du VPN. Les gens suggèrent ForceBindIP pour cela, mais grâce à cette réponse J'ai une idée pour utiliser le proxy. L'inconvénient de cette méthode est que soit vos applications doivent avoir le support du proxy, soit vous devrez utiliser un proxificateur (voir aquí y aquí ). L'avantage est que vous pourrez ainsi 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 lier 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-nopull pour ignorer les routes poussées depuis le serveur. Dans votre cas, vous devriez commenter redirect-gateway à la place.

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

pull-filter pour préserver les DNS poussés qui, autrement, seraient abandonnés par route-nopull ainsi que les itinéraires poussés. Cette option est supportée à partir d'OpenVPN 2.4, si vous devez vous en tenir à OpenVPN 2.3 (dernière version pour Windows XP), vous devrez ajouter deux éléments dhcp-option DNS x.x.x.x avec des adresses IP codées en dur à la place.

script-security 2 pour permettre la création de scripts.

up script :

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 script :

taskkill /f /im 3proxy.exe

Ainsi, après vous être connecté au VPN en utilisant cette configuration, 3proxy.exe sera lancé et un proxy SOCKS5 limité à l'hôte local et doté d'une capacité de résolution DNS fonctionnera sur l'ordinateur de l'utilisateur. 1080 il suffit maintenant de configurer votre application pour qu'elle utilise le port localhost:1080 Proxy SOCKS.

6voto

drowa Points 171

Il suffit d'accéder au VPN par le biais d'une machine virtuelle.

  1. Créer 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" à partir de la VM au lieu de les utiliser à partir de la machine hôte.

P.S. Vous devez donner un accès réseau à la VM par l'intermédiaire de la machine hôte, bien sûr.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X