Come può un'applicazione (come Firefox) essere costretta a utilizzare una determinata interfaccia di rete?


20

Ho due interfacce: eth0 e wlan0 su un notebook.

Possibili casi d'uso:

  • eth0 mi concede l'accesso a Internet e wlan0 è attualmente connesso a un router che non ha connettività a Internet. Per motivi di sviluppo, devo connettermi a wlan0 per impostazione predefinita, ma uso eth0 per navigare
  • eth0 e wlan0 sono entrambi connessi a Internet. Per un'applicazione torrent, eth0 dovrebbe essere usato per la velocità, ma per la portabilità del notebook, SSH dovrebbe avere una connessione su wlan0
  • eth0 è una connessione via cavo, wlan0 è una connessione wireless. I dati sensibili dovrebbero essere trasferiti su eth0, ma anche altro traffico può passare su wlan0.

Esiste un modo per forzare le applicazioni (come nc.traditionalo firefox) a utilizzare una determinata interfaccia di rete? Anche un wrapper example-wrapper eth0 programva bene se esiste un tale programma. Sarebbe bello se potesse essere configurato all'interno di Firefox (in fase di esecuzione). Vorrei evitare le soluzioni IPTables se possibile.


4
questo è utile anche per una connessione Internet multipla con uno che fa torrent mentre l'altro viene usato per navigare.
iamgopal,

Volete usare percorsi diversi in base al protocollo / all'applicazione, per questo avrete bisogno di iptables.
João Pinto,

1
Non so come puoi farlo senza qualcosa che associ il tuo traffico layer7 (applicazione) a una porta specifica o filtri in base a informazioni sull'applicazione di livello superiore (che richiederebbero l'ispezione del traffico). Quindi, sebbene iptables non sia specificamente necessario, qualsiasi soluzione che coinvolge un wrapper dovrebbe interagire con la politica tcp o ip in qualche modo. Non so come farlo senza una rete layer2 o layer3 che dirige il traffico da qualche altra parte.
belacqua,

Risposte:


1

Quello che stai cercando è uno spessore LS_PRELOAD, vedi il blog di Daniel Lange per una spiegazione dettagliata e un codice di esempio.


3
Benvenuti in Ask Ubuntu! Sebbene ciò possa teoricamente rispondere alla domanda, sarebbe preferibile includere qui le parti essenziali della risposta e fornire il collegamento come riferimento.
Stormvirux,

1

È possibile utilizzare un approccio più complesso di marcatura delle connessioni e criteri di instradamento.
Funzionerà bene se hai un utente che esegue un software e un altro.
In questo modo è possibile contrassegnare le connessioni di un utente e utilizzare una tabella di routing specifica per esso, mentre tutti gli altri utilizzeranno quello predefinito.
Il documento di base per capire tutto è su: http://www.lartc.org/lartc.html
Anche un esempio per due connessioni che puoi vedere qui: /unix/58635/iptables- set-mark-route-diferent-doors-through-different-interfaces
È possibile utilizzare il modulo iptables "proprietario" che contrassegnerà le connessioni per consentire la politica di routing.


Il routing delle politiche funziona per utenti diversi, ma non per un'applicazione in esecuzione sotto un utente (come descritto in OP). LD_PRELOADsembra la strada da percorrere (non per programmi dannosi / per motivi di sicurezza), forse qualcuno potrebbe elaborare post di Bob Lebins?
Lekensteyn,

0

Ecco una soluzione di esempio. Utilizza il server SOCKS, configurato sulla macchina corrente per instradare le conezioni. Ogni applicazione deve essere configurata per utilizzare ciascun server.


3
Sembra un proxy HTTP, funziona con altri protocolli, come una connessione tra due istanze netcat?
Lekensteyn,

0

Puoi anche usare una macchina workstation VMware per condividere diverse interfacce di rete che faccio molto per scaricare da un'interfaccia e lasciare l'altra per il mio Netflix.

È necessario configurare sia ethX che wlanX su VMware ma una volta configurato, si è pronti per il download o la navigazione.

È abbastanza liscio. Puoi anche usare un firewall per collegare le interfacce che funzionano anche alla grande.


Mentre funziona per questa particolare applicazione, purtroppo non è utilizzabile con altre applicazioni esterne alla VM come Firefox.
Lekensteyn,
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.