2017-02-24 3 views
9

umgesetzt Ich versuche, eine Splash-Seite/Wifi-Zielseite auf meinem vorhandenen öffentlichen WLAN-Netzwerk zu implementieren, mit the DNS method mentioned in Wiki, in dem ich einen benutzerdefinierten DNS-Server hosten, die ALL umleiten wird DNS-Lookup für eine lokale Adresse, wo ein Webserver gehostet wird, für alle Benutzer, bevor sie klicken zustimmen.iPhone/Android wird Wlan Landing Page nicht mit DNS

Nachdem der Benutzer auf "Einverstanden" geklickt hat, beginnt mein benutzerdefinierter DNS-Server mit der Rückgabe der korrekten IP für die Suche, sodass der Benutzer online gehen kann.

Hinweis: Wir verstehen vollkommen, dass dies in keiner Weise unser Netzwerk sichert und sogar unser Netzwerk gefährdet. Aber das Ziel ist hier , nur um die Landingpage vor unseren Benutzern zu öffnen. Dieser Ansatz funktioniert tatsächlich auf Windows Phone (Windows 8 habe ich getestet) als Splash-Seite, und sogar auf einem Computer, wenn ich versuche, eine zufällige Website zu öffnen, leitet es mich auf meine Seite, und nachdem ich zustimme, kann ich ins Internet gehen.

Wenn ich es auf dem iPhone/Android versuche, sobald ich eine Verbindung zum Hotspot herstelle, erscheint die Splash-Seite/Wifi-Zielseite wie erwartet (weil das Gerät versucht, den Internetzugriff zu überprüfen) , nachdem ich zustimme, und Internet-Zugang zu erlauben, werden sowohl iPhone und Android Splash-Bildschirm nicht verschwinden. Ich muss iphone zwingen, "dieses wifi ohne Netz zu verwenden", um zu beenden.

Ich frage mich, ob es eine spezielle (Javascript?) Methode gibt, die ich auf der Seite aufrufen kann, oder ein Paket, das ich an das Gerät senden muss? Ich habe auf iOS bemerkt, wenn ich auf einen Link zum App Store klicke, verschwindet die Splash-Seite, ohne die Verbindung zum Netzwerk abzubrechen. Also, ich denke, ich vermisse etwas hier.

Beispielsweise kann das Klicken auf the link to the iOS StackOverflow App auf iOS-Gerät eine Problemumgehung sein.

Hatte seit einer Woche herum gegoogelt, scheint nichts zu kommen.

übrigens baue ich meine benutzerdefinierte DNS-Server auf Knoten js, mit dem Modul dnsd.

= - = - =

= - = - = - = - = edit = - = - = - = - = - =

ich auch eine Demo von meinem Code auf GitHub hochgeladen: https://github.com/kylelam/dnsd_wifi

Um es zu testen, führen Sie es in Ihrem lokalen Netzwerk (Sudo-Knoten demo.js). Ändern Sie dann die DNS Ihres Telefons in die IP Ihres Geräts. Trennen Sie Ihr Telefon vom WLAN und stellen Sie erneut eine Verbindung her. (Unter iOS müssen Sie möglicherweise ins Detail gehen und Auto-Login und Auto-Join aktivieren oder wenn nicht, einfach neu starten.)

* Hinweis1: Der Server muss auf Port 53 laufen und 80, also braucht es sudo.

* note2: bitte lache nicht über meinen Code, ich bin sehr neu dazu. Aber bitte weisen Sie darauf hin.

* Anmerkung3: Sie müssen diese Pakete installieren NPM: os, Express-, dns, dnsd

+0

Diese möglicherweise keine Antwort auf Ihre Frage, aber können Sie "response.end" nach "response.send ('click here to login');".Bitte überprüfen Sie, ob dies einen Unterschied macht – manishg

Antwort

1

ttl auf 0 gesetzt könnte die Ursache des Problems sein, versuchen Sie einen anderen Wert wie 5.

+0

Danke Allen, aber leider nein, ich habe schon anderen Wert ausprobiert. – kaho

+0

nachdem Sie den Wert geändert haben, haben Sie Ihr Gerät neu gestartet? möglicher Cache noch in Kraft. – Allen

Verwandte Themen