come fare app diverse utilizzare wifi vs ethernet?

5

Mi piacerebbe indirizzare alcune app attraverso WiFi e altre app attraverso Ethernet. Dato che OSX ha una vasta gamma di strumenti di sistema e utilità oltre a una ricca ecosfera di app, come posso fallo succedere? *

    
posta Walrus the Cat 01.11.2017 - 00:46
fonte

3 risposte

2

I'd like to route some apps through WiFi and other apps through ethernet.

Sfortunatamente, questo non è il modo in cui funziona (networking). Non puoi dire che vuoi che Safari attraversi una porta di rete e iTunes ne facciane un'altra. Il problema con questo risiede nel fatto che le applicazioni stesse non effettuano la connessione di rete - effettua una chiamata al networking ( prese Berkeley ) API che effettua la connessione e associa il processo al socket stesso.

Nei termini più semplici, il flusso appare come questo

Quandoiltuoprocessolocale(l'applicazioneinquestione)vuolestabilireunaconnessione,richiedechevengacreatounsocket.Partediquellarichiestaincludel'indirizzoIP,laconnessionevienequindieseguitael'appèassociataadessa.L'appinviaericeveidatiattraversoquelsocket.

Lachiavedaricordarequièchel'applicazionerichiedeunsocketbasatosull'indirizzodirete.Diversoda(supponendochetusiasuunareteconunsingolosegmento),haisoloduepercorsi:

  • latuaretelocale
  • tuttoilresto(adesempioInternet)

Sehaidueinterfaccecollegateaquestaretesingola,letuerottesisovrappongonoel'interfacciaconprioritàsaràlaprincipale.

Qualunquesialatuaapplicazioneinesecuzione,dirà"Voglio andare a foo.bar.com " che si tradurrà in un indirizzo IP e verrà creato un socket sulla rotta che ti porta lì. Il punto è che la tua app non ha alcun controllo sull'argomento.

Tuttavia, supponiamo che tu sia connesso a due reti diverse:

  • Ethernet (en0) -> 1.2.3.0
  • WiFi (en1) -> 5.6.7.0

Se esiste un file server con un IP di 1.2.3.4, tutto il traffico diretto per quell'indirizzo passerà attraverso Ethernet. Se il tuo WiFi è configurato per l'accesso a Internet, tutte le chiamate a 1.2.3.0 e passeranno attraverso en1. Ancora una volta, la tua app non ha voce in capitolo e il socket verrà creato in base alla destinazione.

Un'applicazione può utilizzare un'interfcace di rete specifico?

Sì, certo che può, ma questo è qualcosa fatto al livello sorgente dell'applicazione perché è quella che effettua la chiamata all'API. Se lo codifichi per usare un'interfaccia specifica, lo farà (non è pratico in alcun senso, ma ne hai l'abilità).

In conclusione: per un'applicazione esterna che reinstalli il traffico in base all'applicazione utilizzata, dovrebbe inserirsi tra l'applicazione e lo stack del protocollo del sistema operativo e ciò non accadrà.

    
risposta data 12.11.2017 - 05:38
fonte
0

Dipende dalle app di cui stiamo parlando e da cosa esattamente vuoi raggiungere. In alcuni casi è possibile ottenere utilizzando il routing basato su criteri e pf (routing di origine) basato sulla porta di origine o sulle porte di destinazione delle app. Tuttavia questo è normalmente possibile solo con app che sono "semplici" di rete (ad esempio, per esempio, si connettono solo a un singolo servizioR).

Una soluzione generica non sembra ancora esistere in una forma ben confezionata che puoi semplicemente scaricare e utilizzare senza competenze particolari.

Se vuoi implementare una soluzione del genere, ti consigliamo di utilizzare la variabile di ambiente DYLD_INSERT_LIBRARIES quando avvii le tue app per iniettare la tua libreria condivisa nel processo. Quella libreria condivisa dovrebbe quindi sovrascrivere la chiamata bind () per assicurarsi che il processo si leghi all'IP dell'interfaccia WiFi o Ethernet a seconda dell'app.

    
risposta data 12.11.2017 - 00:39
fonte
0

La cosa più vicina a cui posso pensare è chiamata prioritizzazione dei pacchetti (quindi le app non sarebbero sulla stessa connessione Ethernet che interferiscono l'una con l'altra) è disponibile nella scheda madre "Fatal1ty Z370 Professional Gaming i7" ma è un $ 200 board ed è una soluzione hardware, non credo che ci sia un software in grado di farlo ma potrei sbagliarmi spero che questo sia stato di aiuto.

    
risposta data 18.08.2018 - 09:38
fonte

Leggi altre domande sui tag