Mein erster Beitrag beschäftigt sich mit dem Thema Captive Portal auf Open Source Basis. Ich habe mich mit diesem Thema vor einiger Zeit intensiv beschäftigt, da meine Eltern eine Ferienwohnung anbieten und die Idee aufkam, den Gästen dort kostenloses Internet anzubieten.
Die Kernforderung den Gästen einen Zugang in das Internet zu gewähren war im Grunde nur:“Es muss einfach sein und sie müssen sich registrieren, damit eine Zuordnung zu dem Benutzer möglich ist.“ Die Registrierung war mein Anspruch, damit im Bedarfsfall einsehbar ist, wer das WLAN genutzt hat – Stichwort: Auskunftsersuchen.
Da ich mich schon viel mit OpenWRT und dd-wrt auf Basis von Linksys WRT54GL WLAN Router auseinandergesetzt habe, bin ich schnell auf ChilliSpot aufmerksam geworden. Leider wird das Projekt nicht mehr weiterentwickelt. Glücklicherweise gibt es davon aber einen Fork der aktiv entwickelt wird: CoovaChilli.
CoovaChilli ist ein WLAN Captive Portal Access-Controller und ist passend für WRT54GL in der Firmware CoovaAP integriert. Zu meinem Bedauern stellte ich schnell fest, dass auch dieses Projekt nicht sehr gepflegt wird. Ich habe aus einem älteren Trunk mir eine Version gepatcht, mit der eine eigenständige Benutzerregistrierung möglich ist. Hierzu muss ein neuer Benutzer zuvor die Nutzungsbedingungen (Terms of Service Policy) akzeptieren.
Nach langen Nächten und kurzen Schlafpausen hatte ich eine lauffähige Version erstellen können und es konnte losgehen mit der Installation.
Kaum angefangen entdeckte ich die nächste Hürde. Ich wollte das WLAN Hotspot Netz vom privaten LAN meiner Eltern abschotten. Da meine Eltern in meinem VPN angebunden sind, war somit auch mein eigenes LAN und das einiger anderer betroffen, falls ein Gast „rumschnüffelt“ oder Unfug betreibt.
Als Firewall die vorhandene Fritzbox 7170 inklusive Freetz-Modifikation zu verwenden, erwies sich schnell als schlechte Idee. Zwar funktionierte das Regelwerk mit der Iptables-Erweiterung, nur dummerweise passte es dem Linux-Kernel nicht. Sobald über die WAN-Anbindung (DSL) hoher Traffic entstand, machte die Fritzbox dicke Backen und startete dank Kernel-Panic neu.
Zum Glück hatte ich noch eine Netscreen 5GT übrig, die ich für diese Zwecke ideal einsetzen konnte. Zweiter günstiger Nebeneffekt: Es fühlte sich damit auch deutlich sicherer an.
Die Netscreen war ideal, um meine privaten und ein paar andere Netze abzusichern, aber schnell stieß ich auf das nächste Problem:
„The user limit has been exceeded and x.x.x.x cannot be added“
Nach einiger Recherche wurde mir aber schnell bewusst, was das Problem war. Ich hatte das Interface zwischen Fritzbox und Firewall als TRUST definiert. In meinem Fall machte es zunächst auch Sinn, da ich dem Hotspot-Netz nicht vertraue und dies als UNTRUST definiert habe.
Problematisch ist nur, dass alle IP-Verbindungen ins Internet als Benutzer (User-Session) auf dem ScreenOS der Firewall eingestuft werden und die 5GT ein Limit von 10 Benutzer hat. Somit war das Limit schnell erreicht und das Surfen über den Hotspot wurde zur Qual. Also tauschte ich die Interfaces, passte das Regelwerk an, und schon gab es keine Probleme mehr.
Für diejenigen, die das Captive Portal noch in Aktion sehen möchten, habe ich noch ein paar Screenshots.
Nach der Anmeldung über die SSID erfolgt beim Aufruf der ersten Website ein Redirect:
Anschließend bekommt man über die Übersichtsseite alle notwendigen Informationen zur Registrierung und zur Anmeldung inklusive der oben genannten Nutzungsbedingungen:
Hier noch die eigentliche Benutzerregistrierung:
Und nach der Registrierung bzw. Anmeldung wird der Benutzer auf seine gewünschte Website wieder umgeleitet…
Die Seiten sind bewusst einfach gehalten. Einerseits müsste ich mich intensiv mit CSS auseinanderzusetzen, andererseits ist der WRT54GL nicht wirklich als Webserver für aufwändige Seiten geeignet und so können Benutzer das Captive Portal auch auf mobilen Endgeräten gut nutzen.