Forza un'applicazione a utilizzare un'interfaccia di rete specifica


48

Sto usando più interfacce di rete (LAN e Wireless) e ho notato che esiste un modo per cambiare l'ordine delle interfacce preferite. Come posso usare la rete cablata per fare il lavoro, controllare la posta elettronica e così via (in modo sicuro) e usare la VLAN wireless per accedere ad altre cose (altrimenti bloccate da porte e talvolta websense)?

Risposte:


22

Il trucco sta regolando le tabelle di routing (che non dipende dalla porta di destinazione o dall'app di origine, ma dipende dall'host di destinazione). Ciò presuppone che tu sia su Linux o OS X (come mostrano i tag).

Supponi che il tuo gateway predefinito sia 1.2.3.4 e che tu abbia un VPN che può indirizzare il traffico su 6.7.8.9. Se vuoi che il tuo traffico di posta instrada oltre 6.7.8.9, fallo e basta

sudo route add mail.myserver.com 6.7.8.9

Alcune versioni di route potrebbero richiedere una parola chiave "gw" tra l'indirizzo e l'hop successivo. Se si desidera creare un intero percorso di rete sull'hop successivo, è sufficiente aggiungere una maschera di rete nella notazione CIDR per la destinazione, ad esempio

sudo route add 192.168.0.0/24 6.7.8.9

Se si desidera visualizzare la tabella di routing esistente, utilizzare

netstat -nrl
or
ip route list

Se sei su Windows, "net route" ti porterà quasi ovunque, ma la sintassi è totalmente diversa.


17
Questa non è davvero una risposta, vero? La domanda è come forzare un'app non un sito Web. Ad esempio, cosa volevo che Safari passasse su VPN (ppp0) ma Firefox che passasse su en0 indipendentemente dal sito a cui accedono? Questa è la domanda
Gman,

2
@gman: nulla di questa risposta è specifico per i siti Web.
Corse di leggerezza con Monica,

3
L'OP vuole scegliere l'interfaccia di rete in base al programma applicativo. Questa risposta mostra come scegliere in base all'host di destinazione.
Bennett McElwee,

Non ho intenzione di sottovalutare questo (è un buon consiglio per un'altra domanda), ma certamente non ho intenzione di votare neanche questo (per ragioni dichiarate da @gman e @ bennett-mcelwee).
Ratskin,

Come sopra, questo non risponde alla domanda su come bloccare un'app specifica su una scheda NIC specifica.
catchdave

6

Se si desidera solo avere due schede di rete attive contemporaneamente, è possibile impostare l'ordine di servizio in Preferenze di sistema / Rete selezionando la marcia sotto l'elenco dei dispositivi di rete. Trascina e rilascia l'ordine in cui desideri.

Ad esempio, ho Ether e WiFi sempre attivi sul mio MBP con Ether impostato sopra Wi-Fi. Da quando uso Ether al lavoro, ho configurato quella scheda di rete con impostazioni proxy e il mio Wi-Fi senza. Quando torno a casa, non è necessario regolare alcuna impostazione. Puoi anche farlo dal terminale usando /usr/bin/networksetup -ordernetworkservices.

Ma per avere sia un'app attiva che un'app non predefinita, ho avuto fortuna con un giro leggermente più semplice sui consigli di @ Andor. Se voglio che un'app non usi Ether nel mio caso, imposto le impostazioni proxy per l'app sull'indirizzo IP del mio adattatore Wi-Fi. Utilizzerà quell'interfaccia per uscire e in questo modo ignorerà i proxy dell'azienda e i server di monitoraggio. Quindi, se Ether ha un indirizzo di 1.2.3.4 e precede il Wi-Fi (5.6.7.8) nell'ordine di servizio, ho il mio proxy app per 5.6.7.8.


5

Per Mac, esiste una soluzione semplice che utilizzo. In realtà è un'implementazione della soluzione di @ Andor. Installa un proxy e configura le tue app per usarlo:

  1. Ho installato SquidMan

  2. Nella configurazione aggiungere la seguente riga. Devi specificare l'ip che utilizzerai per le tue app private invece di x.x.x.x:

    tcp_outgoing_address x.x.x.x
    
  3. Avvia SquidMan e configura la tua app per usarla come proxy.

Ho impiegato un'ora a trovare queste informazioni in diverse pagine, quindi spero che aiuti gli altri a farlo più velocemente.


Dovrebbe funzionare lo stesso su Windows e sembra essere l'unica soluzione elegante!
TJJ,

1

Probabilmente dovrai utilizzare le funzioni di controllo IO di basso livello (ioctl). In particolare:

ioctl( socket, SIOCGIFADDR, ... ); // Get network interface address

e

ioctl( socket, SIOCSIFADDR, ... ); // Set network interface address

Vedi questa pagina man per maggiori dettagli.


1

Il problema è che avrai più gateway per la tua connessione di rete, ed è un po 'difficile da gestire ...

Alcuni strumenti unix e linux relativi al server o alla rete di solito hanno un flag chiamato "interfaccia", dove puoi dire quale interfaccia vuoi usare, come in tcpdump, ad esempio:

tcpdump -i eth0

Ma poiché penso che tu stia chiedendo del routing del software desktop standard, diventa un po 'più difficile ...

Posso dirti un trucco per quello ... La mia solita soluzione per affrontare quei problemi è usare un proxy e avere solo un gateway. Quasi tutti i software che utilizzano Internet oggi hanno opzioni per la configurazione di un proxy, quindi puoi farlo in uno dei seguenti modi:

1.- Impostazione di un proxy sulla parte "non protetta" (intendo, laddove i criteri non vengono applicati) della tua rete e puntamento del software a tale proxy.

2.- Impostazione di un server SSH su un altro luogo "non protetto", ad esempio, la tua casa o un server dedicato che hai su Internet, e apertura di una connessione tramite una funzione speciale che SSH ha che crea un server proxy calzini:

ssh -D 1234 user@host

Ciò creerebbe sul tuo computer un server proxy di calzini sulla porta "1234", che si collegherebbe al tuo "host", usando il tuo "utente", e passerebbe a Internet attraverso la connessione che il tuo "host" ha ... Quindi, sul tuo software locale, devi solo aprire gli strumenti di configurazione del proxy e puntare a localhost: 1234.

Bei trucchi per evitare le politiche Internet aziendali: P

: D


1

Eseguo le mie applicazioni aziendali all'interno di una macchina virtuale. Ho usato le istruzioni sopra per impostare il WiFi come connessione preferita, quindi ho configurato la macchina virtuale per utilizzare la porta Ethernet come un adattatore "Bridged".

Tutto ciò che è in esecuzione all'interno della macchina virtuale ora è collegato alla porta Ethernet. Il WiFi è la mia connessione preferita per tutte le altre applicazioni (al di fuori della macchina virtuale), purché abbia una connessione WiFi collegata.

Credo che esistano utility che possono essere utilizzate per forzare l'associazione di un'applicazione a una determinata porta Ethernet, ma non l'ho ricercata per MacOS.

Il metodo di routing menzionato in precedenza è alquanto complesso per il "laico", ma sembra anche un buon approccio praticabile, soprattutto se si ottiene ripetutamente lo stesso indirizzo IP sulle connessioni.


0

Anche se questa domanda è per OSX, lascerò qui il seguente che funziona su Windows 7 a 64 bit. Questa domanda è emersa come uno dei migliori risultati quando si cerca su Google di forzare le applicazioni a passare attraverso un adattatore specifico , quindi quanto segue potrebbe essere utile per gli altri.

http://www.howtogeek.com/117890/how-to-force-an-application-to-use-a-specific-network-card/

La guida sopra usa un'utilità chiamata ForceBindIp che è pubblicizzata per funzionare Windows NT/2000/XP/2003 ma non ho avuto problemi a farlo funzionare su Windows 7 - 64 Bit.

Inoltre, problemi con ForceBindIP su Windows 7 (x64)

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.