2015-02-09 23 views
8

Sono consapevole che è stato chiesto prima (con soluzione limitata o assente) ma non ho visto nessun aggiornamento recente e penso che il mio scenario sia unico quindi inizierò una nuova discussioneAccesso alla LAN WiFi (senza gateway) e alla rete mobile contemporaneamente

Ho un Raspberry Pi e funziona come un punto caldo tra le altre cose. In base alla progettazione, DHCP non distribuisce un gateway predefinito. Il mio caso d'uso è uno o più dispositivi che interagiscono con il Pi come server.

Uno dei dispositivi connessi sarà un dispositivo mobile (modifica: eseguendo un'app personalizzata del mio progetto che fa parte della soluzione totale) e tale dispositivo manterrà la sua connessione cellulare, non per il tethering o il routing ma in modo tale che l'applicazione può accedere simultaneamente alle risorse interne ed esterne.

Attualmente:

IOS: Questo funziona esattamente come mi aspetto su IOS - rileva che la rete Wi-Fi non ha un gateway predefinito e invia il traffico esterno over cellulare.

Android: Questo non funziona affatto. Android vede ostinatamente la connessione WiFi e disabilita il cellulare, anche senza gateway predefinito.

Windows Phone: Tipo di ibrido. Entrambe le reti restano attive, ma il mio scenario ha una voce DNS nel DNS pubblico e un sito pubblico si collega a una risorsa sul Pi. Se collego direttamente la risorsa usando l'indirizzo IP WiFi del Pi, funziona perfettamente (anche se questo causa altri problemi relativi alla sicurezza). Se collego tramite un FQDN, in realtà non sono sicuro di cosa sta succedendo. Non si risolve dal browser Web sebbene ogni utilità di rete che ho installato sul telefono per la risoluzione dei problemi risolva correttamente il FQDN all'indirizzo Pi tramite DNS.

Spero che questo abbia senso. La domanda: come posso abilitare questa funzionalità a tutto campo nel 2015? :) Per i miei scopi, il Pi come un hotspot nonroutable privato funziona meglio di WiFi diretto o Bluetooth. E ricorda che non sto chiedendo al telefono il PERCORSO; Ho bisogno che la mia applicazione personalizzata sia in grado di connettersi simultaneamente al Pi e all'Internet pubblica. Voglio che tutti i telefoni facciano ciò che IOS fa a questo riguardo.

Il mio scenario attuale è il Pi che ospita una pagina Web (tra le altre cose) e questa è la mia preferenza, ma può anche essere risolto in modo nativo?

+1

Non si tratta di programmazione ... Potresti avere più successo se pubblichi altrove. – JonasCz

+0

Ma i programmatori sono le persone che hanno maggiori probabilità di avere requisiti simili e, come tali, sono più propensi a sapere quali soluzioni alternative/oscure API/alternative potrebbero essere efficaci. – Brett

+0

True ... [Questo] (http://stackoverflow.com/questions/18394066/android-use-wifi-direct-and-cellular-data-in-app) e [This] (http: // stackoverflow. it/questions/24429190/how-wifi-and-mobile-data-both-work-simultaneamente-in-android-for-obd2-device) può aiutare, anche se probabilmente solo se si stanno facendo le richieste di rete nella propria app che tu hai scritto te stesso (Così si può utilizzare le API appropriate) – JonasCz

risposta

1

Si dice che questa non è una situazione di tethering o di routing, ma se ci pensate, è davvero entrambe le cose.

È routing perché il traffico dal telefono deve essere indirizzato a una delle due interfacce. Potrebbe non esserci il routing tramite il telefono, ma è ancora un problema di routing. Fortunatamente, sembra che la parte di routing funzioni su tutte e tre le piattaforme.

È anche una forma insolita di tethering. Le uniche differenze sono che il traffico non ha origine dalla Pi, ma dal telefono, e che il Pi, piuttosto che il telefono funge da punto di accesso.

Pensare in termini di tethering è importante perché mostra che l'Android può avere WiFi e cellulare attivi contemporaneamente (almeno in modalità hotspot, ma probabilmente anche in modalità client). A questo riguardo, la mia risposta non è completa - non posso dirvi come farlo.

Per quanto riguarda il problema Windows Phone lei ha citato: al fine di risolvere i problemi che, in primo luogo identificare dove si trova il server DNS che conosce nome di dominio completo del Pi.Un server DNS pubblico lo sa, anche se è ovviamente su una rete privata?

Ci sono due possibili spiegazioni per la sua osservazione:

  • Non v'è alcun server DNS pubblico che conosce anche questo nome di dominio completo. In tal caso, IOS probabilmente usa qualcosa come mDNS per localizzare il Raspberry Pi.
  • è un server DNS pubblico che conosce questo FQDN. In tal caso, forse Windows Phone controlla la risposta DNS per marziani e la rifiuta, pensando che si tratti di un attacco.

In entrambi i casi, quello che ti serve è avere due infrastrutture DNS separate. Un modo per farlo è includere un piccolo server DNS (dnsmasq forse) con la tua app e configurare un server di inoltro per la zona con il nome FQDN di Pi per inoltrare all'indirizzo IP di Pi (che dovrebbe essere hardcoded, ovviamente). Tutte le altre richieste dovrebbero andare ai normali server DNS.

Un altro modo potrebbe essere non utilizzare il DNS, ma utilizzare il file hosts.

+0

Per quanto riguarda la situazione di Windows, è bene mettere un server DNS sul pi greco. Ho stabilito una voce DNS pubblica per quell'IP privato ma potrebbe essere che la connessione wifi non stia sfruttando il pubblico e sia disponibile tramite la rete cellulare. Gli host non sarebbero di aiuto se non potessi inserire un file hosts su ogni client del telefono: il telefono ha bisogno della risoluzione in modo che CORS funzioni. – Brett

+0

In realtà sospetto che Windows possa semplicemente bloccare le risposte DNS con quelli che percepisce come indirizzi IP "non validi" per motivi di sicurezza. Inoltre, mettere un server DNS sul pi non servirà da solo. Inoltre, devi anche avere modo di indirizzare le query DNS * solo * per quel FQDN al Pi e tutti gli altri al server DNS pubblico. Quindi la necessità di un altro server DNS all'interno del dispositivo. Sugli host: sì, volevo aggiungere il nome di dominio completo al file host di ogni telefono. Può essere banale da fare quando si installa la tua app, o potrebbe essere impossibile. –

+0

Finalmente avuto il tempo di testare questo. Il pdns installato, la zona duplicata configurata per la mia zona accessibile al pubblico, ha risolto il problema per Windows Phone. Due giù, uno (Android) per andare :). – Brett

Problemi correlati