2015-06-01 6 views
6

Ich habe einen Mikrocomputer entwickelt, um Kunden eine Portalseite anzuzeigen, wenn sie das Wi-Fi-Netzwerk anmelden.Captive Portal Page mit MITM

Das Problem ist, dass sie aus irgendeinem Grund nicht das übliche Popup vom Telefon/PC bekommen, wo wenn ich das gleiche mit meinem Router es funktioniert.

Ich mache den gesamten Prozess durch die Übertragung aller DNS-Anfrage an ein lokales Netzwerk (d. H. 10.0.0.2).

Beim Aufruf des Browsers erhalten sie die Portalseite, aber das Verhalten fehlt. (Wenn Sie sich mit dem WLAN verbinden, erscheint ein automatisches Popup mit der Meldung, dass Sie sich im Netzwerk anmelden müssen).

auf dem lokalen Apache habe ich eine einfache index.php Datei mit dem Statuscode 401 (nicht autorisiert).


Der Mikro-Computer über Ethernet-Port an den Router angeschlossen ist, und ich Voll Kontrolle über den Router haben, aber ich möchte das Captive Portal aus dem Mikrocomputer selbst verwaltet werden, das ist, warum ich bin keine Router-basierten Captive-Portale verwenden.

Tal.

+1

Sie benötigen Ihren WLAN-Zugangspunkt über DHCP/DNS zum anderen Computer. Das Einrichten ist eher eine Serverkonfigurationsfrage (im Gegensatz zur Programmierung) und wäre anderswo besser gefragt. –

+0

Ich mache es programmatisch das ist warum fragen hier. Ich habe einen Python-DNS-Proxy, der alle Anfragen auf den Apache-Server meines Computers verweist, der die Hotspot-Anmeldeseite anzeigt, aber auf den Geräten wird nichts ausgelöst. (keine Meldung "Sie müssen sich einloggen", obwohl der DNS-Proxy einwandfrei funktioniert). – Jentel

Antwort

0

Lösungen:

Möglichkeit 1:

Sie brauchen eine ganz bestimmte Konfiguration auf Ihrem Router haben, weil er Das Relais zu Ihrem Micro-Computer, und da ich glaube, dass Ihr Mikrocomputer über den Router ins Internet geht, müssen Sie dies auch in Betracht ziehen

  • Disable DNS-Dienst auf dem Router
  • Set DNS auf Ihrem Router 10.0.0.2
  • Disable Tor zum Internet auf Ihrem Router oder setzen Sie ihn auf 10.0.0.2
  • alle realen Server Set/Gateway manuell auf Ihrem Micro-Computer, und auch Routen sind in diesem Fall sehr wichtig.

Möglichkeit 2:

Vergessen Sie nicht, dass einige Geräte haben ihre DNS manuell oder mit speziellen Netzwerkkonfiguration festlegen oder eine bestimmte Firewall hat, die ungewöhnlich DNS-Server/Nachfrage sehen Sie dann Dies muss berücksichtigt werden. Die beste Lösung, um zu vermeiden, dass der DNS-Server auf dem Gateway ausgeführt wird, bedeutet, dass Ihr DHCP-Server auf dem Mini-Computer sein muss oder ein Gateway auf dem Mini-Computer verwenden oder Möglichkeit 3 ​​verwenden muss. Das bedeutet, dass Sie das Gateway, das Sie verwenden, überprüfen, ich denke, es ist das Router-Gateway.

Auch Sie könnten einen Konflikt zwischen Router-Job und Micro-Computer-Job haben, und IP-Konflikt wie die Kommunikation zwischen Client und Micro-Computer in einigen Fällen blockiert, dann überprüfen Sie Ihre IP-Konfiguration.

Möglichkeit 3:

Wenn Ihr Router ist Open-Source-Open-Source-Kabriolett ou können Sie DDWRT oder OpenWRT verwenden Ihren Hotspot zu verwalten gibt es eine Fülle von konfigurierbaren Hotspots in nur wenigen Klick und Sie Sie können sie mit Ihrem Micro-Computer-Server für Benutzer Datenbank oder DNS oder Proxy oder DHCP verbinden oder die Anfrage an Ihren Micro-Computer oder was auch immer umleiten.

Möglichkeit 4:

Werfen Sie einen Blick auf diese MITM Guide und prüfen Sie, ob Sie etwas vermissen

Hinweis:

Wenn meine Antwort nicht helfen, bitte Stellen Sie mehr technische Debugging-Infos zur Verfügung, denn anders als nur eine Beschreibung der Konfiguration wissen wir nicht viel ... ich Ich freue mich, Ihnen helfen zu können:) ... geben Sie auch die vollständige Konfiguration Ihres Netzwerks an. Es scheint, dass es sich um ein Netzwerkproblem handelt.

+0

Kann ich Sie außerhalb von stakoverflow kontaktieren? Ich habe eine spezifische Frage, die ich hier nicht stellen möchte. Vielen Dank. – Jentel

0

Ihre Frage ist mir nicht sehr klar.

Verwenden Sie einen Browser auf dem Telefon/PC oder eine Anwendung? Können Sie einen Screenshot des erwarteten Verhaltens bereitstellen?

Ich werde versuchen, es zu beantworten von dem, was ich denke, Sie fragen: Für einen Browser können Sie Ihre DNS oder ICMP verwenden, um einen Client zu Ihrem Captive Portal umleiten. ICMP ist das Layer-3-Protokoll und einige Plattformen (wie Android) können automatisch eine native Benachrichtigung für den Benutzer auslösen, wie "Hey, Sie müssen sich anmelden". Die DNS-Umleitung wird dies jedoch nicht auslösen. Sie erfordert eine Benutzerinteraktion mit einem Browser nach dem Herstellen einer Verbindung mit dem Netzwerk. Sie werden einen Browser öffnen, versuchen, zu stack overflow.com zu gehen und eine Weiterleitung zu Ihrem Captive-Portal zu erhalten.

Auch für eine Anwendung unter Android müssen Sie eine URL-Verbindung überprüfen. Hier ist ein Beispiel aus AOSP genommen:

private static final String mWalledGardenUrl = "http://clients3.google.com/generate_204"; 
private static final int WALLED_GARDEN_SOCKET_TIMEOUT_MS = 10000; 

private boolean isWalledGardenConnection() { 
    HttpURLConnection urlConnection = null; 
    try { 
     URL url = new URL(mWalledGardenUrl); // "http://clients3.google.com/generate_204" 
     urlConnection = (HttpURLConnection) url.openConnection(); 
     urlConnection.setInstanceFollowRedirects(false); 
     urlConnection.setConnectTimeout(WALLED_GARDEN_SOCKET_TIMEOUT_MS); 
     urlConnection.setReadTimeout(WALLED_GARDEN_SOCKET_TIMEOUT_MS); 
     urlConnection.setUseCaches(false); 
     urlConnection.getInputStream(); 
     // We got a valid response, but not from the real google 
     return urlConnection.getResponseCode() != 204; 
    } catch (IOException e) { 
     if (DBG) { 
      log("Walled garden check - probably not a portal: exception " 
        + e); 
     } 
     return false; 
    } finally { 
     if (urlConnection != null) { 
      urlConnection.disconnect(); 
     } 
    } 
} 
+0

Danke für die Antwort, glaube mir, dass ich das Thema perfekt verstehe. wenn es von innerhalb des Routers geschieht (Captive Portal durch DNS-Triggerung) wird automatisch beim Verbinden mit dem Hotspot eine Benachrichtigung an das Gerät gesendet. wenn es mit der MITM-Anwendung gemacht wird, tut es das nicht. Ich mache es mit einem PC, verbunden mit dem Router mit Ethernet-Kabel. – Jentel

+0

Es wäre hilfreich, Ihren Code zu sehen, wo das Ereignis ausgelöst wird. Ich vermute ein Problem mit Ihrem Skript oder einer Firewall, die das Ereignis fallen lässt. – Cookster

+0

Ich überprüfte es, kam in MITM, pingte an alle Webseiten, die alle zum Beispiel 192.168.2.100 (das ist mein lokaler Apache) zurückgeben. gehe in den Browser Ich bekomme das richtige Ergebnis (meine lokale Apache) - aber nichts löst die "Sie müssen sich anmelden, um eine Internetverbindung zu bekommen" – Jentel

Verwandte Themen