Ich bin mir bewusst, dass es schon einmal gefragt wurde (mit eingeschränkter oder keiner Lösung), aber ich habe keine aktuellen Updates gesehen und ich denke mein Szenario ist einzigartig, also werde ich einen neuen Thread starten.
Ich habe einen Raspberry Pi und er funktioniert unter anderem als Hotspot. 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 sein (Bearbeiten: Ausführen einer benutzerdefinierten App meines Designs, die Teil der Gesamtlösung ist), und dieses Gerät wird seine Mobilfunkverbindung aufrechterhalten, nicht für Tethering oder Routing, sondern damit Anwendung kann gleichzeitig auf interne und externe Ressourcen zugreifen.
Derzeit:
IOS : Dies funktioniert genau so, wie ich es von IOS erwarte - es erkennt, dass das WiFi-Netzwerk kein Standard-Gateway hat und externen Datenverkehr über die Zelle sendet.
Android : Das 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 löst nicht über den Webbrowser auf, obwohl jedes Netzwerkhilfsprogramm, das ich zur Fehlerbehebung auf dem Telefon installiert habe, den FQDN über DNS korrekt in die Pi-Adresse auflöst.
Ich hoffe, 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 alle Telefone tun, was IOS in dieser Hinsicht tut.
Mein aktuelles Szenario ist der Pi, der (unter anderem) eine Webseite hostet und das ist meine Präferenz, aber kann das sogar nativ gelöst werden?
Sie sagen, dass dies keine Tethering- oder Routing-Situation ist, aber wenn Sie darüber nachdenken, ist es beides.
Es ist Routing, weil der Datenverkehr 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.
Es ist in Bezug auf das Tethering wichtig, da es zeigt, dass das Android WLAN und Mobilfunk gleichzeitig haben kann (zumindest im Hotspot-Modus, aber wahrscheinlich auch im Client-Modus). In dieser Hinsicht ist meine Antwort nicht vollständig - ich kann Ihnen nicht sagen, wie Sie das erreichen.
Was das Problem mit dem Windows-Telefon anbelangt, das Sie erwähnt haben: Um das Problem zu beheben, identifizieren Sie zunächst, wo sich der DNS-Server befindet, der den FQDN des Pi kennt. Weiß ein öffentlicher DNS-Server davon, obwohl er sich offensichtlich in einem privaten Netzwerk befindet?
Es gibt zwei mögliche Erklärungen für Ihre Beobachtung:
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 wäre, DNS überhaupt nicht zu verwenden, sondern stattdessen die hosts-Datei zu verwenden.
Tags und Links android ios android-wifi network-programming windows-phone