pfSense Setup

Captive Portal Setup

Configure Captive Portal Zone on pfSense via WiZone Plugin with RADIUS MAC auth, HTTPS, and allowed hosts.

Step 1 – Check Captive Portal Status

Go to Services → WiZone → Captive Portal and review each section before proceeding.

WiZone Captive Portal Status

SectionInitial StateAction Required
RADIUS AuthenticationConfigured ✅None
WiFi NetworkWIFI (em2) ✅Verify DHCP is enabled
SSL Certificate → ACME PackageNot installed ⚠️Install ACME (Stage 2)
SSL Certificate → HTTPS↔SANNo HTTPS server name ⚠️Set HTTPS server name in Captive Portal
SSL Certificate → CertificateNo ACME/SSL cert ⚠️Issue certificate first (Stage 2)
Portal ZoneZone not created ⚠️Click Create Zone

Step 2 – Create Captive Portal Zone

Go to Services → WiZone → Captive Portal and click + Create Zone. Enter a zone name of your choice (e.g. WiZone).

The plugin auto-provisions the zone using values pulled from WiZone Portal — including RADIUS server, interface, and login page reference.

Step 3 – Configure Zone Settings

Go to Services → Captive Portal → Zone Name → Edit and set the following:

FieldValue
Enable Captive Portal
Idle Timeout (Minutes)(optional)
Concurrent LoginsMultiple
MAC FilteringDisable (RADIUS MAC auth handles this)
Custom Portal Page✅ Enable

Captive Portal ConfigurationCaptive Portal ConfigurationCaptive Portal Configuration

Click Save.


Step 4 – Upload Custom Login Page

Download the portal login page files from WiZone Portal → NAS Configuration → Portal login page files (done in Stage 1, Step 1).

After unzipping, use captiveportal-login.html. Upload it to both fields in the zone editor:

FieldFile
Portal page contentscaptiveportal-login.html
Auth error page contentscaptiveportal-login.html

HTML Page Contents Upload

Click Save.

This file contains device-specific values. Do not reuse it across different NAS devices. Always download a fresh copy from the Portal for each device.

Step 5 – Authentication Tab (RADIUS MAC)

In the zone editor, open the Authentication tab and configure:

FieldValue
Authentication MethodUse RADIUS MAC Authentication
Authentication ServerRAD_WiZone
RADIUS MAC Secretpassword (any value works — MAC auth validates by MAC address only)
Login Page Fallback(redirect to login page on MAC auth failure)
Session Timeout(enforce RADIUS Session-Timeout attribute)
Traffic Quota(enforce RADIUS pfSense-Max-Total-Octets)
Per-User Bandwidth Restrictions(enforce RADIUS upload/download limits)
MAC Address FormatDefault

Captive Portal Authentication OptionsCaptive Portal Authentication Options

Click Save.


Step 6 – Accounting Tab

In the zone editor, open the Accounting tab and configure:

FieldValue
Send RADIUS Accounting Packets
Accounting ServerRAD_WiZone
Send Accounting UpdatesInterim

Captive Portal Accounting Options

Click Save.


Step 7 – HTTPS Options

In the zone editor, open the HTTPS Options tab and configure:

FieldValueNotes
Enable HTTPS LoginEncrypts credentials in transit
HTTPS Server Namejohndoe.wizone.ioReplace with your subdomain from Stage 2 Step 1
SSL/TLS Certificatecaptive_keySelect the ACME cert issued in Stage 2
Disable HTTPS ForwardsLeave unchecked to allow HTTP → HTTPS redirect

Captive Portal HTTPS Options

Click Save.

HTTPS Server Name must exactly match the subdomain you chose in Stage 2 Step 1. A mismatch will cause browser security warnings for users.

Step 8 – Allowed IP Addresses

Go to Services → Captive Portal → Zone → Allowed IP Addresses and add the following to allow unauthenticated clients to resolve DNS:

Cloudflare DNS

1.1.1.1

Google DNS

8.8.8.8

Captive Portal Allowed IP Addresses


Step 9 – Allowed Hostnames (Whitelist)

Go to Services → Captive Portal → Zone → Allowed Hostnames and add the following with Direction = Both:

Allowed Hostnames List

WiZone Captive Portal

portal.wizone.io

Cloudflare SSL validation

challenges.cloudflare.com

Cloudflare Insights

static.cloudflareinsights.com

Allowed Hostnames Edit


Step 10 – Verify Final Status

Go to Services → WiZone → Overview and confirm all sections show Ready.

WiZone Overview - Final State

SectionStatus
WIREGUARD✅ Ready
CAPTIVE PORTAL✅ Ready
WZ-LOGGER✅ Ready
CORE FILES✅ Ready
All sections showing Ready means the WiZone Plugin installation is complete. Wi-Fi clients will now be redirected to the Captive Portal login page automatically.