Setup Guide

Cisco WLC Captive Portal
Setup Guide

Connect your Cisco Catalyst 9800 or AireOS wireless LAN controller to CaptiFi with Central Web Authentication (CWA): capture guest emails, automate Google reviews and run marketing on autopilot. No ISE required.

๐Ÿ“‹ Before you start, make sure you have:
โ€ข A Cisco Catalyst 9800 (IOS-XE 17.x) or an AireOS WLC (8.x: 5500, 8500 or virtual WLC) with access points joined and operational
โ€ข Admin access to the WLC (GUI or CLI)
โ€ข A CaptiFi account with a Cisco site created - create one here, then contact support and we set the Cisco site up with you
โ€ข Your config pack from CaptiFi, containing your RADIUS shared secret, NAS identifier and every value used below

1 How the CWA flow works

As of August 2026, CaptiFi supports both Cisco WLC operating systems using Central Web Authentication (CWA): the same ISE-style flow, with CaptiFi acting as the RADIUS server. You do not need ISE.

Catalyst 9800 Appliance, cloud or embedded, running IOS-XE 17.x. Follow steps 2 to 4 below.
AireOS WLC 5500, 8500 or virtual WLC running AireOS 8.x (for example serving Aironet 2700 APs). Follow steps 2 and 3 conceptually, then the AireOS section.

The sequence at runtime: a guest joins your open guest SSID, the WLC sends MAC authentication (MAB) to CaptiFi's RADIUS server, unknown guests are accepted into a quarantine state with a redirect to your CaptiFi splash page, the guest completes the splash form, CaptiFi authorises their MAC and tells your WLC to re-check the session (CoA on the 9800, Disconnect-Request/PoD on AireOS), and the WLC re-authenticates the session and grants full internet access.

๐Ÿ’ก You never hard-code a splash URL on a Cisco WLC. CaptiFi returns the redirect URL dynamically in the RADIUS reply (the url-redirect attribute), pointing the guest at your branded splash page, which you design in the CaptiFi dashboard's Splash Manager. The exact URL for your site is shown in your config pack.
โš ๏ธ The redirect ACL name and RADIUS settings must be entered exactly as shown. Cisco 9800 configuration varies by IOS-XE version: if you get stuck, email support@captifi.io and we walk through it with you.

2 Add the CaptiFi RADIUS server

On the 9800 GUI, go to Configuration โ†’ Security โ†’ AAA โ†’ Servers/Groups โ†’ RADIUS โ†’ Servers โ†’ Add and enter:

Server Address radius.captifi.io
Auth Port 1812
Accounting Port 1813
Shared Secret Provided by CaptiFi in your config pack (also shown in the dashboard's Cisco Setup Guide)
Support for CoA Enabled

CLI equivalent, including dynamic authorization for CoA:

radius server CAPTIFI address ipv4 <resolved-ip-of-radius.captifi.io> auth-port 1812 acct-port 1813 key <YOUR_SHARED_SECRET> aaa server radius dynamic-author client <radius-server-ip> server-key <YOUR_SHARED_SECRET>

Then create a server group and the method lists the WLAN will reference:

aaa group server radius CAPTIFI_GROUP server name CAPTIFI aaa authorization network CAPTIFI_AUTHZ group CAPTIFI_GROUP aaa accounting identity CAPTIFI_ACCT start-stop group CAPTIFI_GROUP

3 Create the redirect ACL

The ACL named CAPTIFI_REDIRECT controls which traffic is intercepted (redirected to the splash) versus allowed through pre-authentication:

ip access-list extended CAPTIFI_REDIRECT 10 deny udp any any eq domain 20 deny udp any eq domain any 30 deny tcp any host <app.captifi.io IP> eq 443 40 deny tcp any host <captifi.io IP> eq 443 100 permit tcp any any eq www 110 permit tcp any any eq 443
๐Ÿ’ก How Cisco redirect ACLs work on the 9800: in a CWA redirect ACL, deny = do NOT redirect (allow through) and permit = intercept and redirect. DNS and the CaptiFi hosts must be deny (reachable pre-auth), all other web traffic permit (redirected).

These are the CaptiFi hosts that must be reachable before login:

โš ๏ธ The ACL name must be exactly CAPTIFI_REDIRECT (case-sensitive). CaptiFi returns this name in the url-redirect-acl av-pair, so any other name is never matched.

4 Configure the guest WLAN for MAB

Go to Configuration โ†’ Tags & Profiles โ†’ WLANs โ†’ Add and configure:

Guest SSID security Layer 2 โ†’ None (open, the splash page handles sign-in)
MAC Filtering Enabled, select the CAPTIFI_AUTHZ authorization list

In the Policy Profile for this WLAN:

AAA Override Enabled
NAC State Enabled, NAC Type RADIUS
Accounting list CAPTIFI_ACCT
Apply the policy profile to your guest WLAN via the policy tag.

CLI equivalent (key lines):

wlan GUEST_WIFI 10 "Free WiFi" mac-filtering CAPTIFI_AUTHZ no security wpa no shutdown wireless profile policy GUEST_POLICY aaa-override nac accounting-list CAPTIFI_ACCT no shutdown

5 AireOS differences (legacy WLCs)

AireOS (5500, 8500 or virtual WLC running 8.x) uses the same CaptiFi RADIUS settings but a different GUI and, importantly, opposite ACL semantics.

Add the RADIUS server

Go to Security โ†’ AAA โ†’ RADIUS โ†’ Authentication โ†’ New: server IP is the resolved IP of radius.captifi.io, shared secret from your config pack, port 1812, Support for CoA enabled. Repeat under Accounting with port 1813.

Create the redirect ACL

The ACL must again be named exactly CAPTIFI_REDIRECT, but AireOS redirect ACLs use normal permit semantics, the opposite of the Catalyst 9800: you permit the traffic that should reach the network pre-auth, and the implicit deny-all at the bottom is what drives the redirect. Under Security โ†’ Access Control Lists, permit DNS (UDP 53, both directions), DHCP (UDP 67 and 68, both directions), and TCP 80 and 443 to app.captifi.io and captifi.io. Do not add a blanket permit for all web traffic: that would let HTTP/HTTPS through and suppress the redirect.

โš ๏ธ FlexConnect local switching: if your guest WLAN uses FlexConnect local switching, CAPTIFI_REDIRECT must exist BOTH as a FlexConnect ACL mapped to your FlexConnect group (Wireless โ†’ FlexConnect Groups โ†’ your group โ†’ ACL Mapping โ†’ Policies) AND as an identically named regular ACL under Security โ†’ Access Control Lists. Missing either is the most common reason a client gets an IP but is then denied instead of redirected.

Configure the guest WLAN

Security โ†’ Layer 2 None, with MAC Filtering enabled
Security โ†’ Layer 3 None
Security โ†’ AAA Servers Select the CaptiFi RADIUS server for Authentication and Accounting
Advanced Allow AAA Override enabled, NAC State = RADIUS NAC (the AireOS 8.x GUI labels this ISE NAC, it is the same setting), and FlexConnect Local Switching enabled if your APs run FlexConnect
๐Ÿ’ก Session bump on AireOS: after a guest completes the splash, CaptiFi sends a RADIUS Disconnect-Request (Packet of Disconnect) to your WLC on UDP 3799. The client silently re-associates, re-runs MAC auth and is granted full access. Make sure UDP 3799 is open inbound from CaptiFi to the WLC management IP. On the Catalyst 9800 the equivalent CoA port is UDP 1700.

6 Test the solution

Connect a phone to the guest SSID. The CaptiFi splash page should appear automatically (or open a browser to any HTTP site). Complete the splash form: full internet access should be granted within a few seconds, which is the CoA plus re-auth round trip.

Verify the capture landed in your CaptiFi dashboard under Site Guest Logs. If the guest shows up, you are live.

โœ… Your CaptiFi captive portal is now running on your Cisco wireless network. Every guest who connects sees your branded login page and their email is captured automatically.

Troubleshooting

No splash page appears Verify MAC filtering points at the CaptiFi authorization list and the WLC can reach radius.captifi.io:1812 (UDP).
Splash page will not load Check the redirect ACL entries for DNS and the CaptiFi hosts: guests must be able to reach app.captifi.io pre-auth.
Guest stuck after submitting the form CoA/PoD may be blocked. Verify dynamic authorization is enabled and the right UDP port is open inbound from CaptiFi to the WLC: 1700 on the 9800, 3799 on AireOS.
"RADIUS server not responding" Check the shared secret matches exactly; verify no firewall blocks UDP 1812/1813 outbound.
Works once, then guests re-prompted Session timeout: CaptiFi returns the session length from your site settings. Check minutes authorised in your dashboard.
ACL errors in logs The ACL name must be exactly CAPTIFI_REDIRECT (case-sensitive).
AireOS FlexConnect: client gets an IP then "network access denied", never redirected With FlexConnect local switching the redirect only enforces when CAPTIFI_REDIRECT exists both as a FlexConnect ACL mapped to the group and as an identically named regular ACL. See the AireOS section above.

Useful debug commands on the 9800:

show wireless client mac-address <mac> detail debug aaa authorization show access-lists CAPTIFI_REDIRECT

Works with your existing Cisco kit, or use our included device

CaptiFi is honest about this: you do not need to buy anything new. There are two paths and both are included with your plan.

Use your existing Cisco kit If you already run a Catalyst 9800 or AireOS WLC with joined access points, follow the steps above. CaptiFi acts as the RADIUS server and serves the branded splash. No ISE, no extra hardware.
Use our included plug-and-play device No Cisco controller, or you would rather not touch the WLC? We post you a pre-configured CaptiFi device. Plug it into your existing network by Ethernet, it pulls its config from the cloud, and a guest SSID appears in about two minutes. No controller, no static IP, no firewall changes.
๐Ÿ’ก The plug-and-play device is the zero-config alternative. It is the same marketing platform either way, so you can start on our device and move to your Cisco kit later, or never bother.

Related guides and pages

Cisco WLC captive portal FAQ

Which Cisco controllers does CaptiFi support?

As of August 2026, CaptiFi supports the Catalyst 9800 family (appliance, cloud and embedded, running IOS-XE 17.x) and AireOS WLCs (5500, 8500 and virtual WLC running 8.x). Both use the same CWA flow with CaptiFi as the RADIUS server.

Do I need Cisco ISE to use CaptiFi?

No. CaptiFi uses the same ISE-style Central Web Authentication flow, but CaptiFi itself acts as the RADIUS server. There is nothing else to license or deploy.

Where do I enter the splash page URL?

You do not. On a Cisco WLC the redirect URL is returned dynamically by CaptiFi in the RADIUS reply (the url-redirect attribute), so there is no splash URL field to fill in. You design the splash page itself in the CaptiFi dashboard's Splash Manager.

Why is my guest stuck on the splash page after submitting the form?

The re-authorisation message is probably blocked. Verify dynamic authorization is enabled on the WLC and that the right UDP port is open inbound from CaptiFi: 1700 for CoA on the Catalyst 9800, 3799 for Disconnect-Request on AireOS.

Will CaptiFi slow down my Cisco WiFi?

No. CaptiFi only handles the sign-in splash page and the RADIUS authorisation. Once a guest is through, their traffic runs straight over your Cisco network as normal. Speeds are unaffected.

Is the Cisco captive portal GDPR compliant with CaptiFi?

Yes. CaptiFi captures guest details with clear consent and keeps a full audit trail, so the email capture on your Cisco guest WiFi stays UK GDPR and PECR compliant.

For MSPs and installers

Setting this up for a client?

CaptiFi partners resell at a 30-40% wholesale margin, with white-label available at the same wholesale rates. You set your own retail price and bill your clients directly. The full wholesale rate card is published in six currencies (GBP, USD, EUR, CAD, AUD and NZD).

  • โœ“ Wholesale rate card published upfront, in your account currency
  • โœ“ Free 6-month internal demo licence for one internal test venue (testing and demos only)
  • โœ“ Partner dashboard, demo site and deployment guides within 48 hours of approval

Turn your Cisco guest WiFi into a marketing machine

Start a free 30-day trial, or watch a live demo first.