Lösen Sie den Captive Portal Assistant ohne Internetverbindung aus

2

Ich suche nach einer Lösung, um den Captive Portal Assistant unter Android 4.0-7 und iOS 7-10 auszulösen, wenn Sie sich mit einem LAN ohne Internetverbindung verbinden.

Unsere Anwendung läuft von einem Webserver in einem LAN. Wir möchten, dass unsere Benutzer (die normalerweise zum ersten Mal ein Benutzer sind) in der Lage sind, in so wenigen Schritten wie möglich auf die Anwendung zuzugreifen. Das System funktioniert derzeit, indem es sich mit einem WLAN-Netzwerk verbindet, einen Browser öffnet und eine URL eingibt. Wir möchten dies auf einen Schritt reduzieren (Verbindung zum WLAN), wobei der Browser automatisch von dem in Android und iOS integrierten Captive Portal Assistant geöffnet wird.

Ich bin nicht auf der Suche nach einem standardmäßigen Captive-Portal.

Dieses System muss die Captive-Portalassistenten in Android und iOS auslösen, ohne dass eine Anfrage an die von Google oder Apple betriebenen Original-Server gesendet wird. Keine Internetverbindung, nicht jetzt, nicht immer.

Das System basiert auf Debian, wobei HOSTAPD und DNSMASQ DHCP- und DNS-Auflösung ausführen. Der Webserver ist NGINX mit PHP7.0.

Wenn eine Lösung mit anderen für Debian verfügbaren Paketen, z. BIND oder irgendetwas, das das ersetzen könnte, was wir jetzt verwenden. Ich habe kein Problem mit der Änderung der Konfiguration.

Ich habe mich noch nie bei Superuser angemeldet, nur im Schatten gelauert und leise von den fantastischen Mitgliedern viel gelernt. Aus diesem Grund habe ich keinen Ruf, als Kopfgeld anzubieten. Wenn es einen anderen Weg gibt, jemanden zurückzuzahlen, der eine funktionierende Lösung hat, lass es mich wissen.

LivePIX
quelle
Nur ein Kommentar aus einem Jahr nach Ihrer Frage. Sie fragten "Wenn es einen anderen Weg gibt, jemanden zurückzuzahlen, der eine funktionierende Lösung hat, lass es mich wissen." Wenn Sie eine Antwort bestätigen und akzeptieren, können Sie dem Antwortenden einige Wiederholungspunkte geben. Sie müssen also nur die Antwort akzeptieren, die die Lösung hat. Dies ist auch nützlich für Leute wie mich, die nach einer Lösung für ein Problem wie Ihres suchen und, falls eine akzeptierte Antwort vorliegt, weiß, dass die Lösung funktioniert;)
frarugi87

Antworten:

0

Die Erkennung von Captive-Portalen funktioniert im Allgemeinen, indem versucht wird, über HTTP auf eine Seite zuzugreifen und zu überprüfen, ob die zurückgegebene Seite wie erwartet ist.

Android wird sich beispielsweise mit verbinden http://clients1.google.com/generate_204, der einfach den HTTP-Status von zurückgibt 204. Vermutlich funktionieren iOS-Clients auf ähnliche Weise.

Um Ihre Anwendung in der von Ihnen beschriebenen Weise zu öffnen, müssen Sie einfach alle HTTP-Anforderungen, die noch nicht an Ihren Anwendungsserver gerichtet sind, umleiten. Auf diese Weise erhalten Kunden niemals das erwartete Ergebnis.

Dies könnte durch die Verwendung von NAT mit erreicht werden iptables wenn die Clients das Debian-System als Gateway festgelegt haben. Dies könnte mit einer ähnlichen Regel wie folgt erfolgen: APPSERVER ist die IP-Adresse Ihres App-Servers:

iptables -t nat -D PREROUTING ! -d APPSERVER -p tcp –-dport 80 -j DNAT –to-destination APPSERVER

Ich bin mir jedoch nicht sicher, wie geeignet es ist, den Captive-Portalassistenten zu verwenden, da diese oft sehr eingeschränkt sind und der Benutzer möglicherweise Schwierigkeiten hat, zur Anwendung zurückzukehren, wenn er den Captive-Portalassistenten versehentlich schließt. Einige ältere Geräte können möglicherweise nicht automatisch das Vorhandensein eines Captive-Portals erkennen. Da der Benutzer niemals über Ihr Netzwerk auf das Internet zugreifen kann, zeigt der Assistent des Captive-Portals möglicherweise weiterhin regelmäßig Ihre Anwendung an oder weist auf das Netzwerk hin, dass es keinen Internetzugang hat, und verhindert zukünftige Verbindungen.

Dyusk
quelle
0

Das Beste, was ich finden konnte, war eine Antwort auf Serverfault (was eigentlich eine bessere Seite für diese Frage ist): Hier

Grundsätzlich führen Sie eine vorgefertigte Anwendung / einen Container aus, der die gesamte Arbeit für Sie erledigt.

djsmiley2k
quelle