Sehr spezifisches Problem..

ruehau

New Member
Hallo Leute,

wie der Titel schon sagt, habe ich ein sehr spezifisches Problem und hoffe, hier kann mir jemand weiter helfen.

Folgende Ausgangssituation habe ich. Ich betreibe ein WLAN, das offen für Smartphones ist und in dem mehrere Intranetserver anzufinden sind. Das Netzwerk ist nicht an das Internet angebunden.
Ich habe mir selbst einen DHCP programmiert. Dieser empfängt die DHCP-Discover Nachrichten von den Smartphones und weist ihnen eine IP, sowie als Gateway und DNS seine eigene IP zu.
Ebenfalls habe ich mir einen DNS selbst programmiert, der auf Port 53 nach DNS-Anfragen lauscht und diese auseinander nimmt. Kennt mein Server die angeforderte Adresse, so schickt er eine DNS-Nachricht zurück mit der IP des entsprechenden lokalen Webservers.
Das funktioniert alles so wie ich es mir vorstelle.

Und nun das Problem. Gibt jemand im Smartphone eine Internet-Adresse ein, z.B. www.google.de, so sagt das Smartphone: Die Seite konnte nicht gefunden werden. Ist klar. Mein Netzwerk ist nicht mit dem Internet verbunden und mein DNS reagiert auf diese Anfrage nicht, da er sie nicht beantworten könnte.

Gibt es nun eine Information, die ich in mein Antwort-DNS-Paket einbasteln kann, die dem Smartphone mitteilt, dass die angeforderte Adresse im Netzwerk nicht existiert und das Gerät veranlasst, seine DNS-Frage an seine eigene, mobile Datenverbindung zu stellen und die Internetseite über diese zu öffnen?
 
Ich glaube daran wird niemand gedacht haben als DNS entwicklet worden ist. Ich könnte mir nur vostellen, dass sich das Telefon austricksen ließe, wenn der DHCP kein Gateway vorgibt. In diesem Fall müsste aber trotzdem dein DNS die IP des Servers im Internet auflösen können.

Wenn du das Gateway weglässt, müsste sich aber alles, was der Nutzer erreichen will, sich im gleichen Subnetz befinden.

BTW: Es ist schon spät. In deiner Aussage wiedersprichst du dir selbst. Erst sagst du, dass dein DNS mit dem lokalen Webserver antwortet, wenn er den Eintrag nicht kennt und weiter unten im Text schreibst du Anfragen die ins Internet gingen, würden nicht beantwortet werden. Meinst du jetzt mit Adressen, die er nicht kennt Localdomains?
 
Hallo DeaD_EyE,

danke schonmal für die schnelle Antwort.

Zur Klärung des Widerspruchs. Momentan sieht mein DNS-Programm folgendermaßen aus: Erkennt es eine DNS-Anfrage, wird im Paket geschaut, welche Seite aufgerufen werden soll. Dann ist alles hart "eingecodet". if anfrage = "www.server1.de" dann DNS-Antwort mit IP von Server 1 else if anfrage = "www.server2.de" dann DNS-Antwort mit IP von Server 2. Hat mein Programm keine Antwort auf die Frage, so wird die Anfrage des Clients einfach ignoriert.
Ich kann sie ja nicht beantworten, da kein Internetanschluss da ist, um einen Forward-Lookup zu realisieren.

Dass das DNS-Protokoll auf so etwas nicht ausgelegt ist, das dachte ich mir schon. Bei den gestesteten Smartphones sieht es einfach so aus, dass sie, wenn sie keine Antwort bekommen, nach x Anfragen sagen: Die Seite kann nicht angezeigt werden.
Wenn mein DNS-Server wenigstens sagen könnte .. "du, Endgerät, ich hab deine Frage zwar bekommen, kenne aber keine Antwort darauf". Damit könnte ich dann Glück haben und das Smartphone versucht die Seite im Internet über seine mobile Datenverbindung zu suchen. Wenn es das nicht macht, Pech gehabt. Aber es sucht sich zumindest nicht den Wolf im WLAN, sondern bekommt gleich die Information, dass die Adresse in diesem Netz nicht verfügbar ist.
Gibt es vielleicht so etwas im DNS-Protokoll? .. kann mein Programm, wenn es die geforderte Adresse nicht auflösen kann, wenigstens ein DNS-Paket zurück schicken, in dem ein Bit gesetzt ist oder ähnliches? das dem Client diese Information gibt?
 
Also ich würde das Problem wahrscheinlich wie folgt angehen:

1. Den Smartphones kein Standard-Gateway über DHCP zuweisen. Ansonsten würden sie auch versuchen, sämtliche externen Server im Internet über dein internes System zu erreichen. Hast du denn mehrere Netze zwischen denen geroutet werden muss? Wenn ja, per DHCP nur statische Routen für die benötigten Netze zuweisen, und keine Default-Route.

2. Im DHCP würde ich zwei DNS-Server hinterlegen: Einmal deinen Internen Nameserver (10.0.0.11 oder wie auch immer) und dann einen externen Nameserver (z.B. google 8.8.8.8).

Wenn ein Smartphone jetzt eine DNS-Anfrage an deinen Server schickt und gar keine Antwort bekommt, müsste es beim zweiten Nameserver anfragen. Da die einzige dem Smartphone bekannte Verbindung nach draußen das 3G/wasauchimmer-Netz ist, sollte es so funktionieren, wie du dir das vorstellst.

Grundsätzlich weiß ich nicht, ob Smartphones nicht evtl. ihre mobile Datenverbindung kappen, wenn sie in einem WLAN eingebucht sind. Sollte das der Fall sein, sind wohl alle Bemühungen umsonst.
 
Zitat:

Grundsätzlich weiß ich nicht, ob Smartphones nicht evtl. ihre mobile Datenverbindung kappen, wenn sie in einem WLAN eingebucht sind. Sollte das der Fall sein, sind wohl alle Bemühungen umsonst.

Die GPRS/EDGE/UMTS/HSDPA Zugänge sollten im "Normallfall" dann deaktiviert sein, wenn ein WLAN Zugang besteht...
 
Die GPRS/EDGE/UMTS/HSDPA Zugänge sollten im "Normallfall" dann deaktiviert sein, wenn ein WLAN Zugang besteht...
Kann ich für das Galaxy S3 nicht bestätigen, beide Netze/NICs können OOTB unabhängig voneinander gleichzeitig genutzt werden.
 
Zitat:

Grundsätzlich weiß ich nicht, ob Smartphones nicht evtl. ihre mobile Datenverbindung kappen, wenn sie in einem WLAN eingebucht sind. Sollte das der Fall sein, sind wohl alle Bemühungen umsonst.

Die GPRS/EDGE/UMTS/HSDPA Zugänge sollten im "Normallfall" dann deaktiviert sein, wenn ein WLAN Zugang besteht...
Bei manchen Smartphones hat WLAN vorrang, aber wenn das nicht reagiert spring dann der Mobilfunk ein.
Deaktivieren der Mobilen Datenverbindung muss schon die Person tun, die das Smartphone benutzt.
 
Bei manchen Smartphones hat WLAN vorrang, aber wenn das nicht reagiert spring dann der Mobilfunk ein.
Deaktivieren der Mobilen Datenverbindung muss schon die Person tun, die das Smartphone benutzt.

Ist das so? Also ich meine mich an eine Situation zu erinnern, als ich mit meinem iPhone mit einem WLAN mit gestörter Internetverbindung verbunden war. Da ging dann gar nichts mehr.

Das "nicht reagieren" des WLAN müsste für so eine Implementierung ja auch erstmal definiert sein.

Ich wüsste auch nicht, wie ich feststellen kann, ob das Gerät gerade per WLAN oder mobiler Verbindung Daten versendet bzw. empfängt. Ich gehe aber fest davon aus, dass es nicht auf die Idee kommt, die mobile Verbindung zu verwenden, während es in einem WLAN ist.
 
Scheinbar kommt es darauf an, welche Version von Android verwendet wird. Joe schreibt ja, dass er bei seinem S3 die Netzte parallel nutzen kann.

Für den Cyanogenmod (ebenfalls auf einem S3) kann ich sagen, dass das Gerät Wlan definitiv präferiert. Erst nach dem Disconnect wird wieder auf die mobile Datenverbindung zurückgegriffen. Das macht sich bei mir an der Uni gerne bemerkbar, da das Wlan hier gerne überlastet ist und trotz Verbindung einfach nichts mehr geht. Erst nach dem expliziten Disconnecten aus dem Wlan (bzw. Abstellen des Wlans) kann ich wieder Daten senden und empfangen.

Tatsächlich verschwindet auch das UMTS/HSDPA/3G Symbol während ich in einem Wlan bin.
 
lass den DNS einfach auf eine Default-Seite Routen die dem Benutzer anzeigt das die angeforderte Seite nicht über das Wlan-Netz erreichbar ist.
 
Android-Geräte testen generell ob eine (Stabile) Internetverbindung über das Wlan besteht und halten die Datenverbindung offen bis dies der Fall ist.

Einige Geräte kappen allerdingsdie 3G-Verbindung nie (bevorzugen aber Wlan für alles was darüber routed wird), wiederum anderen reicht ein Wlan-Einwahlversuch um 3G zu stoppen (sehr nervig). Andere Programmierer, andere Sitten...
Das S3 mit Sammy-Rom's schliesst definitiv die GPRS-Verbindung sofern das Wlan Internet hat, eher aber scheinbar nicht. CM hält es ähnlich in den letzten 3 Versionen zumindest (ICS 9, JB1 10, JB2 10.1)

Tatsächlich verschwindet auch das UMTS/HSDPA/3G Symbol während ich in einem Wlan bin.
Wäre ansonsten sinnlos. Selbst mit Umts IDLE braucht das Unmengen Strom welcher sinnlos verschwendet wird.



Generell musst du wie beschrieben dafür sorgen dass die Routing-Tabelle der Geräte dein Wlan nicht als Portal für alle IP's sondern nur das lokale Netzwerk ansieht.
 
Back
Top