← Alle Beiträge

Captive Portal für UniFi-Gäste-WLAN: serverlos, mit einem winzigen Redirector als Brücke

UniFi akzeptiert als externen Portal-Server nur eine IPv4-Adresse, CloudFront hat keine feste IP. Ein zustandsloser Kleinst-Redirector vor einem serverlosen Backend löst das – ein Muster für jede Hersteller-Einschränkung dieser Art.

Für das offene Gäste-WLAN an einem meiner Standorte wollte ich eine eigene Anmeldeseite: Nutzungsbedingungen bestätigen, Gerät freischalten, fertig. Das Netz läuft auf UniFi. Der Fall ist klein, das Muster begegnet mir bei Kunden ständig: Ein Hersteller-Produkt stellt eine Bedingung, die nicht zur Architektur passt, und man braucht eine möglichst dünne Brücke. Ein Anwendungsfall, kein Showcase.

Hypothese

Ein Captive Portal für UniFi lässt sich fast vollständig serverlos betreiben – statische Seite, API, Funktion, Zähler-Tabelle –, ohne dass ich einen Server mit Zustand pflegen muss. Die einzige Hürde, die ich vorab kannte: UniFi nimmt im Feld „External Portal Server“ ausschließlich eine IPv4-Adresse an. Ein CDN wie CloudFront hat keine feste IP. Meine Annahme war, dass ein winziger, zustandsloser Redirector mit statischer Adresse diese Lücke schließt und sonst nichts zu tun hat.

Drei Fragen: Funktioniert die Weiterleitungskette von UniFi bis zur Seite? Erreicht das Backend das Gateway über den Cloud-Connector des Herstellers? Und bleibt der nicht serverlose Teil wartungsarm?

Aufbau

Der Ablauf hat vier Stationen:

  1. UniFi fängt den ersten HTTP-Aufruf eines noch nicht freigeschalteten Gastes ab und leitet ihn an die konfigurierte IPv4-Adresse weiter mit Geräte-Kennung und Ziel-URL als Query-Parameter.
  2. Der Redirector – eine ARM-Kleinst-Instanz (t4g.nano) mit nginx und fester öffentlicher Adresse – antwortet auf jede Anfrage mit einer 302-Weiterleitung auf die HTTPS-Portalseite und reicht den Query-String unverändert durch.
  3. Die Portalseite liegt als statische Seite in S3 hinter CloudFront. API-Aufrufe gehen über denselben Origin an ein HTTP-API-Gateway und von dort an eine Lambda-Funktion.
  4. Die Lambda-Funktion spricht über den UniFi Site Manager Cloud-Connector mit dem Gateway: Sie prüft, ob das Gerät gerade als Gast im Hotspot-Netz angemeldet ist, und schaltet es nach Zustimmung zu den Nutzungsbedingungen frei.

Ein paar bewusste Entscheidungen:

Alles, einschließlich Zertifikat und Redirector, ist CDK-Code. Außerhalb liegen nur der API-Schlüssel für den Cloud-Connector (in einem Secret) und die Hotspot-Einstellungen in UniFi.

Messung

Eine Lasttest-Messung habe ich nicht gemacht – bei einem Gäste-WLAN wäre sie wenig aussagekräftig. Geprüft habe ich die Funktionskette und die Stolpersteine:

Zwei Lessons learned:

Zur Wirtschaftlichkeit: Den größten Teil der laufenden Kosten machen die Kleinst-Instanz und ihre öffentliche IPv4-Adresse aus, beide in der Größenordnung weniger Dollar im Monat. Der serverlose Teil fällt bei Gäste-Traffic praktisch nicht ins Gewicht. Der Redirector läuft rund um die Uhr – würde er nachts gestoppt, bekämen Gäste keine Anmeldeseite.

Fazit

Hypothese bestätigt, mit einer Einschränkung: Ganz ohne Server geht es nicht, weil der Hersteller eine feste IPv4 verlangt. Aber der Server ist auf das absolute Minimum reduziert – eine Weiterleitung, kein Zustand, keine Daten, jederzeit ersetzbar. Die Logik bleibt serverlos, versioniert und testbar.

Übertragbar ist das Muster weit über WLAN hinaus: Wenn ein Altsystem, ein Gerät oder ein Partner nur eine feste IP, nur HTTP oder nur ein bestimmtes Format akzeptiert, lohnt sich ein schmaler, zustandsloser Adapter an genau dieser Stelle, statt die ganze Architektur nach der Einschränkung auszurichten. Für diesen Fall bleibt es bei der Kleinst-Instanz: Updates spielt sie selbst ein, und jede Konfigurationsänderung ersetzt sie einfach.

Stack: AWS CDK · CloudFront · S3 · API Gateway · Lambda · DynamoDB · EC2 · nginx · UniFi

← Alle Beiträge