Guest WLAN with Web Authentication (WebAuth)
Most organisations need to provide internet access to visitors, contractors, and personal devices without granting them access to the internal corporate network. A guest WLAN with Web Authentication (WebAuth) achieves this by broadcasting a separate SSID that places connecting clients into an isolated VLAN, then intercepting all HTTP/HTTPS traffic and redirecting the client's browser to a captive portal login page before any internet access is granted. Authentication can be as simple as accepting a terms-of-use page (click-through) or as sophisticated as username/password validation against a RADIUS server.
WebAuth is enforced entirely by the Cisco Wireless LAN Controller (WLC). When a guest client associates with the SSID, the WLC places it in a pre-authentication state — the client receives a DHCP address but all traffic is intercepted by a redirect ACL. Only DNS lookups and HTTPS traffic to the portal are allowed through; everything else is blocked until the client completes the portal login. Once authenticated, the WLC moves the client to a post-authentication state where normal internet access is permitted. For how the WLC and APs communicate, see Controller-Based Networking.
Before starting this lab, ensure you understand WLC fundamentals at WLC Getting Started and SSID-to-VLAN mapping at WLC SSID & VLAN Mapping. For the switch trunk configuration that carries the guest VLAN from the WLC to the distribution switch, see Trunk Port Configuration and VLAN Creation & Management. For RADIUS-based authentication that can back the WebAuth portal, see AAA RADIUS Configuration. For the broader WLC and AP ecosystem, see Access Points & WLC and Lightweight vs Autonomous APs.
1. Guest WLAN & WebAuth — Core Concepts
WebAuth Client State Machine
Every guest client passes through three states from association to full internet access:
WebAuth Types — Internal vs External
| Type | Portal Hosted By | Customisation | Authentication Backend | Best For |
|---|---|---|---|---|
| Internal WebAuth | WLC built-in HTTPS server (port 8443) | Limited — logo and text only via WLC GUI | WLC local user database or RADIUS | Small deployments, labs, simple guest access |
| External WebAuth | Separate web server (ISE, ClearPass, custom) | Full HTML/CSS control — branded portal | ISE, RADIUS, AD, social login | Enterprise deployments, branded portals, ISE Guest |
| Passthrough (Splash Page) | WLC built-in | Limited | None — terms acceptance only, no credentials | Coffee shop / hotel style click-through |
Key Components of a Guest WebAuth Deployment
| Component | Purpose | Configuration Location |
|---|---|---|
| Guest VLAN | Isolates guest traffic from the corporate LAN — guest clients get IPs in a separate subnet routed only to internet, not internal resources | WLC → Controller → Interfaces; Switch VLAN database and trunk |
| Guest SSID | Open (no WPA pre-shared key) SSID broadcast for visitors — mapped to the guest VLAN interface | WLC → WLANs → Create New |
| Redirect ACL | Pre-auth ACL applied to guest clients — permits DNS and portal HTTPS, denies all other traffic (the deny is what triggers the redirect to the portal). See ACL Overview | WLC → Security → Access Control Lists |
| WebAuth Policy | Selects WebAuth type (internal/external/passthrough), portal URL, success redirect URL, and credential source | WLC → WLANs → [WLAN] → Security → Layer 3 |
| Guest Local Users | Username/password accounts stored on the WLC for internal WebAuth credential validation | WLC → Security → Local Net Users |
| Virtual Interface (VIP) | Dummy IP address used as the redirect destination — all guest browsers are redirected here. Must be a non-routable address (conventionally 1.1.1.1) so the WLC is always the only device that responds to it | WLC → Controller → Interfaces → Virtual |
Guest Traffic Flow Through the Network
2. Lab Topology & Scenario
The NetsTuts organisation needs a guest WLAN for visitors. Guests must accept a terms-of-use page and enter credentials before accessing the internet. Guest traffic must be completely isolated from the corporate LAN (10.0.0.0/24). The WLC already manages lightweight APs on the corporate WLAN (VLAN 10). This lab adds a second SSID — NetsTuts-Guest — on VLAN 100 with internal WebAuth.
3. Step 1 — Create Guest VLAN on the Distribution Switch
Before touching the WLC, create VLAN 100 on the distribution switch, add it to the trunk port connecting to the WLC, and configure a DHCP scope for guest clients. The SVI provides the default gateway:
NetsTuts_SW>en NetsTuts_SW#conf t ! ── Create guest VLAN ───────────────────────────────────── NetsTuts_SW(config)#vlan 100 NetsTuts_SW(config-vlan)#name GUEST-WLAN NetsTuts_SW(config-vlan)#exit ! ── Add VLAN 100 to the trunk toward the WLC ────────────── NetsTuts_SW(config)#interface GigabitEthernet0/1 NetsTuts_SW(config-if)#description Trunk to WLC NetsTuts_SW(config-if)#switchport mode trunk NetsTuts_SW(config-if)#switchport trunk allowed vlan add 100 NetsTuts_SW(config-if)#exit ! ── SVI — default gateway for guest clients ─────────────── NetsTuts_SW(config)#interface vlan 100 NetsTuts_SW(config-if)#description Guest WLAN Gateway NetsTuts_SW(config-if)#ip address 192.168.100.1 255.255.255.0 NetsTuts_SW(config-if)#no shutdown NetsTuts_SW(config-if)#exit ! ── DHCP scope for guest clients on VLAN 100 ────────────── NetsTuts_SW(config)#ip dhcp excluded-address 192.168.100.1 192.168.100.9 NetsTuts_SW(config)#ip dhcp pool GUEST-POOL NetsTuts_SW(dhcp-config)#network 192.168.100.0 255.255.255.0 NetsTuts_SW(dhcp-config)#default-router 192.168.100.1 NetsTuts_SW(dhcp-config)#dns-server 8.8.8.8 8.8.4.4 NetsTuts_SW(dhcp-config)#lease 0 4 NetsTuts_SW(dhcp-config)#exit NetsTuts_SW(config)#end NetsTuts_SW#wr
lease 0 4) — appropriate
for a transient guest population to reclaim IPs promptly. DNS servers
point to public resolvers (8.8.8.8) rather than the internal DNS server,
preventing guests from resolving internal hostnames. For DHCP details, see
DHCP Server Configuration.
For trunk port configuration, see
Trunk Port Configuration and
VLAN Creation & Management.
4. Step 2 — Create the Guest Dynamic Interface on the WLC
On the WLC, a dynamic interface is the WLC's representation of a VLAN — it defines the VLAN tag, the WLC's own IP address on that VLAN, and the DHCP server to use for clients on that interface. Navigate to Controller → Interfaces → New:
5. Step 3 — Configure the Pre-Authentication Redirect ACL
The redirect ACL defines what a guest client can do before authenticating. It must permit DNS (so clients can resolve hostnames) and permit HTTPS to the WLC's virtual IP (so the portal page loads). All other traffic is denied — and this is the key point: traffic that is denied by this ACL is what the WLC redirects to the captive portal, not what it silently drops. Navigate to Security → Access Control Lists → New:
1.1.1.1. When a guest browser is redirected to
https://1.1.1.1:8443/login.html, the WLC intercepts
this request and serves the portal page. The virtual IP is never
actually routed across the network. Verify or set it at
Controller → Interfaces → Virtual.
6. Step 4 — Create the Guest WLAN (SSID)
Navigate to WLANs → Create New → Go. The WLAN ties together the guest interface, open Layer 2 security (no PSK), and the WebAuth Layer 3 policy:
7. Step 5 — Create Guest Local User Accounts
For internal WebAuth, the WLC validates credentials against its local user database. Navigate to Security → Local Net Users → New:
8. Step 6 — Customise the Internal WebAuth Login Page
The WLC's internal portal can be lightly branded with a logo, headline, and terms message. Navigate to Security → Web Auth → Web Login Page:
9. Verification
Monitor → Clients — Guest Client State
WLC CLI — show client summary and show client detail
! ── Connect to WLC CLI via SSH ──────────────────────────── (Cisco Controller) >show client summary Number of Clients................................ 3 MAC Address AP Name Status WLAN Auth Protocol ------------------- --------------- -------------- ---- ---- -------- a4:c3:f0:11:22:33 NetsTuts-AP-01 Associated 2 Yes 802.11ac b8:27:eb:44:55:66 NetsTuts-AP-01 WebAuth Reqd 2 No 802.11n c0:ee:fb:77:88:99 NetsTuts-AP-02 Associated 1 Yes 802.11ac ! ── Detailed client info ────────────────────────────────── (Cisco Controller) >show client detail a4:c3:f0:11:22:33 Client MAC Address............................... a4:c3:f0:11:22:33 Client Username.................................. visitor1 AP Name.......................................... NetsTuts-AP-01 Client State..................................... Associated Wireless LAN Id.................................. 2 WLAN Profile Name................................ NetsTuts-Guest Interface........................................ guest-vlan100 VLAN............................................. 100 IP Address....................................... 192.168.100.15 Security Policy Completed........................ Yes Policy Type...................................... WebAuth Web Security Policy.............................. Passed Session Timeout.................................. 1800
show wlan summary and show acl detailed
(Cisco Controller) >show wlan summary WLAN ID Profile Name Status Interface ------- ----------------- ------- --------------- 1 NetsTuts-Corp Enabled management 2 NetsTuts-Guest Enabled guest-vlan100 (Cisco Controller) >show acl detailed GUEST-REDIRECT-ACL ACL Name: GUEST-REDIRECT-ACL Seq Action Protocol Src IP Src Port Dst IP Dst Port --- ------ -------- ------------- -------- -------------- -------- 1 Permit UDP(17) 0.0.0.0/0 Any 0.0.0.0/0 53 2 Permit UDP(17) 0.0.0.0/0 53 0.0.0.0/0 Any 3 Permit TCP(6) 0.0.0.0/0 Any 1.1.1.1/32 8443 4 Permit TCP(6) 0.0.0.0/0 Any 1.1.1.1/32 80 5 Deny Any 0.0.0.0/0 Any 0.0.0.0/0 Any
End-to-End WebAuth Validation Checklist
| Test | Expected Result | Confirms |
|---|---|---|
| Connect to NetsTuts-Guest SSID (no password) | Client associates and receives 192.168.100.x IP | Open SSID, guest VLAN interface, and DHCP scope all working |
| Open browser to a plain HTTP URL (e.g., http://neverssl.com) | Browser redirects to https://1.1.1.1:8443/login.html |
Redirect ACL and WebAuth engine intercepting HTTP traffic correctly |
| Enter credentials: visitor1 / Guest@2024 and submit | Browser redirects to https://netstuts.com — internet access granted | Local user authentication successful, post-auth policy applied |
| Ping 10.0.0.1 (corporate gateway) from guest client | Ping fails — no response | Guest VLAN isolation enforced at Layer 3 |
| Check WLC Monitor → Clients | Status changes from WebAuth Reqd to Associated (RUN) after login | WLC tracking client authentication state correctly |
| Wait 30 minutes (Session Timeout expiry) | Client is de-authenticated and must re-authenticate on next browser open | Session timeout and re-auth enforcement working |
Verification Command Summary
| Command / Location | What It Shows | Primary Use |
|---|---|---|
show client summary (WLC CLI) |
All associated clients — MAC, AP, status (Associated / WebAuth Reqd), WLAN ID, auth state | Quick overview of all connected clients and authentication status |
show client detail [MAC] (WLC CLI) |
Full client detail — IP, VLAN, policy type, auth method, WebAuth status, ACL applied, session timeout | Confirm a specific client's authentication state and applied policies |
show wlan summary (WLC CLI) |
All WLANs — ID, profile name, status, interface mapped | Confirm guest WLAN is enabled and mapped to the correct guest interface |
show acl detailed [name] (WLC CLI) |
Redirect ACL rules — sequence, action, protocol, source, destination, port | Verify redirect ACL rules are correctly defined and ordered |
| Monitor → Clients (WLC GUI) | Real-time client table with status, AP, WLAN, and IP | Visual confirmation of client state transitions during WebAuth testing |
| Monitor → Statistics → WLAN (WLC GUI) | Per-WLAN counters — associations, authentications, WebAuth success/failure counts | Operational monitoring — detect authentication failures and usage patterns |
10. Troubleshooting Guest WebAuth Issues
| Problem | Symptom | Cause | Fix |
|---|---|---|---|
| Browser never redirects to login page | Guest gets an IP address but opening a browser shows "connection timed out" — no portal appears | Layer 3 Web Policy not enabled on the WLAN, Preauthentication ACL field is empty, or the client is using an HTTPS-only URL where the browser's HSTS blocks the redirect before it can happen | Verify WLANs → [WLAN] → Security → Layer 3 has Web Policy enabled and GUEST-REDIRECT-ACL selected. Test with a plain HTTP URL — use http://neverssl.com which is designed for captive portal testing. Confirm the Virtual Interface is set at Controller → Interfaces → Virtual |
| Guest client does not receive a DHCP address | Client associates with the SSID but shows 169.254.x.x (APIPA) or no IP | VLAN 100 is not on the switch trunk to the WLC, DHCP scope is exhausted, or the Primary DHCP Server in the WLC guest interface points to the wrong IP | Check show interfaces trunk on the switch — confirm VLAN 100 is in the allowed list. Check show ip dhcp binding and show ip dhcp pool GUEST-POOL. Verify the Primary DHCP Server field in the WLC guest interface is 192.168.100.1. See DHCP Server Configuration |
| Login credentials rejected | Client reaches the portal but "Invalid username or password" appears after submitting | Local Net User account is expired, account is scoped to a different WLAN ID, or RADIUS is configured but unreachable causing the WLC to fall through to local users where the account does not exist | Check Security → Local Net Users — confirm account exists, Lifetime has not expired, and WLAN ID is 2. If using RADIUS, run ping [RADIUS-IP] from the WLC CLI to verify reachability, then check the RADIUS server auth log for a reject reason. See AAA RADIUS Configuration |
| Authenticated guests can access the corporate LAN | After successful login, a guest can ping or reach 10.0.0.x internal hosts | No Layer 3 ACL or firewall rule blocks traffic from VLAN 100 (192.168.100.0/24) to the corporate LAN (10.0.0.0/24) — VLAN separation at Layer 2 alone does not prevent routing between VLANs on a multilayer switch | Add an ACL or firewall rule on the Layer 3 boundary device: deny ip 192.168.100.0 0.0.0.255 10.0.0.0 0.0.0.255. See Applying ACLs and Firewall Concepts |
| Portal page shows SSL certificate warning | Browser displays "Your connection is not private" before showing the login page | The WLC uses a self-signed certificate for its internal HTTPS server — modern browsers flag self-signed certs from unknown CAs as untrusted | For labs: instruct users to click "Advanced" and proceed. For production: install a CA-signed certificate on the WLC at Security → Web Auth Certificate, or use External WebAuth with ISE which can present a properly signed certificate |
| Guest WLAN shows "Disabled" in WLC GUI | show wlan summary shows the guest WLAN status as Disabled |
WLAN Status checkbox was not enabled on the General tab, or the guest-vlan100 dynamic interface is not up because VLAN 100 is not on the trunk | Go to WLANs → [WLAN] → General and enable the Status checkbox. Verify the guest-vlan100 interface is up at Controller → Interfaces. Confirm at least one AP is associated under Wireless → Access Points. See WLC Getting Started |
Key Points & Exam Tips
- Guest WebAuth requires four components: a dedicated guest VLAN isolated from the corporate LAN, an open SSID mapped to that VLAN, a redirect ACL that permits DNS and portal HTTPS but denies everything else, and a Layer 3 Web Policy on the WLAN referencing the redirect ACL.
- The redirect ACL logic is inverted compared to a standard firewall ACL. Traffic that is denied by the ACL is what the WLC redirects to the captive portal. Traffic that is permitted (DNS, portal HTTPS) passes through without redirection. Permitting HTTP/HTTPS in the ACL would give guests full internet access without ever seeing the portal.
- The WLC Virtual Interface (conventionally 1.1.1.1) is the redirect target IP. It must be a non-routable address that no other network device owns — the WLC intercepts all requests to this IP internally and serves the login page. Set it at Controller → Interfaces → Virtual.
- Guest clients have two states: WebAuth Reqd (associated, DHCP address assigned, redirect ACL active, no internet) and Associated/RUN (authenticated, redirect ACL removed, internet permitted). These states are visible in Monitor → Clients and via
show client summary. - VLAN isolation must be enforced at Layer 3 — placing guests in VLAN 100 prevents Layer 2 communication with VLAN 10 but does not stop Layer 3 routing between the two. A firewall rule or ACL on the gateway must explicitly deny VLAN 100 from reaching the corporate subnet.
- Web Policy: Authentication requires username/password at the portal. Passthrough shows a splash page with a single Accept button and no credentials — the "coffee shop" model. Both use the same redirect ACL mechanism; only the portal page content and credential requirement differ.
- Local Net Users scoped to a specific WLAN ID and given a Lifetime expire automatically after the configured duration. For scale (100+ daily guests), use Cisco ISE with a Guest Portal for automated account management — local WLC users do not scale.
- Always test the captive portal with a plain HTTP URL such as http://neverssl.com — HTTPS URLs with HSTS headers may not redirect in modern browsers because the browser enforces HTTPS before the WLC can inject the redirect.
- On the exam: know the three WebAuth client states, the inverted deny-triggers-redirect logic of the redirect ACL, the role of the Virtual Interface, the difference between Authentication and Passthrough portal types, and how to read
show client summaryoutput.
TEST WHAT YOU LEARNED
In a Cisco WLC WebAuth deployment, what is the purpose of the Virtual Interface IP address (e.g., 1.1.1.1), and why must it be a non-routable address?
A guest client connects to NetsTuts-Guest, gets an IP address (192.168.100.15), but opening a browser shows "Connection timed out" — no portal appears. What is the most likely cause?
Why does the preauthentication redirect ACL use "Deny" in rule 5 for all traffic, when a deny in a standard ACL means "block"?
After a guest successfully logs in through the WebAuth portal, the client can browse the internet but can also ping 10.0.0.5 on the corporate LAN. What is the misconfiguration?
A guest's browser shows a certificate error before the captive portal login page appears. What causes this and what is the correct long-term fix for a production deployment?
What is the functional difference between Web Policy "Authentication" and "Passthrough" on the Cisco WLC guest WLAN?
Which two ACL entries are non-negotiable in the preauthentication redirect ACL for WebAuth to function correctly end-to-end?
The organisation has 150–200 guest visitors per day and the administrator has been manually creating WLC Local Net Users for each. What is the scalability problem and the recommended solution?
show client summary on the WLC CLI shows a guest client with status WebAuth Reqd even after the user claims to have submitted the login form correctly. What should be checked first?
ping [RADIUS-IP] from the WLC CLI to confirm reachability, then check the RADIUS server's authentication log for the specific reason code (wrong password, account not found, authorisation policy mismatch).A new branch needs a guest WLAN where visitors accept a terms-of-use page with a single button click — no username or password required — and are given internet access immediately. Which WLC settings achieve this?
Related Topics & Step-by-Step Tutorials
Related concepts and next steps:
- Wi-Fi Security – WPA2, WPA3 & EAP — Wi-Fi security — guest isolation best practices
- VLANs – Concepts & Overview — VLANs — guest VLAN isolation
- Firewalls – Concepts, Types, and Best Practices — firewall — guest network Internet access control
- Configuring a Wireless LAN Controller (WLC) — Gettin…
- Creating SSIDs and Mapping to VLANs on a Cisco WLC
- Private VLANs (PVLAN)