Gast WLAN mit Voucherdruck

Schon vor einiger Zeit hatte ich auf eBay einen kleinen Nadeldrucker günstig erworben. Ein Einsatzzweck für diesen blieb allerdings lange aus. Nachdem er lange Zeit ungenutzt in der Ecke stand, kam mir neulich eine Idee, wie ich ihn doch sinnvoll nutzen könnte: Vielleicht kennt ihr das. Ihr habt Besuch und jemand verlangt nach dem Schlüssel für euer WLAN. Nun möchte man oft ungern jeden in sein Netz lassen, vor allem nicht zeitlich unbegrenzt. Einige Router bieten dafür die „Gastzugang“ Funktion an, welche ein zweites Gast WLAN aufspannt. Getrennt vom restlichen Geschehen. Allerdings hat man auch dort keine Möglichkeit wirklich benutzerspezifisch und zeitlich sinnvoll einzuschränken. Also hab ich mir Gedacht: Da musst du was basteln.

Nadeldrucker

Das Zauberwort lautet: Captive Portal. Ihr kennt das sicherlich wenn ihr im Hotel seid und euch beim Nutzen des WLAN zuerst eine Login Seite eingeblendet wird, bei der ihr euch mit Zugangsdaten, die ihr an der Rezeption erhaltet, anmelden müsst. Das Ganze ist dann auf die Zeit eures Aufenthalts beschränkt. Sowas wollte ich auch. Nur wie bekommt ein Gast ohne großen Aufwand seine Zugangsdaten? Hier kommt der oben erwähnte Drucker ins Spiel. Möchte jemand das Gast WLAN benutzen braucht er nur einen Button zu drücken und bekommt automatisiert eine Anmeldung generiert, die ihm auf dem Drucker ausgedruckt wird und nach einer gewissen Zeitspanne wieder ungültig wird. Dann habe noch eine kleine Seite gebaut um die Zugänge zu verwalten, falls man doch mal eingreifen muss. Und fertig.

Momentan nutze ich als Captive Portal CoovaChilli, was auf einem WT3020F läuft. Um Benutzer zu authentifizieren kommt FreeRADIUS zum Einsatz, was momentan zu Testzwecken in einer VM auf meinem Server läuft. Die Benutzerinformationen werden in einer MariaDB gespeichert, welche von FreeRADIUS abgefragt wird. Der Button, mit dem ein Benutzer einen neuen Zugang anfordern kann, ist mit einem der GPIOs des WT3020F verbunden. Im Hintergrund läuft ein kleines Skript, welches regelmäßig den Status abfragt. Wird der Button gedrückt wird per cURL eine kleine, in PHP geschriebene, Seite aufgerufen die zufällige Benutzerdaten generiert und in die Datenbank schreibt. Die Ausgabe davon wird direkt auf eine serielle Schnittstelle weitergeleitet an die der Drucker angeschlossen ist. Zu guter letzt habe ich noch einen kleinen AP an den WT3020F angeschlossen, da mir die Sendeleistung nicht ausgereicht hat.

 

 

In nächster Zeit werde ich euch noch Schritt für Schritt vorstellen wie ihr so ein System selbst umsetzen könnt. Für die Zukunft geplant habe ich das ganze noch einmal deutlich zu vereinfachen. Das heißt den WT3020F durch z.B. einen Raspberry Pi zu ersetzen, da man dort deutlich einfacher an die GPIOs kommt und dieser auch die Power hat um alle benötigten Dienste zu betreiben. Damit würde ein Server im Backend wegfallen, wie es momentan der Fall ist.

 

Ich hoffe euch hat der kurze Einblick in dieses Projekt gefallen. Falls ja könnt ihr euch auf einen weiteren Teil freuen.

 

Links