2011-06-07 12:51:27 +0000 2011-06-07 12:51:27 +0000
44
44

Usa la connessione VPN solo per applicazioni selezionate

Ho accesso a una VPN e voglio usarla solo per alcune applicazioni, non per tutte.

Per esempio: Se mi connetto a una VPN voglio che solo le applicazioni Opera e Newsbin usino quella connessione VPN. Tutte le altre applicazioni, come ad esempio Outlook, dovrebbero usare la normale connessione internet (mentre la VPN è connessa/aperta).

Afaik questo non è possibile, ma non sono totalmente sicuro. Quindi la mia domanda è: è fattibile?

Risposte (8)

37
37
37
2013-09-12 01:28:23 +0000

E’ possibile realizzare questo, almeno su Linux (e penso anche su BSD e OS X). Si può fare così:

  • Creare un utente exra per tutto il traffico VPN.
  • Creare una tabella di routing extra con 1 rotta di default attraverso la VPN.
  • Configurare Netfilter attraverso Iptables per usare l'altra tabella di routing per tutto il traffico proveniente da uno specifico User ID.
  • Eseguire le applicazioni che dovrebbero usare la VPN sotto il proprio utente. Per esempio con ‘sudo’.

Ci sono degli script per eseguire i passi sopra descritti qui oppure c'è un'altra guida qui .

Qui c'è una guida dettagliata per l'instradamento di Transmission attraverso una VPN (usando un server VPN che si possiede.

14
14
14
2011-07-07 16:01:13 +0000

Potresti usare il Firewall di Windows per fare questo (a condizione che tu stia usando Win 7 o Vista) - Ho scritto una guida su questo

  1. Connettiti alla tua VPN come faresti normalmente.

  2. Apri il Centro connessioni di rete e condivisione - clicca con il tasto destro del mouse sull'icona della connessione Internet nella barra delle applicazioni e scegli “Apri Centro connessioni di rete e condivisione” (vedi sotto)

  3. Dovresti vedere (almeno) due reti elencate sotto “Visualizza le tue reti attive” - la tua connessione VPN e una chiamata “Rete” - ovvero la tua connessione ISP. Assicurati che la tua VPN sia una “Rete pubblica”, e la tua connessione ISP sia “Rete domestica”. Se hai bisogno di cambiare una delle due connessioni, cliccaci sopra e apparirà una finestra di opzioni (vedi sotto).

  4. Vai al Pannello di controllo e clicca su Sistema e sicurezza (vedi sotto).

  5. Nella finestra risultante, clicca su Windows Firewall (vedi sotto).

  6. Nella finestra Windows Firewall, clicca su Impostazioni avanzate nel pannello di sinistra (vedi sotto). Nota: è necessario aver effettuato l'accesso come amministratore per apportare modifiche alle impostazioni del firewall.

  7. Dovresti vedere una finestra intitolata Windows Firewall con sicurezza avanzata. In questa finestra, fai clic su Regole in entrata (vedi sotto).

  8. Nel pannello di destra, vedrai un'opzione per una nuova regola. Fai clic su di essa (vedi sotto).

  9. Nel Wizard di New Inbound Rule (che dovrebbe apparire), fai come segue:

  10. Ripeti il passo 9 per le regole in uscita.

5
5
5
2017-05-29 07:03:30 +0000

Ho fatto questo su Windows. L'idea è di legare i pacchetti di rete in uscita all'interfaccia della VPN. La gente suggerisce ForceBindIP per questo, ma grazie a questa risposta ho avuto un'idea per usare il proxy. L'aspetto negativo di questo metodo è che o le tue applicazioni devono avere il supporto proxy o dovrai usare un proxifier (vedi qui e qui ). Il lato positivo è che in questo modo sarete in grado di limitare l'uso della VPN nel browser a domini specifici utilizzando FoxyProxy o componenti aggiuntivi simili.

Io uso 3proxy in modalità SOCKS e lego la sua interfaccia esterna all'IP della VPN. OpenVPN è usato per la connessione VPN.

Nel mio file .ovpn (client, dev tun) ho aggiunto queste linee:

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 per ignorare i percorsi spinti dal server. Nel tuo caso potresti aver bisogno di commentare invece redirect-gateway.

route per aggiungere una rotta per questa interfaccia, senza questa linea non sarà usata anche se l'app è legata ad essa.

pull-filter per preservare i DNS spinti che altrimenti saranno abbandonati da route-nopull insieme alle rotte spinte. Questa opzione è supportata a partire da OpenVPN 2.4, se si deve rimanere con OpenVPN 2.3 (ultima release per Windows XP), si dovranno invece aggiungere due linee dhcp-option DNS x.x.x.x con IP hardcoded.

script-security 2 per permettere lo scripting.

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

Così, dopo essersi connessi alla VPN utilizzando questa configurazione, il processo 3proxy.exe verrà avviato e un proxy SOCKS5 limitato a localhost con capacità di risoluzione DNS verrà eseguito sulla porta 1080, ora basta configurare la vostra app per utilizzare il proxy SOCKS localhost:1080.

4
4
4
2017-10-25 10:36:54 +0000

Puoi farlo con gli spazi dei nomi di rete su GNU/Linux.

Ecco come eseguire OpenVPN e una singola applicazione in un namespace separato:

Creare il namespace di rete net:

ip netns add myvpn

Avviare l'interfaccia di loopback nel namespace (altrimenti molte cose non funzionano come previsto…)

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

Creare interfacce di rete virtuali che permetteranno a OpenVPN (nel namespace) di accedere alla rete reale, e configurare l'interfaccia nel namespace (vpn1) per usare l'interfaccia fuori dal namespace (vpn0) come gateway di default

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

Abilita il routing IPv4 e il NAT per l'interfaccia nel namespace. Poiché la mia interfaccia predefinita è un'interfaccia wireless, utilizzo wl+ (che può corrispondere a wlan0, wlp3s0, ecc. ) in iptables per l'interfaccia in uscita; se si usa un'interfaccia cablata probabilmente si dovrebbe usare en+ (o br+ per un'interfaccia bridged)

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

Configurare il nameserver da usare all'interno del namespace

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

Quasi fatto, ora dovremmo avere pieno accesso alla rete nel namespace

ip netns exec myvpn ping www.google.com

Infine avviare OpenVPN nel namespace

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

Una volta che tun0 è attivo nel namespace, sei pronto per avviare il programma che volevi!

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

Articolo sorgente.

C'è anche uno script wrapper nell'articolo sorgente che puoi adattare alle tue esigenze.

1
1
1
2018-07-12 16:19:29 +0000

Se sei su linux e usi openVPN, VPNShift funziona benissimo.

0
0
0
2019-09-12 14:47:21 +0000

So che questa è una risposta tardiva in cui mi sono appena imbattuto, ma nel caso sia rilevante per qualcuno, ho avuto la stessa circostanza in cui volevo far passare il mio traffico di lavoro attraverso la VPN ma non volevo che il mio traffico personale fosse instradato attraverso i loro server proxy e così via. Allora stavo usando Win7, ma loro usavano ancora WinXP su molti dei loro sistemi. Alla fine mi hanno dato un secondo PC da usare per il lavoro, il che ha risolto il problema (uno switchbox collegato a entrambi i PC, potevo semplicemente saltare avanti e indietro), ma prima di questo ho eseguito un XP virtuale che ho impostato come mio sistema operativo di lavoro… Avrei fatto una VPN da tale VM per connettermi al lavoro, il che avrebbe lasciato il mio traffico personale del sistema operativo libero dalle restrizioni del lavoro e dallo spionaggio.

0
0
0
2018-01-16 01:54:06 +0000

Basta accedere alla VPN attraverso una macchina virtuale.

  1. Crea una VM, poi dall'interno della VM…
  2. Installare le applicazioni ‘selezionate’
  3. Configurare la VPN

Usare le applicazioni ‘selezionate’ dalla VM invece di usarle dalla macchina host.

P.S. È necessario dare accesso alla rete alla VM attraverso la macchina host, ovviamente.

-1
-1
-1
2011-06-10 22:32:46 +0000

No, non lo è. Beh, non con mezzi normali. Il routing è il routing. Il routing opera più in basso nel modello OSI. Ciò di cui hai bisogno è che sia consapevole a livello di applicazione (più in alto) in modo che possa rilevare quale programma stai usando ecc. I router NORMALI non permettono di configurare percorsi basati su applicazioni o numeri di porta.

penso che sia possibile però. I router possono vedere le porte in modo da poterle filtrare per numero di porta e inviare il traffico su percorsi diversi. Sono sicuro di aver letto qualcosa tempo fa sui router Cisco che possono fare questo. Non sono economici però e sono router aziendali che richiedono un sacco di configurazione e immagino che tu voglia qualcosa di semplice per uso domestico.

In sintesi è il router che avrebbe bisogno di questa caratteristica e quelli standard per uso domestico, anche quelli business non supportano queste caratteristiche. Solo la linea avanzata di Cisco e Sonicwalls offre queste capacità.