Gäste, Besucher und externe Dienstleister brauchen oft Internetzugang — aber keinen Zugriff auf das interne Netzwerk. Ein Captive Portal auf OPNsense löst dieses Problem elegant: Gäste verbinden sich mit dem WLAN und werden auf eine Anmeldeseite weitergeleitet, wo sie sich mit einem Voucher-Code oder eigenen Zugangsdaten authentifizieren. Der Zugang ist zeitlich begrenzt, bandbreitenlimitiert und vollständig vom Produktivnetz isoliert.
Architektur des Gäste-Netzes
Ein professionelles Gäste-WLAN besteht aus vier Komponenten:
- VLAN für Gäste: Eigenes Netzwerksegment, isoliert vom Produktivnetz
- Access Point: WLAN mit dedizierter SSID, die in das Gäste-VLAN bridged
- Captive Portal: Anmeldeseite, die Authentifizierung erzwingt
- Firewall-Regeln: Erlauben nur Internet-Traffic, blockieren alles Interne
Netzwerk-Topologie
Internet
│
┌───┴───┐
│OPNsense│──── VLAN 20: Server (10.0.20.0/24)
│Firewall│──── VLAN 30: Clients (10.0.30.0/24)
│ │──── VLAN 70: Gäste (10.0.70.0/24) ◄── Captive Portal
└───┬───┘
│
Managed Switch (802.1Q Trunk)
│
Access Point
├── SSID: Firma-Intern → VLAN 30
└── SSID: Firma-Gast → VLAN 70
Schritt 1: VLAN für Gäste einrichten
Falls noch kein Gäste-VLAN existiert, erstellen Sie es auf OPNsense:
- Navigieren Sie zu Interfaces → Other Types → VLAN
- Klicken Sie auf + und konfigurieren Sie:
- Parent: Das physische Interface zum Switch (z.B.
igc1) - VLAN Tag: 70
- Description: Gaeste_VLAN
- Parent: Das physische Interface zum Switch (z.B.
- Unter Interfaces → Assignments weisen Sie das neue VLAN einem Interface zu
- Konfigurieren Sie das Interface:
- IPv4: Static, 10.0.70.1/24
- Enable: Aktiviert
DHCP für Gäste-VLAN
Unter Services → DHCPv4 → Gaeste_VLAN:
- Range: 10.0.70.100 – 10.0.70.250
- DNS: 10.0.70.1 (OPNsense als DNS, für DNS-Filtering)
- Lease Time: 3600 (1 Stunde — kurz, da Gäste nur temporär sind)
- Gateway: 10.0.70.1
Schritt 2: Firewall-Regeln für das Gäste-VLAN
Die Regeln folgen dem Prinzip Deny by Default — nur explizit freigegebener Traffic wird zugelassen.
Gaeste_VLAN-Regeln (Reihenfolge beachten):
| Nr. | Aktion | Quelle | Ziel | Port | Beschreibung |
|---|---|---|---|---|---|
| 1 | Allow | Gaeste_VLAN net | Gaeste_VLAN address | 53 (TCP/UDP) | DNS über OPNsense |
| 2 | Allow | Gaeste_VLAN net | Gaeste_VLAN address | 8443 (TCP) | Captive Portal Zugriff |
| 3 | Block | Gaeste_VLAN net | RFC1918 networks | * | Kein Zugriff auf private Netze |
| 4 | Allow | Gaeste_VLAN net | * | 80, 443 | HTTP/HTTPS ins Internet |
| 5 | Block | Gaeste_VLAN net | * | * | Alles andere blockieren |
Regel 3 ist entscheidend: Sie blockiert den Zugriff auf alle privaten IP-Bereiche (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16), sodass Gäste weder Server, Clients noch andere VLANs erreichen können.
Schritt 3: Captive Portal aktivieren
Navigieren Sie zu Services → Captive Portal → Administration:
-
Klicken Sie auf + um eine neue Zone zu erstellen:
- Enabled: Aktiviert
- Interfaces: Gaeste_VLAN
- Authenticate using: Voucher / Local Database / RADIUS (je nach Bedarf)
- Idle timeout: 30 Minuten (automatisches Abmelden bei Inaktivität)
- Hard timeout: 480 Minuten (maximale Sitzungsdauer: 8 Stunden)
- Concurrent logins: 1 (ein Voucher = ein Gerät)
- SSL certificate: Wählen Sie ein gültiges Zertifikat (z.B. von Let’s Encrypt)
-
Unter Allowed addresses fügen Sie Ausnahmen hinzu, die ohne Authentifizierung erreichbar sein sollen (z.B. die eigene Website).
Schritt 4: Voucher-System einrichten
Voucher sind Einmal-Codes, die an Gäste ausgegeben werden. Jeder Code hat eine definierte Gültigkeit und kann nur einmal verwendet werden.
Unter Services → Captive Portal → Vouchers:
-
Erstellen Sie eine Voucher-Gruppe:
- Name: Tagesvoucher
- Validity: 480 (Minuten = 8 Stunden)
- Quantity: 50
-
Voucher generieren: Klicken Sie auf „Generate” — OPNsense erstellt 50 einmalige Codes
-
Voucher exportieren: Die Codes können als CSV exportiert und ausgedruckt werden. Typisches Format für den Empfang:
╔═══════════════════════════════╗
║ Firma GmbH - Gäste-WLAN ║
║ ║
║ SSID: Firma-Gast ║
║ Code: A7X9-K2M4-P8L1 ║
║ Gültig: 8 Stunden ║
╚═══════════════════════════════╝
Voucher-Typen für verschiedene Szenarien
| Typ | Gültigkeit | Bandbreite | Einsatz |
|---|---|---|---|
| Tagespass | 8 Stunden | 20 Mbit/s | Besucher, Meetings |
| Wochenpass | 7 Tage | 50 Mbit/s | Externe Berater |
| Event-Pass | 4 Stunden | 10 Mbit/s | Konferenzen, Schulungen |
| Lieferanten | 2 Stunden | 5 Mbit/s | Kurzbesuche |
Schritt 5: RADIUS-Anbindung (Optional)
Für größere Umgebungen ist eine RADIUS-Anbindung sinnvoller als lokale Voucher. RADIUS ermöglicht zentralisierte Authentifizierung und detailliertes Accounting.
FreeRADIUS auf OPNsense installieren
- Unter System → Firmware → Plugins installieren Sie
os-freeradius - Navigieren Sie zu Services → FreeRADIUS → General: Aktivieren Sie den Dienst
- Unter Users erstellen Sie Benutzer:
- Username: gast_mueller
- Password: (sicheres Passwort)
- Session-Timeout: 28800 (8 Stunden)
- Max-Bandwidth-Down: 20000000 (20 Mbit/s in Bit/s)
Captive Portal mit RADIUS verbinden
-
Unter System → Access → Servers erstellen Sie einen RADIUS-Server:
- Type: RADIUS
- Hostname: 127.0.0.1
- Shared Secret: (starkes Secret)
- Authentication Port: 1812
- Accounting Port: 1813
-
Im Captive Portal ändern Sie Authenticate using auf den RADIUS-Server.
RADIUS-Accounting
RADIUS-Accounting protokolliert jede Sitzung mit Start- und Endzeit, übertragenem Datenvolumen und IP-Adresse. Das ist wichtig für:
- Compliance: Nachweis, wer wann im Netz war
- Störerhaftung: Dokumentation der Nutzung
- Kapazitätsplanung: Auswertung der Bandbreitennutzung
Schritt 6: Bandbreitenlimits konfigurieren
Ohne Bandbreitenlimits kann ein einzelner Gast die gesamte Leitung beanspruchen. OPNsense bietet dafür Traffic Shaping über Pipes.
Pipe-Konfiguration
Unter Firewall → Shaper → Pipes:
-
Download-Pipe:
- Bandwidth: 20 Mbit/s
- Mask: source (pro Client)
- Description: Gaeste_Download
-
Upload-Pipe:
- Bandwidth: 5 Mbit/s
- Mask: source (pro Client)
- Description: Gaeste_Upload
Shaper-Regeln
Unter Firewall → Shaper → Rules:
-
Download-Regel:
- Interface: Gaeste_VLAN
- Direction: in
- Target: Gaeste_Download Pipe
- Source: any
- Destination: Gaeste_VLAN net
-
Upload-Regel:
- Interface: Gaeste_VLAN
- Direction: out
- Target: Gaeste_Upload Pipe
- Source: Gaeste_VLAN net
- Destination: any
Mit der Mask: source-Einstellung erhält jeder Client sein eigenes Limit — 20 Mbit/s Down und 5 Mbit/s Up pro Gerät.
Schritt 7: Custom Landing Page
Die Standard-Anmeldeseite funktioniert, aber eine gebrandete Seite hinterlässt einen professionelleren Eindruck.
Unter Services → Captive Portal → Templates:
- Laden Sie das Standard-Template herunter
- Bearbeiten Sie die HTML/CSS-Dateien:
- Firmenlogo einbinden
- Farben anpassen
- Nutzungsbedingungen hinzufügen
- Willkommensnachricht formulieren
Beispiel-Struktur der Landing Page:
<div class="login-container">
<img src="logo.png" alt="Firma GmbH" class="logo">
<h1>Willkommen im Gäste-WLAN</h1>
<p>Bitte geben Sie Ihren Zugangscode ein:</p>
<form method="post" action="$PORTAL_ACTION$">
<input type="text" name="auth_voucher" placeholder="Voucher-Code">
<button type="submit">Verbinden</button>
</form>
<div class="terms">
<p>Mit der Nutzung akzeptieren Sie unsere
<a href="/nutzungsbedingungen">Nutzungsbedingungen</a>.</p>
</div>
</div>
- Packen Sie die bearbeiteten Dateien als ZIP und laden Sie das Template hoch
DNS-Filtering für Gäste
Zusätzlich zum Captive Portal empfiehlt sich DNS-basiertes Content-Filtering über Unbound DNS auf OPNsense:
- Installieren Sie das Plugin
os-unbound-plus-dnsbl(falls nicht vorhanden) - Unter Services → Unbound DNS → Blocklist aktivieren Sie Blocklisten:
- Malware-Domains
- Phishing-Domains
- Optional: Werbe-Domains
- Stellen Sie sicher, dass das Gäste-VLAN nur den OPNsense-DNS nutzen kann (Firewall-Regel 1 erlaubt DNS nur zur OPNsense-Adresse)
Monitoring und Logging
Aktive Sitzungen überwachen
Unter Services → Captive Portal → Sessions sehen Sie alle aktiven Gäste-Sitzungen:
- Benutzername / Voucher-Code
- IP-Adresse und MAC-Adresse
- Verbindungsdauer
- Übertragenes Datenvolumen
- Manuelles Trennen einzelner Sitzungen
Syslog-Integration
Captive-Portal-Events können an einen zentralen Syslog-Server gesendet werden. Relevante Events:
- Login-Versuche (erfolgreich und fehlgeschlagen)
- Session-Timeouts
- Manuelle Disconnects
- Voucher-Verbrauch
Häufige Probleme und Lösungen
| Problem | Ursache | Lösung |
|---|---|---|
| Portal-Seite erscheint nicht | DNS-Redirect fehlt | Captive Portal DNS über OPNsense erzwingen |
| HTTPS-Warnung im Browser | Ungültiges Zertifikat | Let’s Encrypt-Zertifikat für Portal-Hostname |
| Gast kommt nicht ins Internet | Firewall-Regel fehlt oder falsche Reihenfolge | Regeln prüfen: DNS → Block RFC1918 → Allow HTTP/S |
| Voucher funktioniert nicht | Zeitzone falsch oder Voucher abgelaufen | Systemzeit und Voucher-Gültigkeit prüfen |
| Langsame Verbindung | Traffic Shaper zu restriktiv | Pipe-Bandbreite erhöhen |
Fazit
Ein professionelles Gäste-WLAN mit OPNsense Captive Portal bietet Sicherheit durch VLAN-Isolation, kontrollierte Zugangsdauer über Voucher oder RADIUS, Bandbreitenlimits pro Client und DNS-Filtering. Die Einrichtung erfordert etwas Aufwand, aber das Ergebnis ist ein Gastnetz, das sowohl sicher als auch benutzerfreundlich ist. Gäste erhalten unkomplizierten Internetzugang, während das Produktivnetz vollständig isoliert bleibt.
Mehr zu diesen Themen:
Weitere Artikel
Backup-Strategie für KMU: Proxmox PBS + TrueNAS als zuverlässiges Backup-Konzept
Backup-Strategie für KMU mit Proxmox PBS und TrueNAS: 3-2-1-Regel umsetzen, PBS als primäres Backup-Target, TrueNAS-Replikation als Offsite-Kopie, Retention Policies und automatisierte Restore-Tests.
OPNsense Suricata Custom Rules: Eigene IDS/IPS-Signaturen schreiben und optimieren
Suricata Custom Rules auf OPNsense: Rule-Syntax, eigene Signaturen für interne Services, Performance-Tuning, Suppress-Lists und EVE-JSON-Logging.
Proxmox Cluster-Netzwerk richtig planen: Corosync, Migration, Storage und Management
Proxmox Cluster-Netzwerk designen: Corosync-Ring, Migration-Network, Storage-Network für Ceph/iSCSI, Management-VLAN, Bonding/LACP und MTU 9000 — mit Beispiel-Topologien.