Usa la connessione VPN solo per le applicazioni selezionate


39

Ho accesso a una VPN e desidero utilizzarla solo per alcune applicazioni, non tutte.

Ad esempio:
se mi collego a una VPN, desidero che solo le applicazioni Opera e Newsbin utilizzino tale connessione VPN. Tutte le altre applicazioni, come ad esempio Outlook, dovrebbero utilizzare la normale connessione Internet (mentre la VPN è connessa / aperta).

Dopotutto ciò non è possibile, ma non ne sono del tutto sicuro. Quindi quindi la mia domanda: è fattibile?


Risposte:


-1

No non lo è. Beh, non usare mezzi normali. Il routing è il routing. Il routing funziona più in basso nel modello OSI. Ciò di cui hai bisogno è che sia consapevole a livello di applicazione (più in alto) in modo da poter rilevare quale programma stai usando ecc. I router NORMAL non ti consentono 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 in base al numero di porta e inviare il traffico verso percorsi diversi. sono sicuro di aver letto qualcosa qualche tempo fa con i router Cisco che possono farlo. Tuttavia, non sono economici e sono router aziendali che richiedono molta configurazione e immagino che tu voglia qualcosa di semplice per l'uso domestico.

In sintesi, è il router che avrebbe bisogno di questa funzione e di quelli standard da palude per uso domestico, anche le aziende non supportano queste funzionalità. Solo la linea avanzata di Cisco e Sonicwalls offre queste funzionalità.


36

È possibile farlo, almeno su Linux (e sto pensando anche a BSD e OS X). Puoi farlo tramite:

  • Crea un utente exra per tutto il traffico VPN.
  • Crea una tabella di routing aggiuntiva con 1 route predefinita tramite VPN.
  • Configurare Netfilter tramite Iptables per utilizzare l'altra tabella di routing per tutto il traffico proveniente da un ID utente specifico.
  • Esegui le applicazioni che dovrebbero utilizzare la VPN con il proprio utente. Ad esempio con "sudo".

Ci sono script per eseguire i passaggi precedenti qui o c'è un'altra guida qui .

Ecco una guida dettagliata per il routing della trasmissione tramite una VPN (utilizzando un server VPN di tua proprietà.


Molto più semplice su Linux: creare uno spazio dei nomi di rete, connettere VPN a quello spazio dei nomi, eseguire applicazioni che dovrebbero usare lo spazio dei nomi nella VPN. Puoi persino eseguire due copie della stessa applicazione, una utilizzando la VPN e una utilizzando la connessione diretta.
Dirkt

15

A tale scopo, è possibile utilizzare Windows Firewall (purché si utilizzi Win 7 o Vista). Ho scritto una guida su questo

  1. Collegati alla tua VPN come faresti normalmente.

  2. Apri il Centro connessioni di rete e condivisione: fai clic con il pulsante 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 in "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 che la tua connessione ISP sia "Rete domestica". Se è necessario modificare una delle connessioni, fare clic su di essa per visualizzare una finestra di opzioni (vedere di seguito).

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

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

  6. Nella finestra di Windows Firewall, fai clic su Impostazioni avanzate nel riquadro a 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 riquadro destro, vedrai un'opzione per una nuova regola. Cliccalo (vedi sotto).

  9. Nella Creazione guidata nuova regola in entrata (che dovrebbe apparire), attenere alla seguente procedura:

    • Scegli Programma e fai clic su Avanti.

    • Scegli il programma a cui desideri bloccare tutto il traffico tranne sulla connessione VPN e fai clic su Avanti.

    • Scegli Blocca la connessione.

    • Spuntare Dominio e Privato. Assicurati che Pubblico sia deselezionato.

  10. Ripetere il passaggio 9 per le regole in uscita.


11
Questo risponde effettivamente alla domanda? Sì, questo impedisce all'applicazione di funzionare se non è sulla VPN, ma tutto il traffico passa ancora sulla VPN no?
Jason Coyne,

3
@pramble Quindi tutto il traffico passa ancora attraverso la VPN?
nsij22,

Sembra funzionare. Ho appena provato ..
Faiz,

Questo non lo risolve. Questo è uno scenario molto semplice. Voglio che tutte le mie cose relative al lavoro passino attraverso la VPN (connessioni SQL Server, Slack, ecc.), Ma voglio che il mio browser Web (Facebook, Soundcloud, ecc., Fondamentalmente tutto il traffico della porta 80) NON passi attraverso la VPN . Windows fa schifo se questo non è possibile.
Triynko,

@Triynko Il tuo scenario è molto diverso dallo scenario richiesto dall'OP. Dopo esserti connesso alla VPN, puoi semplicemente impostare i percorsi corrispondenti alle tue cose relative al lavoro, ad esempio, utilizzare il gateway VPN per tutte le sottoreti o gli IP relativi al lavoro. Il routing del traffico proveniente da applicazioni specifiche è più difficile da ottenere.
speakr

4

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

Ecco come eseguire OpenVPN e una singola applicazione in uno spazio dei nomi separato:

Creare lo spazio dei nomi della rete netta:

ip netns add myvpn

Avvia l'interfaccia di loopback nello spazio dei nomi (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

Crea interfacce di rete virtuale che consentano a OpenVPN (nello spazio dei nomi) di accedere alla rete reale e configura l'interfaccia nello spazio dei nomi (vpn1) per utilizzare l'interfaccia fuori dallo spazio dei nomi (vpn0) come gateway predefinito

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 routing IPv4 e NAT per l'interfaccia nello spazio dei nomi. Poiché la mia interfaccia predefinita è wireless, utilizzo wl + (che può corrispondere a wlan0, wlp3s0, ecc.) In iptables per l'interfaccia in uscita; se usi un'interfaccia cablata probabilmente dovresti usare en + (o br + per un'interfaccia bridge)

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 utilizzare all'interno dello spazio dei nomi

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 nello spazio dei nomi

ip netns exec myvpn ping www.google.com

Infine avvia OpenVPN nello spazio dei nomi

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

Una volta che tun0 è attivo nello spazio dei nomi, sei pronto per avviare il programma che desideri!

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 di origine che puoi adattare alle tue esigenze.


3

L'ho fatto su Windows. L'idea è di associare i pacchetti di rete in uscita all'interfaccia VPN. Le persone suggeriscono ForceBindIP per questo, ma grazie a questa risposta ho avuto l'idea di usare il proxy. Il rovescio della medaglia di questo metodo è che o le tue app devono avere il supporto proxy o dovrai usare un proxy (vedi qui e qui ). Il lato positivo è che in questo modo sarai in grado di limitare l'uso della VPN nel browser a domini specifici utilizzando FoxyProxy o componenti aggiuntivi simili.

Uso 3proxy in modalità SOCKS e associo la sua interfaccia esterna all'IP della VPN. OpenVPN viene utilizzato per la connessione VPN.

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

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-nopullper ignorare le rotte inviate dal server. Nel tuo caso potresti invece dover commentare il reindirizzamento-gateway.

route per aggiungere una route per questa interfaccia, senza questa linea non verrà utilizzata anche se l'app è associata ad essa.

pull-filterper preservare il DNS push che altrimenti verrà eliminato route-nopullinsieme alle route push. Questa opzione è supportata a partire da OpenVPN 2.4, se devi rimanere con OpenVPN 2.3 (ultima versione per Windows XP), dovrai invece aggiungere due dhcp-option DNS x.x.x.xlinee con IP hardcoded.

script-security 2 per consentire 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

Pertanto, dopo esserti connesso alla VPN utilizzando questa configurazione, 3proxy.exeverrà avviato il processo e sulla 1080porta verrà eseguito un proxy SOCKS5 limitato a localhost con funzionalità di risoluzione DNS , ora configura la tua app per utilizzare il localhost:1080proxy SOCKS.


Sto ottenendo Options error: option 'route' cannot be used in this context ([PUSH-OPTIONS])e Options error: option 'redirect-gateway' cannot be used in this context ([PUSH-OPTIONS]). Tuttavia, questa soluzione funziona. Se salti gli apostrofi per gli script down e up, usa le doppie barre rovesciate:c:\\path\\to\\script
chx

1

Se usi Linux e usi openVPN, VPNShift funziona magnificamente.


Si prega di non pubblicare la stessa risposta a più domande. Se le stesse informazioni rispondono davvero ad entrambe le domande, allora una domanda (di solito la più recente) dovrebbe essere chiusa come duplicata dell'altra. Puoi indicarlo votando per chiuderlo come duplicato o, se non hai abbastanza reputazione per quello, alza un flag per indicare che è un duplicato. Altrimenti personalizza la tua risposta a questa domanda e non incollare la stessa risposta in più punti.
DavidPostill

4
Il fatto che sia "la stessa risposta a più domande" è così importante? La domanda esiste, non è (ancora) contrassegnata come duplicata ed è una buona risposta, quindi merita di esistere. Grazie @thouliha 🙂.
Ronan Jouchet,

0

Accedi alla VPN tramite una macchina virtuale.

  1. Crea una VM, quindi dall'interno della VM ...
  2. Installa le applicazioni 'selezionate'
  3. Configura la VPN

Utilizzare le applicazioni "selezionate" dalla macchina virtuale anziché utilizzarle dal computer host.

PS È necessario fornire l'accesso di rete alla VM tramite la macchina host, ovviamente.


Questo menziona solo un approccio già descritto in dettaglio in altre risposte.
fixer1234

1
@ fixer1234: nessuno ha menzionato macchine virtuali.
drowa,

Puoi espandere la tua risposta in qualcosa di più fruibile (spiegare il come)? Vedi le altre risposte sul thread per avere un'idea del livello di dettaglio. Fornire un suggerimento per una direzione da perseguire andrebbe in un commento, che richiede un po 'più di rep.
fixer 1234

Ho provato prima un commento ma il sistema non mi ha permesso perché ho meno di 50 punti. Proverò quindi ad espandere la risposta.
drowa,

Questa è l'idea che mi è venuta in mente, e funziona benissimo, senza alcuna complicata configurazione di routing sul lato amministratore di sistema.
pwned

0

So che questa è una risposta tardiva che mi sono appena imbattuto, ma nel caso sia mai rilevante per qualcuno, ho avuto la stessa circostanza in cui volevo eseguire il mio traffico di lavoro attraverso la VPN ma non volevo che il mio traffico personale fosse instradato attraverso il loro server proxy e simili. Quindi allora stavo eseguendo Win7 ma stavano ancora eseguendo WinXP su molti dei loro sistemi. Alla fine mi hanno dato solo un secondo PC da eseguire per lavoro che ha risolto il problema (un switchbox collegato a entrambi i PC, poteva solo saltare avanti e indietro) ma prima di questo ho eseguito un Virtual XP che ho impostato come sistema operativo di lavoro .. Vorrei VPN da detta VM per connettersi al lavoro, il che lascerebbe il mio traffico del sistema operativo personale libero dalle restrizioni di lavoro e dallo spionaggio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.