跳至主要内容

故障排除 Captive Portal 重定向:解决访客 WiFi 连接失败问题

当访客连接到您的 WiFi 但无法访问互联网时,原因几乎总是配置错误的 Captive Portal 重定向,而不是硬件故障。本指南为 IT 经理、网络架构师和 CTO 提供深入的技术参考,以诊断和解决完整的故障链:从操作系统级的连接性探测和 HSTS 证书冲突,到 RADIUS 授权漏洞和 DHCP 耗尽。它将每种故障模式映射到具体的修复方案,并展示了 Purple 的硬件无关云端覆盖层如何消除 Cisco Meraki、HPE Aruba、Ruckus、Juniper Mist、Ubiquiti UniFi、Cambium、Extreme 和 Fortinet 部署中的这些问题。

作者:Tom Hackett发布于 更新于
📖 9 分钟阅读629 2 应用实例3 练习题9 关键定义

Video overview

收听本指南

查看播客转录
主持人(英国英语,自信的顾问语气): 欢迎来到 Purple 技术简报。今天,我们将解决企业网络中最令人头疼的顽疾之一:Captive Portal 重定向失败。当您的访客 WiFi 显示已连接但无法访问互联网时,您的访客会感到沮丧,您的服务台会收到大量投诉,而您的数据捕获策略也会停滞不前。在本次简报中,我们将深入剖析 Captive Portal 的技术架构,探讨为什么现代操作系统和浏览器经常拦截它们,并为您提供具体的实施策略,以永久解决这些问题。 [暂停] 让我们设想一下场景。您在一百个零售网点部署了 Cisco Meraki 或 HPE Aruba 接入点。硬件非常可靠。但访客抱怨无法访问互联网。他们选择了 SSID,设备显示了 WiFi 图标,但 Portal 页面却从未出现。或者更糟糕的是,他们看到了一个可怕的 SSL 证书错误。 为什么会发生这种情况?这归结于操作系统如何检测互联网连接。当设备连接到网络时,它会向已知 URL 发送 HTTP 探测。对于 iOS,它是 captive.apple.com。对于 Android,它是 connectivitycheck.gstatic.com。Windows 使用 msftconnecttest.com。如果设备收到标准的 HTTP 200 OK 响应,它会假定自己可以直接访问互联网。如果网络网关拦截了该请求,并回复了一个指向不同 URL 的 HTTP 302 重定向,操作系统就知道自己处于 Captive Portal 之后。然后它会打开一个伪浏览器来加载 Portal 页面。 失败通常就发生在这个拦截点。 [暂停] 第一个主要的失败点是网络连接状态指示器探测,即 NCSI。如果您的防火墙或网关拦截了这些未加密的 HTTP 请求,操作系统就永远不会收到 302 重定向。它只会简单地假定网络已损坏。要解决此问题,您必须确保您的预认证访问控制列表允许 HTTP 流量访问那些特定的操作系统检测 URL。 第二个且越来越常见的问题是 HTTP 严格传输安全,即 HSTS。现代浏览器对主流域名强制执行 HTTPS。如果用户连接到您的 WiFi 并立即尝试打开 google.com,他们的浏览器会坚持使用加密连接。当您的网关拦截该 HTTPS 请求并尝试将其重定向到 Captive Portal 时,浏览器会检测到中间人攻击。您的网关提供的证书与 google.com 不匹配。结果就是强制拦截。用户会看到安全警告,并且无法进入登录页面。 这里的解决方案有两个方面。首先,依赖我们刚刚讨论的操作系统级检测机制。它们专门使用未加密的 HTTP 来避免这种证书不匹配。其次,确保您的围墙花园配置完美无缺。 什么是围墙花园(walled garden)?它是访客在进行身份验证之前可以访问的域名和IP地址列表。如果您使用通过 Microsoft Entra ID 或 Google Workspace 的社交登录,或者通过 Stripe 处理付款,这些域名必须在您的围墙花园中。如果不在,页面可能会加载,但身份验证过程将会静默失败。 [PAUSE] 让我们来看一个现实世界中的场景。麦当劳在数千个地点为数百万客户提供服务。他们使用 Purple 来管理他们的访客 WiFi。如果他们的会话超时设置得太短,在享受漫长午餐时查看手机的顾客可能会被强制重新进行多次身份验证。这会破坏体验。我们建议将酒店餐饮和零售环境的会话持续时间设置为24小时,并使用 MAC 地址缓存来无缝识别返回的设备。 [PAUSE] 现在来看看实施建议。在部署 Captive Portal 时,您必须正确配置网关以拦截 DNS 和 HTTP 流量。如果您使用像 Purple 这样的云端覆盖网络,您的本地硬件(无论是 Juniper Mist 还是 Ubiquiti UniFi)必须能够连接到 Purple RADIUS 服务器。 这里有一个关键的陷阱:DNS 解析。如果访客设备无法解析您 Captive Portal 的主机名,重定向就会失败。请确保您的 DHCP 服务器分配了可靠的 DNS 地址,并验证您的网关是否允许 DNS 查询通过围墙花园。 此外,还要考虑物理环境。体育场馆或交通枢纽(如曼彻斯特机场集团)等高密度场所需要处理数千个并发连接尝试。如果您的本地 DHCP 池耗尽,新设备将连接到接入点,但无法获取 IP 地址。它们甚至永远无法到达 Captive Portal 阶段。请务必根据峰值容量合理规划子网大小,并对临时访客网络使用较短的 DHCP 租约时间。 [PAUSE] 现在进行一个基于常见服务台工单的快速问答环节。 问题一:为什么 Portal 在 iPhone 上可以工作,但在 Android 设备上失败? 回答:这几乎可以肯定是一个围墙花园问题。您可能已经将 captive.apple.com 加入了白名单,但遗漏了 connectivitycheck.gstatic.com。请更新您的预身份验证访问控制列表。 问题二:访客成功进行了身份验证,但仍然无法上网。为什么? 回答:请检查您的 RADIUS 配置。网关可能没有收到来自 RADIUS 服务器的 Access - Accept 消息,或者身份验证后的防火墙规则阻止了流量。请验证共享密钥并确保端口 1812 和 1813 已开放。 问题三:我们能否对初始重定向使用 HTTPS 以避免安全警告? 回答:不能。您无法在不引起证书错误的情况下拦截 HTTPS 请求,除非您在每个访客设备上都安装根证书,这对于公共 WiFi 来说是不可能的。您必须依赖未加密的 HTTP 系统探测来触发 Portal。 [PAUSE] 总结:Captive Portal 故障极少是由硬件故障引起的。它们几乎总是重定向流程、walled garden(围墙花园)或 DNS 设置中的配置不匹配导致的。 第一点:确保在身份验证之前可以访问 OS 检测 URL。 第二点:配置您的 walled garden,将所有必要的身份提供商和内容分发网络包含在内。 第三点:验证您的网关与身份验证平台之间的 RADIUS 通信。 第四点:根据峰值密度规划您的 DHCP 作用域大小。 通过掌握这些要素,您可以消除连接摩擦。您将不再让访客感到沮丧,并开始捕获推动忠诚度和收入所需的第一方数据。Purple 的 Identity-Based Networks 简化了这一过程,提供了一个与硬件无关的云覆盖层,可无缝处理全球 80,000 个活跃场馆中复杂的 RADIUS、Captive Portals 和分析。 感谢您参加本次 Purple 技术简报会。如需了解更详细的配置指南和架构图,请访问 purple.ai。

核心系列的一部分:Captive Portal 指南

故障排除 Captive Portal 重定向:解决访客 WiFi 连接失败问题

核心摘要

“访客 WiFi 已连接但无互联网”是企业网络中最常见的支持工单之一。每个访客都能察觉到这种症状;但在了解重定向链之前,大多数 IT 团队都无法发现其根本原因。Captive Portal(也称为闪屏页面或热点网关)会拦截设备的初始 HTTP 连接探测,并发出 HTTP 302 重定向到登录页面。如果该链条中的任何一步出现中断 - 例如探测受阻、HSTS 冲突、围墙花园(Walled Garden)漏洞、RADIUS 失败或 DHCP 耗尽 - 访客将只会看到一个已连接的 WiFi 图标,而无法访问互联网。本指南将带您深入了解每种故障模式、底层的协议机制以及解决这些问题的配置更改。Purple 在全球 80,000 多个活跃场所运行,每年处理 4.4 亿次登录(Purple 内部数据,2024 年),这里描述的模式代表了我们在酒店、零售、交通和公共部门部署中遇到的最常见根本原因。


技术深度剖析

Captive Portal 检测的实际工作原理

每个主流操作系统都内置了一种机制,用于在授予互联网访问权限之前检测网络是否需要身份验证。了解这些机制是进行所有 Captive Portal 排错的基础。

当设备关联到 SSID 时,OS 会向预定义的 URL 发送一个未加密的 HTTP GET 请求。下表按平台列出了探测 URL。

操作系统 探测 URL 预期响应
iOS / macOS http://captive.apple.com/hotspot-detect.html 带有特定主体的 HTTP 200
Android (Google) http://connectivitycheck.gstatic.com/generate_204 HTTP 204 无内容
Windows (NCSI) http://www.msftconnecttest.com/connecttest.txt 带有主体“Microsoft Connect Test”的 HTTP 200
Chrome (所有平台) http://www.gstatic.com/generate_204 HTTP 204 无内容
Firefox http://detectportal.firefox.com/success.txt HTTP 200

如果网关拦截了这些请求之一,并返回指向 Captive Portal URL 的 HTTP 302 重定向,OS 就会识别出其处于门户网站之后,并打开一个伪浏览器(轻量级 WebView)来显示闪屏页面。如果探测被完全阻止,OS 就会报告“无互联网连接”,且永远不会尝试打开门户。这是导致“访客 WiFi 已连接但无互联网”症状最常见的原因。

故障排除 Captive Portal 重定向:解决访客 WiFi 连接失败问题 - redirect flow diagram

HSTS 问题

HTTP 严格传输安全 (HSTS) 是 RFC 6797 中定义的一种网络安全策略。它指示浏览器拒绝指向某个域的所有普通 HTTP 连接,并拒绝任何不完全匹配的证书。包括 google.com、facebook.com 和大多数银行网站在内的主流域名都已列入 Chrome、Firefox、Safari 和 Edge 内置的 HSTS 预载列表中。

当访客打开浏览器并输入 google.com 时,浏览器会在请求离开设备之前将其升级为 HTTPS。网关无法拦截 HTTPS 请求并进行干净的重定向 - 因为它必须出示 google.com 的证书,而它并不持有该证书。浏览器会检测到证书不匹配并显示硬性安全警告。访客将无法继续访问登录页面。

正确的架构完全依赖于上述操作系统级别的 HTTP 探测。这些探测专门对非 HSTS URL 使用普通 HTTP,以便网关可以在没有证书冲突的情况下拦截并重定向它们。您的网关必须拦截这些 HTTP 探测并发出 302 重定向。请勿尝试为了 Captive Portal 的目的而拦截 HTTPS 流量。

围墙花园 (Walled Garden)

围墙花园是设备在通过身份验证之前可以访问的一组域名和 IP 地址。如果围墙花园范围过窄,虽然可以加载 Portal 页面,但身份验证将会失败。常见的遗漏包括:

  • 身份提供商域名:如果您使用 Microsoft Entra ID、Okta 或 Google Workspace 进行社交或 SSO 登录,则其身份验证端点必须在围墙花园中。
  • CDN 和资产域名:您的 Portal 页面可能会从内容分发网络加载 CSS、JavaScript 或字体。如果这些 CDN 域名被拦截,页面渲染将会出错。
  • 支付处理商域名:如果您通过 Stripe 或其他处理商收取访问费用,则其 JavaScript SDK 域名必须预先进行身份验证。
  • Purple 平台域名:Purple 的云覆盖需要网关能够访问 Purple 的 RADIUS 服务器和门户端点。这些均记录在每个受支持平台的 Purple 硬件集成指南中。

RADIUS 与授权间隔

RADIUS (Remote Authentication Dial-In User Service) 是将您的本地网关连接到身份验证平台的协议。当访客填写完登录表单后,Captive Portal 会将凭据发送到 RADIUS 服务器。RADIUS 服务器返回 Access-Accept 或 Access-Reject 消息。网关根据该消息打开或保持关闭授予互联网访问权限的防火墙规则。

授权间隔 - 即访客在 Portal 页面上成功登录但仍无法访问互联网 - 几乎总是意味着网关没有收到或处理 Access-Accept 消息。常见原因包括共享密钥不匹配、本地防火墙拦截了 UDP 端口 1812 和 1813,或者网关上配置的 RADIUS 服务器 IP 地址不正确。

高密度环境中的 DHCP 耗尽

在体育场馆、会议中心和交通枢纽中,DHCP 耗尽是导致连接失败的常见原因,其表现与 Captive Portal 问题完全相同。如果 DHCP 地址池已满,新设备虽能关联到接入点,但永远无法获取 IP 地址。由于没有 IP 地址,设备无法发送 HTTP 探测,因而永远无法到达 Captive Portal。设备会显示已连接到 SSID,但无法访问互联网。

对于像曼彻斯特机场集团(MAG)这样旅客流量呈急剧峰值波动的场所,子网大小必须根据最大并发设备数(而非平均数)来规划。采用较短的 DHCP 租期(针对临时访客网络建议为 15 - 30 分钟)可以快速回收已离开设备的 IP 地址。


实施指南

以下步骤适用于与 Purple 的云覆盖网络集成时的任何硬件平台 - 包括 Cisco Meraki、HPE Aruba、Ruckus、Juniper Mist、Ubiquiti UniFi、Cambium、Extreme 或 Fortinet。

步骤 1:配置 SSID 以使用外部 Captive Portal。 在您的硬件控制器中,将访客 SSID 设置为将未认证的客户端重定向到 Purple 的外部门户 URL。禁用控制器本身的任何本地欢迎页面。

步骤 2:定义围墙花园(Walled Garden)。 至少添加以下域名:Purple 的门户和 RADIUS 端点(参见您的硬件集成指南)、上述列出的操作系统检测探测 URL、您的身份验证提供商域名(Microsoft Entra ID、Okta 或 Google Workspace),以及您的欢迎页面资产所使用的任何 CDN 域名。

步骤 3:配置 RADIUS。 输入 Purple 的 RADIUS 服务器 IP 地址、Purple 控制面板中提供的共享密钥,并将认证端口设置为 1812,计费端口设置为 1813。确认您的本地防火墙允许在这些端口上进行出站 UDP 通信。

步骤 4:设置会话参数。 对于酒店餐饮和零售行业,将会话时长设置为 24 小时,并启用 MAC 地址缓存。这可以避免访客在单次访问期间被迫重复进行身份验证。对于高安全要求的环境,则适用带有重新认证的较短会话。

步骤 5:规划您的 DHCP 范围。 计算您的场所处于最大容量时的最大并发设备数。一个拥有 500 个座位的餐厅在繁忙服务期间可能会出现 800 台设备。将 DHCP 地址池大小规划为 1,000 个地址,并设置 30 分钟的租期。

步骤 6:跨操作系统测试。 配置完成后,在 iOS、Android 和 Windows 设备上测试完整流程。每种设备都使用不同的探测 URL 和 WebView 实现。如果在某一个平台上失败而其他平台正常工作,这几乎总是围墙花园配置遗漏所致。


对您的具体配置有疑问吗?

我们的团队与 80,000 多个场所的运营方、IT 经理和网络工程师保持合作。预约 20 分钟的通话,我们将为您展示同行是如何解决类似问题的。

最佳实践

故障排除 Captive Portal 重定向:解决访客 WiFi 连接失败问题 - troubleshooting checklist

以下建议反映了 Purple 在全球 80,000 多个场所部署中总结的标准和模式。

隔离访客与员工网络。 运行至少三个 SSID:Guest WiFiStaff WiFi 和一个物联网(IoT)网络。访客流量必须与内部系统隔离。有关架构细节,请参阅我们的指南:Three SSIDs to rule them all: guest, Passpoint, and IoT WiFi

使用专用的访客 VLAN。 将访客流量细分到其专属的 VLAN 中,以防止横向移动并简化防火墙策略。如果网络中传输任何付款卡数据,这是 PCI-DSS 的硬性要求。

实施明示选择性同意。 GDPR 要求在 Captive Portal 收集数据必须基于知情、肯定的同意。Purple 的明示选择性同意功能清晰地展示数据收集选项,为每个目的提供独立的勾选框。对于在英国或欧盟运营的场所,这是强制要求的。

主动监控门户健康状况。 Purple 的 WiFi Analytics 平台提供对登录成功率、会话数和身份验证失败的实时可见性。成功登录量突然下降是 RADIUS 或围墙花园(Walled Garden)出现问题的早期预警,可在访客开始抱怨之前发现问题。

应用一致的品牌形象。 欢迎页面是访客与您的网络进行的第一次品牌互动。设计良好的门户可以提高选择加入率,并为 WiFi 体验设定预期。有关设计指导,请参阅 How to make a great first impression with your guest WiFi

-

故障排除与风险缓解

当报告 Captive Portal 问题时,在进行任何配置更改之前,请遵循此诊断顺序。

隔离故障点。 询问访客他们使用的是哪种操作系统和浏览器。在相同的操作系统上亲自测试相同的流程。如果问题特定于某个操作系统,原因几乎可以肯定是因为缺少该操作系统探测 URL 的围墙花园条目。

检查 DNS 解析。 从访客 VLAN 上的设备尝试解析 Captive Portal 主机名。如果 DNS 解析失败,即使正确发出了重定向,设备也无法访问欢迎页面。请验证您的 DHCP 服务器是否正在分配可靠的 DNS 地址,以及网关是否允许在预身份验证状态下进行 DNS 查询。

捕获重定向。 使用浏览器开发者工具(F12)或数据包捕获来观察 HTTP 交互。您应该会看到操作系统探测请求,随后是包含门户 URL 的 HTTP 302 响应。如果您看到了探测请求但没有 302 响应,则说明网关没有正确拦截。如果您根本没有看到探测请求,则说明操作系统已经确定其可以访问互联网(可能来自缓存状态),并且没有发送探测。**验证 RADIUS 通信。**在网关上,检查 RADIUS 计费日志。成功认证会产生一个 Accounting-Start 记录。如果访客登录后没有看到计费记录,说明 RADIUS 通信中断。请检查共享密钥、服务器 IP 和防火墙规则。

**检查 DHCP 租约利用率。**在 DHCP 服务器上,查看当前的租约数量与地址池大小。如果利用率超过 90%,说明即将耗尽。请立即扩大地址池或缩短租用时间。

下表将最常见的症状与其根本原因及相应的解决方案进行了映射。

症状 最可能的根本原因 解决方案
任何设备上都不显示门户 网关 ACL 阻止了操作系统探测 将探测 URL 添加到预认证白名单中
iOS 上显示门户,但 Android 上不显示 Walled Garden 中缺少 Android 探测 URL connectivitycheck.gstatic.com 添加到 Walled Garden 中
加载门户时出现 HTTPS 证书错误 网关拦截了 HTTPS 而不是 HTTP 仅依赖 HTTP 探测拦截
门户可加载,登录后无法访问互联网 网关未收到 RADIUS Access-Accept 验证共享密钥、端口 1812/1813 以及 RADIUS 服务器 IP
社交登录按钮无响应失败 身份提供商域名不在 Walled Garden 中 添加 Microsoft Entra ID / Google Workspace 端点
访客每次访问都必须重新认证 会话持续时间太短或 MAC 缓存已禁用 将会话设置为 24 小时,启用 MAC 地址缓存功能
高峰期出现间歇性故障 DHCP 地址池耗尽 扩大子网,缩短租用时间

投资回报率(ROI)与业务影响

每一次 Captive Portal 失败都是一次数据收集机会的流失。Purple 的 Guest WiFi 平台将每次成功的认证转化为第一方数据记录 - 姓名、电子邮件、人口统计数据和访问频率 - 并直接导入到营销自动化和忠诚度计划中。

对于像 Premier Inn 或 Whitbread 这样的 酒店餐饮 运营商来说,在拥有 700 家门店的物业中,门户认证成功率提高 10%,直接意味着每月增加数万条主动加入的记录。这些记录为个性化电子邮件营销活动提供了动力,其打开率明显高于购买的名单。

对于 零售 运营商而言,Captive Portal 是了解顾客逗留时间、重复访问频率和跨位置行为的切入点。Purple 在其场馆网络中已收集了 290 亿个数据点(Purple 内部数据)。这些数据的质量完全取决于生成它的认证率。

对于曼彻斯特机场集团等 交通 枢纽,可靠的访客 WiFi 是董事会层面跟踪的旅客满意度指标。在高峰出发时段间歇性失效的门户会引发投诉,并损害场馆的净推荐值(NPS)。 对于 医疗保健 环境,可靠的访客 WiFi 可以减轻临床人员处理网络连接投诉的压力,并提升患者体验指标。

Purple 的 99.999% 在线率 SLA 确保了云端覆盖层本身不会成为单点故障。当 Captive Portal 出现问题时,原因几乎总是本地配置 - 本指南将协助您自行解决这些问题,而无需提交支持工单。


参考文献

[1] Troubleshooting Tip: General captive portal explanation, flow and troubleshooting. Fortinet Community, 2024年11月. https://community.fortinet.com/fortigate-3/troubleshooting-tip-general-captive-portal-explanation-flow-and-troubleshooting-188409

[2] RFC 8910: Captive-Portal Identification in DHCP and Router Advertisements. IETF. https://www.rfc-editor.org/info/rfc8910

[3] Network Connectivity Status Indicator overview for Windows. Microsoft Learn, 2025年2月. https://learn.microsoft.com/en-us/windows-server/networking/ncsi/ncsi-overview

[4] 7 Captive Portal Problems That Break Guest WiFi (And Quick Fixes). Spotipo, 2026年2月. https://www.spotipo.com/post/troubleshooting-captive-portals-common-issues

[5] Solution for HSTS issues with captive portal. Ubiquiti Community. https://community.ui.com/questions/Solution-for-HSTS-issues-with-captive-portal/17b033e7-3dfe-4830-af8f-bf6ead23d8b0

关键定义

Captive Portal

在授予完全互联网访问权限之前,向加入网络的设备展示的网页。网关会拦截设备的初始 HTTP 连接探测,并将其重定向到该门户 URL。

每个访客 WiFi 登录页面背后的技术机制,从酒店大堂到体育场大厅。在 RFC 8910 中定义。

Walled garden

设备在完成 Captive Portal 认证之前可以访问的域名和 IP 地址集。发往 walled garden 目标地址的流量可绕过认证要求。

必须包含系统探测 URL、身份提供商端点、CDN 域名和支付处理程序域名。配置错误的 walled garden 是导致 Captive Portal 失败的第二大常见原因。

NCSI (网络连接状态指示器)

一项 Windows 功能,通过探测 `msftconnecttest.com` 来确定设备是否拥有互联网访问权限,或者是否处于 Captive Portal 之后。在 Microsoft 的网络文档中定义。

如果网关阻止了此探测,Windows 将报告“无互联网访问”,并且绝不会触发 Captive Portal WebView。解决方法是将 NCSI URL 添加到认证前准许列表中。

HSTS (HTTP 严格传输安全)

在 RFC 6797 中定义的一种网络安全策略,用于指示浏览器拒绝普通 HTTP 连接,并拒绝任何与域名不完全匹配的证书。

防止网关拦截 HTTPS 请求以进行 Captive Portal 重定向。包括 google.com 在内的主要域名在所有主流浏览器中都位于 HSTS 预载入列表中。

HTTP 302 重定向

一种标准的 HTTP 响应代码,表示请求的资源临时位于不同的 URI,并在 Location 标头中提供。

网关用于将设备的连接探测转向 Captive Portal 登录页面的机制。某些网关会使用 HTTP 303 或带有重定向主体的 HTTP 200 代替。

RADIUS (远程用户拨号认证服务)

一种提供集中化认证、授权和计费 (AAA) 管理的网络协议,在 UDP 端口 1812(认证)和 1813(计费)上运行。

Purple 的云平台充当 RADIUS 服务器。本地网关(Meraki、Aruba 等)向 Purple 的 RADIUS 服务器发送认证请求,并根据 Access-Accept 或 Access-Reject 响应执行操作。

MAC 地址缓存

存储设备唯一硬件标识符的过程,以便识别返回的设备并维护会话状态,而无需重新进行认证。

支持在短暂断开连接和会话窗口内的重复访问之间保持会话持久性。对于宾客在不同区域之间移动的酒店环境至关重要。

基于身份的网络

Purple 的架构模型,其中访问策略、VLAN 分配和分析是基于已认证的用户身份应用,而不仅仅是基于设备的 IP 或 MAC 地址。

可在 Cisco Meraki、HPE Aruba、Ruckus、Juniper Mist、Ubiquiti UniFi、Cambium、Extreme 和 Fortinet 硬件上实现精细的访问控制、个性化体验以及将网络行为准确归因到个人用户。

DHCP 耗尽

DHCP 地址池中所有可用的 IP 地址都已被分配的状态,导致新设备无法获取地址,从而无法访问 Captive Portal。

在高峰期的高密度场馆中很常见。其表现与 Captive Portal 故障完全相同 - 设备显示已连接到 SSID 但无法上网。可通过检查服务器上的 DHCP 租约使用率来进行诊断。

应用实例

一家拥有 200 间客房并使用 HPE Aruba 接入点的酒店报告,Android 设备上的访客无法访问 Captive Portal,而 iOS 用户连接则没有问题。IT 团队已确认可从管理 VLAN 访问该门户 URL。

IT 团队应检查 HPE Aruba 控制器上的认证前围墙花园(Walled Garden)。iOS 设备会探测 captive.apple.com,该域名可能已被列入白名单。Android 设备探测的是 connectivitycheck.gstatic.comclients3.google.com/generate_204。这些 Google 域名几乎肯定不在围墙花园中。将它们添加到认证前允许列表中即可解决该问题。该团队还应将 connectivitycheck.android.com 添加为次要 Android 探测 URL。更新围墙花园后,重启受影响的 SSID,并在恢复出厂设置的 Android 设备上进行测试以确认修复,因为先前连接的设备上缓存的网络状态可能会掩盖结果。

考官评语: 此场景说明了 Captive Portal 检测在特定操作系统中的特殊性。每个平台都使用不同的探测 URL,仅针对一个操作系统配置的围墙花园会产生这种不对称的故障模式。关键的诊断信号是该故障特定于设备类型,而不是在所有设备上间歇性发生。所有设备上的间歇性故障则指向 RADIUS 或 DHCP 问题。

一家拥有 150 台 Cisco Meraki MX 设备的连锁零售店报告,访客在 Purple 登录页面上进行了认证 - Purple 仪表板显示登录成功 - 但访客在填完表单后仍无法访问互联网。该问题同时影响所有门店。

由于 Purple 云平台显示登录成功,说明认证步骤本身是正常的。故障出在授权步骤中 - Meraki 设备未收到或未对来自 Purple 的 RADIUS 服务器的 RADIUS Access-Accept 消息做出响应。该团队应依次检查三点:首先,验证 Meraki 仪表板上的 RADIUS 共享密钥是否与 Purple 门户中的密钥完全一致(单个字符差异会导致无声失败);其次,确认是否允许从 Meraki 设备到 Purple 的 RADIUS 服务器 IP 地址的端口 1812 和 1813 的出站 UDP 流量;第三,检查最近的网络更改是否引入了阻止此流量的防火墙规则或 NAT 策略。由于该问题同时影响所有 150 个门店,原因可能是集中的防火墙策略更改,或者是未传播到 Meraki 配置中的 Purple RADIUS 服务器 IP 地址更改。

考官评语: 这里的关键诊断洞察在于,Purple 仪表板显示登录成功意味着云端认证步骤已完成。因此,故障出在本地执行步骤 - 即从云端发送到网关的 RADIUS 消息。对于任何使用云覆盖架构的 Captive Portal 部署,这种云端认证和本地授权之间的区别是故障排除的基础。

练习题

Q1. 在一个拥有 5,000 个座位的场馆举办大型会议期间,IT 团队收到报告称数以百计的参会者无法访问访客 WiFi 门户。接入点显示关联数量正常。该问题在活动开始 45 分钟后出现。最可能的原因是什么,立竿见影的解决方法是什么?

提示:该问题是在活动开始后出现的,而不是在启动时。请考虑随着更多设备加入,什么资源会变得紧张。

查看标准答案

最可能的原因是 DHCP 地址池耗尽。随着参会人员陆续到达并关联 SSID,DHCP 地址池被填满。新设备虽然可以关联到接入点,但无法获取 IP 地址,因此它们绝不会发送触发 Captive Portal 所需的 HTTP 探测。紧急修复方法是将 DHCP 租期缩短至 15 分钟(从而更快地回收已离开设备的地址),并在可能的情况下通过添加第二个子网来扩大地址池。长期修复方案则是针对下一次活动的最大并发设备数来规划 DHCP 地址池大小,而不是根据平均值。

Q2. 您已在一家连锁零售店的 Ubiquiti UniFi 接入点上部署了 Purple。所有设备上都能正常加载展示页面。访客完成了电子邮件收集表单并看到了成功消息。但当他们尝试浏览网页时,却无法访问互联网。Purple 仪表板显示登录成功。您首先应该检查什么?

提示:云平台已记录该认证。故障发生在本地执行步骤中。

查看标准答案

由于 Purple 的仪表板显示登录成功,说明云端认证步骤已正确完成。故障出在 RADIUS 授权步骤中 - UniFi 控制器未收到或未执行来自 Purple 的 RADIUS 服务器的 Access-Accept 消息。请按以下顺序检查:(1) UniFi 控制器上的 RADIUS 共享密钥与 Purple 仪表板中的密钥完全一致;(2) 允许从控制器到 Purple 的 RADIUS 服务器 IP 地址的端口 1812 和 1813 的出站 UDP 流量;(3) UniFi 控制器上配置的 RADIUS 服务器 IP 地址是最新的(Purple 可能已对其进行了更新)。在控制器上进行抓包可以确认 Access-Accept 消息是否送达。

Q3. 一家酒店的 IT 经理反馈,在设备上使用 VPN 的访客完全无法访问 Captive Portal。未使用 VPN 的访客则可以正常连接。该酒店使用的是 Cisco Meraki MX 设备。IT 团队是否应该更改 Captive Portal 配置以适应 VPN 用户?

提示:考虑在 Captive Portal 拦截之前,VPN 会对设备的网络流量进行什么处理。

查看标准答案

不需要 - Captive Portal 配置无需更改。VPN 客户端在流量离开设备之前会对其进行加密,包括 HTTP 连接性探测。网关无法拦截已加密的 VPN 流量,因此绝不会发出 302 重定向。访客必须先禁用其 VPN,完成 Captive Portal 认证,然后再重新启用 VPN。这是 Captive Portal 和 VPN 的底层架构限制,而非配置错误。IT 团队应当在访客 WiFi 说明中添加一条注意事项,建议 VPN 用户在连接前先禁用其 VPN。

常见问题

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.

对您的具体配置有疑问吗?

我们的团队与 80,000 多个场所的运营方、IT 经理和网络工程师保持合作。预约 20 分钟的通话,我们将为您展示同行是如何解决类似问题的。