Skip to main content

Troubleshooting Captive Portal Redirects: Resolving Guest WiFi Connection Failures

You will be able to diagnose why guest WiFi shows connected but no internet by working up the stack: addressing, DNS, probe redirect, walled garden and RADIUS. You can then match the symptom to its cause, fix it in configuration on the hardware you already run, and build change controls that stop the fault returning.

By Tom HackettPublished Updated
📖 14 min read3,240 words3 worked examples3 practice questions10 key definitions

Video overview

Listen to this guide

View podcast transcript
HOST (UK ENGLISH, CONFIDENT CONSULTANT TONE): Welcome to the Purple Technical Briefing. Today we are tackling one of the most persistent headaches in enterprise networking: the captive portal redirect failure. When your guest WiFi shows as connected but there is no internet access, your visitors get frustrated, your helpdesk gets flooded, and your data capture strategy grinds to a halt. In this briefing, we will break down the technical architecture of captive portals, explore why modern operating systems and browsers often block them, and give you concrete implementation strategies to resolve these issues permanently. [PAUSE] Let us set the scene. You have deployed Cisco Meraki or HPE Aruba access points across a hundred retail locations. The hardware is solid. But guests complain they cannot access the internet. They select the SSID, their device shows the WiFi icon, but the splash page never appears. Or worse, they see a terrifying SSL certificate error. Why does this happen? It comes down to how operating systems detect internet connectivity. When a device connects to a network, it sends an HTTP probe to a known URL. For iOS, it is captive.apple.com. For Android, it is connectivitycheck.gstatic.com. Windows uses msftconnecttest.com. If the device receives a standard HTTP 200 OK response, it assumes it has direct internet access. If the network gateway intercepts that request and replies with an HTTP 302 redirect to a different URL, the operating system knows it is behind a captive portal. It then opens a pseudo-browser to load the splash page. The failure usually occurs at this interception point. [PAUSE] The first major point of failure is the Network Connectivity Status Indicator probe, or NCSI. If your firewall or gateway blocks these unencrypted HTTP requests, the operating system never receives the 302 redirect. It simply assumes the network is broken. To fix this, you must ensure your pre-authentication access control lists allow HTTP traffic to those specific OS detection URLs. The second, and increasingly common, issue is HTTP Strict Transport Security, or HSTS. Modern browsers enforce HTTPS for major domains. If a user connects to your WiFi and immediately tries to open google.com, their browser insists on an encrypted connection. When your gateway intercepts that HTTPS request and tries to redirect it to the captive portal, the browser detects a man-in-the-middle attack. The certificate presented by your gateway does not match google.com. The result is a hard block. The user sees a security warning and cannot proceed to the login page. The solution here is twofold. First, rely on the OS-level detection mechanisms we just discussed. They use unencrypted HTTP specifically to avoid this certificate mismatch. Second, ensure your walled garden configuration is flawless. What is a walled garden? It is the list of domains and IP addresses a guest can access before they authenticate. If you use social login via Microsoft Entra ID or Google Workspace, or if you process payments via Stripe, those domains must be in your walled garden. If they are not, the splash page might load, but the authentication process will fail silently. [PAUSE] Let us look at a real-world scenario. McDonald's serves millions of customers across thousands of locations. They use Purple to manage their guest WiFi. If their session timeout is set too short, a customer checking their phone over a long lunch might be forced to re-authenticate multiple times. That ruins the experience. We recommend setting session durations to 24 hours for hospitality and retail environments, using MAC address caching to recognise returning devices seamlessly. [PAUSE] Now for implementation recommendations. When deploying a captive portal, you must configure your gateway to intercept DNS and HTTP traffic correctly. If you use a cloud overlay like Purple, your local hardware, whether it is Juniper Mist or Ubiquiti UniFi, must be able to reach the Purple RADIUS servers. Here is a critical pitfall: DNS resolution. If a guest device cannot resolve the hostname of your captive portal, the redirect fails. Ensure your DHCP server hands out reliable DNS addresses, and verify that your gateway allows DNS queries to pass through the walled garden. Furthermore, consider the physical environment. High-density venues like stadiums or travel hubs, such as Manchester Airports Group, deal with thousands of concurrent connection attempts. If your local DHCP pool is exhausted, new devices will connect to the access point but fail to receive an IP address. They will never even reach the captive portal phase. Always size your subnets appropriately for peak capacity, and use short DHCP lease times for transient visitor networks. [PAUSE] Now for a rapid-fire question and answer session based on common helpdesk tickets. Question one: Why does the portal work on iPhones but fail on Android devices? Answer: It is almost certainly a walled garden issue. You have likely whitelisted captive.apple.com but missed connectivitycheck.gstatic.com. Update your pre-authentication access control lists. Question two: Guests authenticate successfully, but still have no internet. Why? Answer: Check your RADIUS configuration. The gateway is likely not receiving the Access-Accept message from the RADIUS server, or the post-authentication firewall rules are blocking traffic. Verify the shared secret and ensure ports 1812 and 1813 are open. Question three: Can we use HTTPS for the initial redirect to avoid security warnings? Answer: No. You cannot intercept an HTTPS request without causing a certificate error, unless you install a root certificate on every guest device, which is impossible for public WiFi. You must rely on the unencrypted HTTP OS probes to trigger the portal. [PAUSE] To summarise: Captive Portal failures are rarely hardware faults. They are almost always configuration mismatches in the redirect flow, walled garden, or DNS settings. Point one: Ensure OS detection URLs are accessible before authentication. Point two: Configure your walled garden to include all necessary identity providers and content delivery networks. Point three: Verify RADIUS communication between your gateway and your authentication platform. Point four: Size your DHCP scopes for peak density. By mastering these elements, you eliminate connection friction. You stop frustrating your visitors and start capturing the first-party data you need to drive loyalty and revenue. Purple's Identity-Based Networks simplify this process, providing a hardware-agnostic cloud overlay that handles the complexity of RADIUS, Captive Portals, and analytics seamlessly across 80,000 live venues worldwide. Thank you for joining this Purple Technical Briefing. For more detailed configuration guides and architecture diagrams, visit purple.ai.

Part of our core series: Captive Portal Guide →

Useful? Link to this tool

When guest WiFi shows connected but no internet, the device has joined the network but the captive portal redirect has broken. The usual causes are a blocked operating system probe, missing walled garden entries or failed DNS. Others are an exhausted DHCP pool or a RADIUS Access-Accept that never reaches the gateway. Each is fixable in configuration.

What does "guest WiFi connected but no internet" look like?

The device joins the network name (SSID) and shows a full signal, yet nothing loads. Each platform reports it differently:

  • iOS lists "No Internet Connection" under the network name.
  • Android shows "Connected, no internet" or a "Sign in to network" prompt that leads nowhere.
  • Windows marks the network "No internet".

The visitor sees a working WiFi icon and a dead browser, so they blame the venue.

One symptom can hide several different failures. You will usually see one of these patterns:

  • The login page never appears on any device.
  • The login page appears on iPhones but not on Android phones, or the reverse.
  • The browser shows a certificate or privacy warning instead of the login page.
  • The visitor completes the form, sees a success message, and still has no internet.
  • Everything works at quiet times and fails at peak.

Each pattern points to a different layer of the network. Start by reading the pattern, not by rebooting access points.

How captive portal detection works

A captive portal is the web page a gateway shows before it grants internet access. The gateway is your controller, firewall or access point, depending on your design.

Every major operating system checks for a captive portal as soon as it joins a network. It sends a plain HTTP request to a known address and compares the reply with what it expects. Each outcome means something different:

  • The reply matches. The device assumes it has open internet.
  • The gateway returns an HTTP 302 redirect. The device knows it is behind a portal. It opens a lightweight browser window, often called the captive network assistant, and loads your login page.
  • The request gets no reply. The device reports no internet and opens nothing.
Platform Probe URL Expected reply when online
iOS and macOS http://captive.apple.com/hotspot-detect.html HTTP 200 with a "Success" page
Android http://connectivitycheck.gstatic.com/generate_204 HTTP 204 No Content
Windows (NCSI) http://www.msftconnecttest.com/connecttest.txt HTTP 200 with the text "Microsoft Connect Test"
Firefox http://detectportal.firefox.com/success.txt HTTP 200 with the text "success"

Microsoft documents that its Network Connectivity Status Indicator (NCSI) also resolves dns.msftncsi.com as a DNS check. A Windows laptop can therefore report no internet when pre-authentication DNS is broken, even if HTTP works.

What usually causes a captive portal redirect to fail?

Seven causes account for most cases. They sit at different layers, from addressing up to authentication.

The operating system probe is blocked

The gateway's pre-authentication access control list (ACL) drops the probe instead of redirecting it. The device hears nothing back and decides there is no internet. It never opens the portal.

A DNS filtering service that blocks the probe hostnames has the same effect. This is the most common reason a portal never appears.

HTTPS and HSTS break the interception

HTTP Strict Transport Security (HSTS), defined in RFC 6797, tells browsers to reach a domain over HTTPS only. Browsers ship with a preload list of HSTS domains, including Google's and most banks'. When a visitor types google.com, the browser upgrades to HTTPS before the request leaves the device.

The gateway cannot redirect that request without presenting a certificate for google.com, which it does not hold. The browser shows a hard security warning with no way through.

The fix is to redirect only the plain HTTP probes in the table above, which exist for exactly this purpose. Never intercept HTTPS for portal redirection.

The walled garden is too narrow

The walled garden is the list of domains and IP addresses a device can reach before it authenticates. If an entry is missing, the login page loads partially or the sign-in step fails. The usual gaps are:

  • Identity provider endpoints for social or single sign-on login, such as Microsoft Entra ID, Okta or Google Workspace.
  • Content delivery network domains that serve your login page's fonts, scripts and stylesheets.
  • Payment processor domains, if you charge for access.
  • Purple's captive portal and RADIUS endpoints, listed in Purple's integration guide for your hardware.

DNS fails before authentication

The device must resolve the portal hostname before it can load the page. The redirect points nowhere in two cases:

  • The gateway blocks DNS in the pre-authentication state.
  • DHCP hands out a DNS server the device cannot reach.

Android adds a twist. If a visitor has set a specific Private DNS hostname, Android expects DNS over TLS on port 853. In automatic mode it falls back to ordinary DNS.

The DHCP pool is exhausted

When the address pool runs out, a new device associates with the access point but gets no IP address. Windows then assigns itself a 169.254.x.x link-local address, and other systems show a similar self-assigned state.

With no valid address, the device cannot send a probe. It looks connected but has no internet. This is the classic peak-time failure in stadiums, conference centres and transport hubs.

RADIUS never delivers the Access-Accept

RADIUS (Remote Authentication Dial-In User Service) carries the login decision from the authentication server to your gateway. The server replies Access-Accept or Access-Reject, as defined in RFC 2865. The gateway then opens access or keeps it closed.

A visitor who completes the form but stays offline almost always means the gateway missed the Access-Accept. The three usual causes are:

  • A mismatched shared secret.
  • A firewall blocking UDP 1812 (authentication) or UDP 1813 (accounting). RFC 2865 and RFC 2866 define these ports.
  • The wrong server address on the controller.

The portal's own certificate has expired

Your login page is served over HTTPS. If its TLS certificate expires, every modern browser blocks the page with a security warning. The redirect works perfectly, yet the visitor still cannot sign in.

How do you work out which cause you have?

Work up the stack in order. Each check rules out one layer, so stop at the first failure.

  1. Does the device have a valid IP address? Run ipconfig /all on Windows, or check the network details on a phone. A 169.254.x.x address, or no address at all, points to DHCP. Check pool utilisation on the DHCP server. Above 90%, you are close to exhaustion.
  2. Does DNS resolve? From a device on the guest virtual LAN (VLAN), a logically separate network segment, look up the portal hostname. If the lookup fails, pre-authentication DNS is blocked or the DHCP-assigned DNS server is wrong.
  3. Does the probe get a 302? Take a packet capture on the guest VLAN, or browse to one of the HTTP probe URLs. You should see the probe, then an HTTP 302 pointing to the portal. A probe with no reply means the ACL drops it. No probe at all means the device thinks it is already online, often from a cached state. Forget the network and rejoin.
  4. Does the login page load completely? Open browser developer tools (F12) and watch the network tab. Blocked requests to third-party domains point to walled garden gaps.
  5. Does the gateway receive an Access-Accept? Check the controller's RADIUS logs. A successful login is followed by an Accounting-Request with status Start. If no accounting record appears after login, the RADIUS path is broken.

Then match what you see against this table.

Symptom Most likely cause Fix
Portal never appears on any device Probe blocked by gateway ACL or DNS filter Allow probe hostnames before authentication and redirect them
Portal appears on iOS, not Android Android probe host missing from redirect rules Redirect connectivitycheck.gstatic.com and retest
Certificate warning instead of portal HTTPS interception, or expired portal certificate Redirect HTTP probes only, and renew the certificate
Portal loads with missing images or buttons Content delivery network domains blocked Add the login page's asset domains to the walled garden
Social login fails silently Identity provider endpoints missing Add Microsoft Entra ID, Okta or Google Workspace endpoints
Login succeeds, no internet Access-Accept not reaching the gateway Check the shared secret, UDP 1812 and 1813, and the server address
Visitors asked to sign in on every visit Short session, or randomised MAC address Lengthen sessions and plan for MAC randomisation
Failures only at peak times DHCP pool exhausted Enlarge the subnet and shorten the lease time

Worked scenario: a 1,500-seat conference centre at peak

Situation. A conference centre ran its attendee network on a single /24 subnet with an eight-hour DHCP lease. Morning keynotes ran smoothly. After lunch, attendees arriving for afternoon sessions saw "connected, no internet". The help desk treated it as a portal fault and restarted the controller twice.

What was done. Step 1 of the diagnosis found new devices holding 169.254.x.x addresses. A /24 offers 254 usable addresses, and the eight-hour lease kept every morning address reserved. The team moved the attendee VLAN to a /21 and cut the lease to 30 minutes.

Outcome. Usable addresses rose from 254 to 2,046, roughly eight times the previous capacity. An address left behind by a departing attendee now returns to the pool within 30 minutes, not eight hours. The fix took one change window and no new hardware.

Worked scenario: a 200-room hotel where Android guests could not sign in

Situation. After a login page redesign, a 200-room hotel received front desk complaints from Android guests. Most of them chose the Google sign-in option. The portal appeared, but the button did nothing.

What was done. The IT manager tested the flow on one iPhone, one Android phone and one Windows laptop. Developer tools on the laptop showed blocked requests to a font delivery network and to Google's sign-in domains. The redesign had added both. The team added them to the walled garden.

Outcome. Google sign-in completed on all three test devices at the first retest. The fix needed two walled garden entries and no hardware change.

Worked scenario: a 40-store retail estate after a firewall refresh

Situation. A retailer replaced the firewalls in 40 stores over a weekend. On Monday, shoppers in every refreshed store could complete the login form but stayed offline. Stores not yet refreshed worked normally.

What was done. Step 5 found no accounting records from the refreshed stores. The new firewall template denied outbound UDP by default, blocking 1812 and 1813. The team added explicit outbound rules to the template and pushed it to all 40 stores.

Outcome. Accounting records reappeared from every store after the push. Because only refreshed stores failed, the pattern pointed straight at the template and away from the WiFi.

Got questions about your specific setup?

Our team works with venue operators, IT managers, and network engineers across 80,000 venues. Book a 20-minute call and we will show you how others like you solved it.

How do you fix it on each operating system and controller?

The controller fix follows the same pattern on every platform. The operating system fixes are mostly about knowing how each one behaves.

On your controller

Purple runs as a cloud overlay on Cisco Meraki, HPE Aruba, Ruckus, Juniper Mist, Ubiquiti UniFi, Cambium, Extreme and Fortinet. The fix pattern is the same on all eight:

  1. Point the guest SSID at the external captive portal URL from your Purple integration guide, and disable any local splash page.
  2. Redirect unauthenticated HTTP traffic, including the probes, to that URL. Leave HTTPS alone.
  3. Allow DNS and DHCP before authentication.
  4. Add the walled garden entries: Purple endpoints, identity provider endpoints and login page asset domains.
  5. Enter the RADIUS server addresses and shared secret from your Purple dashboard. Then confirm the firewall allows outbound UDP 1812 and 1813.

Menu names differ by vendor and firmware version, so follow Purple's integration guide for your platform. Fortinet's community documentation on the FortiGate captive portal flow is a useful vendor-side reference for the redirect sequence.

On iOS and macOS

If the captive network assistant does not open, forget the network in Settings and rejoin. This forces a fresh probe.

Recent iOS and macOS releases also support the Captive Portal API. It lets the network advertise its portal through DHCP option 114, defined in RFC 8910, which reduces reliance on interception. If the assistant opens but stays blank, check the walled garden for asset domains.

On Android

Android shows a "Sign in to network" notification when it detects a portal. If the notification never appears, confirm the gateway redirects connectivitycheck.gstatic.com rather than dropping it.

If a visitor sees "Private DNS server cannot be accessed", their phone has a strict Private DNS hostname set. You have two options:

  • Allow DNS over TLS on port 853 before authentication.
  • Ask the visitor to switch Private DNS to automatic.

On Windows

Windows relies on the NCSI HTTP probe and its DNS check. If the portal does not open automatically, browse to any plain HTTP site to trigger the redirect manually. A persistent "No internet" after login usually means the gateway is still redirecting the probe. In that case, the gateway has not applied the Access-Accept.

In the browser

Brief front-line staff to send visitors to an HTTP address, never an HSTS domain such as google.com. Firefox runs its own probe against detectportal.firefox.com, so include that host in your redirect tests.

How do you stop guest WiFi redirect failures happening again?

Most repeat incidents come from change, not from the original build. A firmware update, a new firewall template, a login page redesign or an expiring certificate slips past testing. Build these controls into your change process:

  • Test on three platforms after every change. Use one iPhone, one Android phone and one Windows laptop. If one platform fails while the others pass, look for a walled garden gap first.
  • Size for peak, not average. Calculate the maximum number of concurrent devices and add headroom. Transient visitor networks commonly run leases of 15 to 30 minutes.
  • Set sessions to match the visit. Hospitality and retail venues commonly set 24-hour sessions, so a guest signs in once per stay or visit.
  • Watch login volumes daily. Purple's WiFi Analytics reports logins by venue. A sudden drop at one site warns you of a RADIUS or walled garden fault, often before visitors complain.
  • Put certificates and shared secrets under change control. Diarise the portal certificate's expiry date. Store the RADIUS shared secret where firewall and controller teams can both check it.
  • Segment guest traffic. Put guests on their own VLAN. PCI DSS treats segmentation as the way to keep a guest network out of scope of your cardholder data environment.
  • Plan for MAC randomisation. Recent iOS and Android releases use a random MAC address for each network, and some modes rotate it over time. Session caching keyed on MAC address will then ask returning visitors to sign in again.
  • Collect consent properly. GDPR requires informed, affirmative consent for marketing data. Purple's conscious-choice opt-ins present a separate choice for each purpose.

Take returning visitors off the captive portal

The most durable fix removes the redirect for repeat visits altogether.

  • Passpoint is the industry certification built on the Hotspot 2.0 specification. It lets a device join a network automatically using a stored profile.
  • OpenRoaming, run by the Wireless Broadband Alliance, federates identity providers. A visitor's existing credentials then work across participating venues.

Both use IEEE 802.1X, the standard for port-based network access control, so there is no portal to break.

Access method First visit Returning visit Over-the-air encryption Main failure points Suits
Open SSID with captive portal Visitor completes the login page Signs in again when the session or MAC cache expires None, unless the SSID uses Enhanced Open (OWE) Probes, walled garden, DNS, RADIUS Venues capturing first-party data at each visit
Shared pre-shared key (PSK) Visitor types the password Automatic WPA2 or WPA3-Personal Password sharing, no visitor identity Small cafés with no data goals
Passpoint or OpenRoaming Visitor installs a profile or uses a federated identity Automatic, no portal WPA2 or WPA3-Enterprise Profile provisioning, certificates Hotels, airports, rail and campuses with repeat visitors

Where Purple fits

Purple Guest WiFi runs as a hardware-agnostic cloud overlay, so you fix redirect faults in configuration, not with new hardware. Purple serves 80,000+ live venues in more than 90 countries and supports 500 million users and logins a year. The platform runs at 99.999% uptime and is ISO 27001, Cyber Essentials and B Corp certified. It is also GDPR and CCPA compliant.

When a portal fails, the cause is almost always local: a probe rule, a walled garden entry, a DHCP pool or a firewall rule.

The patterns repeat across verticals:

  • Hotels feel redirect faults at check-in peaks.
  • Retail estates feel them after estate-wide firewall changes.
  • Trains and stations face DHCP pressure as passengers board in waves.
  • Healthcare sites need patient and visitor WiFi that works without pulling clinical staff into support calls.

Frequently asked questions

Does Purple work with the access points we already own?

Yes. Purple is hardware-agnostic and runs as a cloud overlay on Cisco Meraki, HPE Aruba, Ruckus, Juniper Mist, Ubiquiti UniFi, Cambium, Extreme and Fortinet. You keep your existing access points and controllers. You point your guest SSID at Purple's captive portal, add the walled garden entries and RADIUS details from Purple's integration guide, and then test. There is no rip and replace.

Do we need new hardware to fix guest WiFi connected but no internet?

No. In almost every case the fault is configuration: a blocked probe, a walled garden gap, pre-authentication DNS, an exhausted DHCP pool or a RADIUS firewall rule. You fix each one on the controller, firewall or DHCP server you already run. Hardware only becomes the issue when access point density cannot serve your peak device count, which a site survey will show.

What does it take to move our guest WiFi to Purple?

Moving to Purple is a configuration project, not an installation project. On each controller, you set the guest SSID to Purple's external portal and add the walled garden and RADIUS settings. You then confirm firewall rules for UDP 1812 and 1813. Next, you build your login page and consent options in Purple and test on iOS, Android and Windows. Multi-site estates can template the controller settings.

Is a captive portal compliant with GDPR?

Yes, provided consent is informed, specific and freely given. GDPR requires a separate affirmative choice for each purpose, such as marketing email, and rules out pre-ticked boxes. Purple's conscious-choice opt-ins present each choice separately. Purple is ISO 27001 certified, holds Cyber Essentials and is GDPR and CCPA compliant. That gives your data protection officer the standards they will ask about.

Can returning visitors skip the login page?

Yes. Passpoint and OpenRoaming let a device join automatically using a stored profile or a federated identity. Both use IEEE 802.1X authentication with WPA2 or WPA3-Enterprise encryption, so there is no captive portal redirect to fail on repeat visits. Many venues run both: a captive portal for first-time visitors and data capture, and OpenRoaming for returning guests, passengers and students.

How will we know when logins start failing?

Watch login volumes by venue. Purple's WiFi Analytics reports logins for each site, so a sudden drop at one location stands out against its normal pattern and your other venues. That drop usually signals a RADIUS, walled garden or DHCP fault introduced by a recent change. Spotting it in the dashboard is faster than waiting for front desk complaints to reach IT.

Should we use a captive portal or a shared WiFi password?

Use a captive portal if you want first-party data and consent, and a shared password only if you need neither. A shared pre-shared key encrypts traffic with WPA2 or WPA3-Personal. However, it tells you nothing about who connected, and the password spreads. A captive portal captures consented first-party data, and Passpoint or OpenRoaming adds automatic, encrypted access for repeat visits.

Key Definitions

Captive portal

A web page a gateway (controller, firewall or access point) serves before granting internet access. Operating systems detect it by sending a plain HTTP probe and treating an HTTP 302 redirect as a sign that a portal is present.

This is the layer that fails when guest WiFi shows connected but no internet. You configure the guest SSID to point at the external portal URL and redirect unauthenticated HTTP traffic to it.

Operating system probe

A plain HTTP request each platform sends on joining a network: captive.apple.com for iOS and macOS, connectivitycheck.gstatic.com/generate_204 for Android, www.msftconnecttest.com/connecttest.txt for Windows and detectportal.firefox.com for Firefox, each expecting a fixed reply when online.

If the pre-authentication ACL or a DNS filter drops the probe, the device decides there is no internet and never opens the portal. This is the most common reason a portal never appears.

HSTS (HTTP Strict Transport Security)

Defined in RFC 6797, HSTS instructs browsers to reach a domain over HTTPS only. Browsers ship a preload list of HSTS domains and upgrade requests to them before they leave the device.

A gateway cannot redirect an HTTPS request to an HSTS domain without a certificate it does not hold, so the visitor sees a hard security warning. Redirect HTTP probes only and brief staff never to send visitors to google.com.

Walled garden

The allow list of domains and IP addresses a device can reach in the pre-authentication state, enforced by the gateway's pre-authentication access control list.

Missing entries for identity providers such as Microsoft Entra ID, Okta or Google Workspace, content delivery networks or Purple endpoints cause partial page loads and silent social login failures.

RADIUS

Remote Authentication Dial-In User Service, defined in RFC 2865 for authentication on UDP 1812 and RFC 2866 for accounting on UDP 1813. The server answers each Access-Request with Access-Accept or Access-Reject.

RADIUS carries the login decision to your gateway. A mismatched shared secret, a firewall blocking UDP 1812 or 1813, or a wrong server address leaves visitors offline after a successful login.

Accounting-Request (Start)

A RADIUS accounting message defined in RFC 2866, sent on UDP 1813 when a session begins, carrying a status type of Start.

Its presence in controller logs after a login confirms the gateway applied the Access-Accept. No accounting record after login means the RADIUS path is broken.

NCSI (Network Connectivity Status Indicator)

The Windows connectivity check that sends an HTTP probe to www.msftconnecttest.com and also resolves dns.msftncsi.com as a DNS check, expecting the text Microsoft Connect Test.

A Windows laptop can report no internet when pre-authentication DNS is broken even if HTTP works, and a persistent No internet after login usually means the gateway is still redirecting the probe.

Captive Portal API (DHCP option 114)

Defined in RFC 8910, DHCP option 114 lets a network advertise its captive portal URI to the device directly, so the device does not depend on intercepting a probe.

Recent iOS and macOS releases support it, which reduces reliance on redirection and the failure points that come with it.

Private DNS (DNS over TLS)

An Android setting that, when a specific hostname is set, sends DNS queries encrypted over TLS on port 853 rather than ordinary DNS. In automatic mode it falls back to ordinary DNS.

Visitors with a strict Private DNS hostname see Private DNS server cannot be accessed. You either allow port 853 before authentication or ask the visitor to switch to automatic.

Passpoint and OpenRoaming

Passpoint is the industry certification built on the Hotspot 2.0 specification for automatic network joining with a stored profile. OpenRoaming, run by the Wireless Broadband Alliance, federates identity providers. Both authenticate with IEEE 802.1X port-based network access control and WPA2 or WPA3-Enterprise encryption.

They take returning visitors off the captive portal entirely, so there is no redirect to fail on repeat visits, while the portal still handles first visits and data capture.

Worked Examples

A 1,500-seat conference centre ran attendee WiFi on a single /24 subnet with an eight-hour DHCP lease. Morning sessions worked, but after lunch new arrivals saw connected, no internet, and the help desk restarted the controller twice.

Step 1 of the diagnosis found new devices holding 169.254.x.x link-local addresses, which points to DHCP, not the portal. A /24 offers 254 usable addresses, and the eight-hour lease kept every morning address reserved, so the pool ran dry. The team moved the attendee VLAN to a /21 and cut the lease to 30 minutes. Usable addresses rose from 254 to 2,046, roughly eight times the previous capacity, and departing attendees' addresses now return to the pool within 30 minutes. The fix took one change window and no new hardware.

After a login page redesign, a 200-room hotel had Android guests complaining at the front desk. The portal appeared, but the Google sign-in button did nothing.

The IT manager tested the flow on one iPhone, one Android phone and one Windows laptop. Browser developer tools on the laptop showed blocked requests to a font delivery network and to Google's sign-in domains, both added by the redesign. Because the portal itself loaded, the fault sat in the walled garden, not the probe redirect. The team added the two domains to the walled garden. Google sign-in completed on all three test devices at the first retest, with two walled garden entries and no hardware change.

A retailer replaced firewalls in 40 stores over a weekend. On Monday, shoppers in every refreshed store completed the login form but stayed offline, while stores not yet refreshed worked normally.

Step 5 of the diagnosis checked controller RADIUS logs and found no accounting records from the refreshed stores, meaning the gateway never received the Access-Accept. The new firewall template denied outbound UDP by default, blocking ports 1812 and 1813. The team added explicit outbound rules to the template and pushed it to all 40 stores, and accounting records reappeared from every store. Because only refreshed stores failed, the pattern pointed straight at the firewall template and away from the WiFi.

Practice Questions

Q1. During a major conference at a 5,000-seat venue, the IT team receives reports that hundreds of attendees cannot access the guest WiFi portal. Access points show normal association counts. The issue began 45 minutes into the event. What is the most likely cause and what is the immediate fix?

Hint: The issue started after the event was underway, not at launch. Consider what resource becomes constrained as more devices join.

View model answer

The most likely cause is DHCP pool exhaustion. As attendees arrived and associated with the SSID, the DHCP pool filled up. New devices associate with the access point but cannot obtain an IP address, so they never send the HTTP probe required to trigger the captive portal. The immediate fix is to reduce the DHCP lease time to 15 minutes (reclaiming addresses from departed devices faster) and, if possible, expand the pool by adding a second subnet. The longer-term fix is to size the DHCP pool for the maximum concurrent device count at the next event, not the average.

Q2. You have deployed Purple on Ubiquiti UniFi access points at a retail chain. The splash page loads correctly on all devices. Guests complete the email capture form and see a success message. But when they try to browse, they get no internet access. The Purple dashboard shows the logins as successful. What do you check first?

Hint: The cloud platform has recorded the authentication. The failure is in the local enforcement step.

View model answer

Because Purple's dashboard shows successful logins, the cloud authentication step completed correctly. The failure is in the RADIUS authorization step - the UniFi controller is not receiving or acting on the Access-Accept message from Purple's RADIUS servers. Check in this order: (1) the RADIUS shared secret on the UniFi controller matches the secret in Purple's dashboard exactly; (2) outbound UDP on ports 1812 and 1813 is permitted from the controller to Purple's RADIUS server IP addresses; (3) the RADIUS server IP addresses configured on the UniFi controller are current (Purple may have updated them). A packet capture on the controller will confirm whether the Access-Accept message is arriving.

Q3. A hotel IT manager reports that guests using a VPN on their devices cannot access the captive portal at all. Guests without a VPN connect normally. The hotel uses Cisco Meraki MX appliances. Should the IT team change the captive portal configuration to accommodate VPN users?

Hint: Consider what a VPN does to the device's network traffic before the captive portal can intercept it.

View model answer

No - the captive portal configuration does not need to change. A VPN client encrypts all traffic from the device before it leaves the device, including the HTTP connectivity probe. The gateway cannot intercept encrypted VPN traffic, so it never issues the 302 redirect. The guest must disable their VPN, complete the captive portal authentication, and then re-enable the VPN. This is a fundamental architectural constraint of captive portals and VPNs, not a configuration error. The IT team should add a note to the guest WiFi instructions advising VPN users to disable their VPN before connecting.

Frequently asked questions

Why does the captive portal redirect fail to open automatically on mobile devices?

Mobile operating systems (iOS, Android, Windows) rely on unauthenticated HTTP probes to vendor endpoints (such as captive.apple.com or connectivitycheck.gstatic.com/generate_204). If the network gateway does not intercept port 80 traffic with a clean HTTP 302 redirect, or if DNS queries for those probe domains are dropped before authentication, the Captive Network Assistant (CNA) will not launch.

Why does the 'captive portal login keeps stopping' error occur on Android devices?

The 'captive portal login keeps stopping' error on Android occurs when the system WebView crashes during redirection or when the gateway drops the generate_204 HTTP probe midway through authentication. Clearing the cache of the Android System WebView or Chrome app, disabling randomized MAC addresses for the venue SSID, and navigating manually to an unencrypted HTTP probe address resolves the crash loop.

How do unencrypted HTTP sites like neverssl.com force a captive portal login screen to load?

Because modern browsers enforce HTTP Strict Transport Security (HSTS) on encrypted domains like google.com, wireless gateways cannot intercept HTTPS traffic without triggering browser certificate warnings. Navigating to an unencrypted HTTP destination such as http://neverssl.com or http://1.1.1.1 sends a plaintext request that the gateway can safely intercept with an HTTP 302 redirect to the login splash page.

Why do Android devices show 'Sign into network' errors or fail the generate_204 probe?

Android devices query clients3.google.com/generate_204 and connectivitycheck.gstatic.com. If the wireless controller or walled garden blocks access to Google IP addresses without intercepting the HTTP request with a 302 redirect, Android detects a connection error or assumes an isolated intranet, suppressing the portal prompt. Whitelisting the required probe domains or ensuring transparent HTTP redirection resolves this.

How do you prevent HTTPS certificate warnings when intercepting captive portal traffic?

When a guest browser navigates to an HTTPS domain prior to login, intercepting the TLS handshake triggers severe browser security warnings (such as NET::ERR_CERT_COMMON_NAME_INVALID) due to HSTS and certificate mismatch. Enterprise networks prevent this by leaving HTTPS traffic undisturbed and relying exclusively on plaintext HTTP probe interception to trigger the operating system's native captive portal browser.

What causes RADIUS authentication timeouts during captive portal guest login?

RADIUS timeouts occur when the wireless access point or controller fails to receive a RADIUS Access-Accept packet from the authentication server within the timeout window (typically 5 seconds). Common causes include outbound UDP ports 1812 and 1813 being filtered by perimeter firewalls, mismatched RADIUS shared secrets, or asymmetric routing between the access point and the cloud RADIUS service.

How does RFC 8910 (Captive Portal API) resolve modern captive portal connection issues?

RFC 8910 standardizes captive portal discovery via DHCP Option 114 and IPv6 Router Advertisements. Rather than intercepting DNS queries or HTTP packets, the network directly advertises the captive portal API endpoint URL to connecting client devices. Modern operating systems query this API directly, eliminating HSTS certificate collisions, DNS hijacking latency, and CNA browser rendering bugs.

How does MAC address randomisation affect captive portal reconnection?

iOS 14+ and Android 10+ rotate private MAC addresses periodically or when re-associating with SSIDs. If a guest network tracks sessions solely by physical MAC address, returning visitors are forced to authenticate repeatedly. Enterprise platforms like Purple solve this by tying session authorisation to user identity tokens and Passpoint (Hotspot 2.0) profiles rather than transient hardware MACs.

How does Purple resolve captive portal redirect failures across multi-vendor networks?

Purple operates as a hardware-agnostic cloud overlay across Cisco Meraki, HPE Aruba, Ruckus, Juniper Mist, Fortinet, and UniFi hardware. By automating walled garden configurations, managing trusted SSL redirect domains, and providing high-availability cloud RADIUS clusters with sub-second failover, Purple eliminates captive portal redirect drops and delivers reliable guest onboarding.

Got questions about your specific setup?

Our team works with venue operators, IT managers, and network engineers across 80,000 venues. Book a 20-minute call and we will show you how others like you solved it.