2015-02-09 11 views
8

Ich bin mir bewusst, dass es zuvor gefragt wurde (mit eingeschränkter oder keiner Lösung), aber ich habe keine aktuellen Updates gesehen und ich denke, mein Szenario ist einzigartig, also fange ich an ein neuer Thread.Zugriff auf WiFi LAN (kein Gateway) und mobiles Netzwerk gleichzeitig

Ich habe einen Raspberry Pi und es funktioniert als Hotspot unter anderem. Standardmäßig gibt DHCP kein Standardgateway aus. Mein Anwendungsfall ist ein oder mehrere Geräte, die mit dem Pi als Server interagieren.

Eines der verbundenen Geräte wird ein mobiles Gerät (bearbeiten: Ausführen einer benutzerdefinierten App meines Designs, die Teil der Gesamtlösung ist), und dieses Gerät wird seine Mobilfunkverbindung beibehalten, nicht für Tethering oder Routing, aber so Die Anwendung kann gleichzeitig auf interne und externe Ressourcen zugreifen.

Derzeit:

IOS: Das funktioniert genau so, wie ich auf IOS erwarten - er spürt, dass das WiFi-Netzwerk kein Standardgateway hat und sendet externen Datenverkehr über Zelle.

Android: Dies funktioniert überhaupt nicht. Android sieht hartnäckig WiFi verbunden und deaktiviert Mobilfunk, auch ohne Standard-Gateway.

Windows Phone: Eine Art Hybrid. Beide Netzwerke bleiben aktiv, aber mein Szenario hat einen DNS-Eintrag im öffentlichen DNS und eine öffentliche Site ist mit einer Ressource auf dem Pi verbunden. Wenn ich direkt über die WiFi-IP-Adresse des Pi eine Verbindung zur Ressource herstelle, funktioniert es einwandfrei (obwohl dies andere Probleme im Zusammenhang mit der Sicherheit verursacht). Wenn ich über einen FQDN verlinke, bin ich mir eigentlich nicht sicher, was passiert. Es wird nicht vom Webbrowser aufgelöst, obwohl jedes Netzwerkhilfsprogramm, das ich zur Fehlerbehebung auf dem Telefon installiert habe, den FQDN über DNS korrekt in die Pi-Adresse auflöst.

Hope das macht Sinn. Die Frage: Wie kann ich diese Funktionalität 2015 in allen Bereichen aktivieren? :) Für meine Zwecke funktioniert der Pi als privater nicht routbarer Hotspot besser als WLAN direkt oder Bluetooth. Und denken Sie daran, dass ich das Telefon nicht nach ROUTE frage; Ich brauche meine benutzerdefinierte Anwendung, um gleichzeitig eine Verbindung zum Pi und zum öffentlichen Internet herstellen zu können. Ich möchte, dass alle Telefone das tun, was IOS in dieser Hinsicht tut.

Mein aktuelles Szenario ist der Pi, der (unter anderem) eine Webseite hostet und das ist meine Vorliebe, aber kann das sogar nativ gelöst werden?

+1

Dies ist nicht wirklich über die Programmierung ... Sie könnten mehr Erfolg haben, wenn Sie woanders veröffentlichen. – JonasCz

+0

Aber Programmierer sind die Leute, die am wahrscheinlichsten ähnliche Anforderungen hatten und als solche am ehesten wissen, welche Workarounds/obskuren APIs/Alternativen effektiv sein könnten. – Brett

+0

True ... [This] (http://stackoverflow.com/questions/18394066/android-use-wifi-direct-and-cellular-data-in-app) und [This] (http: // stackoverflow. com/questions/24429190/how-wifi-und-mobile-daten-beide-arbeiten-simultan-in-android-für-obd2-gerät) kann helfen, obwohl möglicherweise nur, wenn Sie die Netzwerk-Anfragen in Ihrer eigenen App, die tun du hast dich selbst geschrieben. (So ​​können Sie die entsprechenden APIs verwenden) – JonasCz

Antwort

1

Sie sagen, dass dies keine Tethering- oder Routing-Situation ist, aber wenn Sie darüber nachdenken, ist es beides.

Es ist Routing, weil der Verkehr vom Telefon zu einer der beiden Schnittstellen geroutet werden muss. Es kann sein, Routing durch das Telefon nicht, aber es ist immer noch ein Routing-Problem. Glücklicherweise scheint der Routing-Teil auf allen drei Plattformen zu funktionieren.

Es ist auch eine ungewöhnliche Form der Anbindung. Die einzigen Unterschiede sind, dass der Datenverkehr nicht vom Pi kommt, sondern vom Telefon, und dass der Pi und nicht das Telefon als Zugangspunkt fungiert.

Denken Sie daran, in Bezug auf Tethering ist wichtig, weil es zeigt, dass die Android-CAN-WLAN und Handy gleichzeitig (zumindest im Hotspot-Modus, aber wahrscheinlich auch im Client-Modus) haben kann. In dieser Hinsicht ist meine Antwort nicht vollständig - ich kann Ihnen nicht sagen, wie Sie das erreichen können.

Wie für das Windows-Telefon Problem, das Sie erwähnt: Um das Problem zu beheben, zuerst identifizieren, wo der DNS-Server befindet, der über den FQDN des Pi kennt.Ist ein öffentlicher DNS-Server darüber informiert, obwohl er sich offensichtlich in einem privaten Netzwerk befindet?

Es gibt zwei mögliche Erklärungen für Ihre Beobachtung:

  • Es gibt keinen öffentlichen DNS-Server, der auch dieses FQDN kennt. In diesem Fall verwendet IOS wahrscheinlich etwas wie mDNS, um den Raspberry Pi zu lokalisieren.
  • Dort ist ein öffentlicher DNS-Server, der diesen FQDN kennt. In diesem Fall überprüft Windows Phone möglicherweise die DNS-Antwort auf Marsmenschen und weist sie zurück, da es sich dabei um einen Angriff handelt.

In beiden Fällen benötigen Sie zwei separate DNS-Infrastrukturen. Eine Möglichkeit besteht darin, einen kleinen DNS-Server (dnsmasq vielleicht) in Ihre App einzubinden und eine Weiterleitung für die Zone mit dem FQDN des Pi zu konfigurieren, um sie an die IP-Adresse des Pi weiterzuleiten (die natürlich hartcodiert werden müsste). Alle anderen Anfragen sollten zu den normalen DNS-Servern gehen.

Eine andere Möglichkeit besteht darin, DNS überhaupt nicht zu verwenden, sondern die hosts-Datei zu verwenden.

+0

In Bezug auf die Windows-Situation, gute Gedanken, einen DNS-Server auf dem Pi zu setzen. Ich habe einen öffentlichen DNS-Eintrag für diese private IP eingerichtet, aber es kann sein, dass die WLAN-Verbindung die Öffentlichkeit nicht nutzt und über das Zellennetzwerk verfügbar ist. Hosts wären nicht hilfreich, wenn ich keine Hosts-Datei auf jedem Telefon-Client speichern könnte - das Telefon benötigt die Auflösung, damit CORS funktioniert. – Brett

+0

Ich vermute, dass Windows DNS-Antworten aus Sicherheitsgründen einfach mit "ungültigen" IP-Adressen blockiert. Auch das Aufsetzen eines DNS-Servers auf den Pi alleine hilft nicht. Darüber hinaus müssen Sie auch über Möglichkeiten verfügen, DNS-Abfragen * nur * für diesen FQDN an den Pi und alle anderen an den öffentlichen DNS-Server zu richten. Daher die Notwendigkeit für einen anderen DNS-Server im Gerät. Auf den Hosts: Ja, ich wollte Ihren FQDN auf der Host-Datei jedes Telefons hinzufügen. Es kann trivial sein, wenn Sie Ihre App installieren, oder es kann unmöglich sein. –

+0

Endlich hatte Zeit, dies zu testen. Installierte Pdns, konfigurierte doppelte Zone für meine öffentlich zugängliche Zone, löste das Problem für Windows Phone. Zwei nach unten, eins (Android) zu gehen :). – Brett

Verwandte Themen