跳至主要内容

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

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

📖 9 分钟阅读📝 2,237 🔧 2 应用实例3 练习题📚 9 关键定义

收听本指南

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

header_image.png

执行摘要

“访客 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 No Content
Windows (NCSI) http://www.msftconnecttest.com/connecttest.txt 带有正文 "Microsoft Connect Test" 的 HTTP 200
Chrome (所有平台) http://www.gstatic.com/generate_204 HTTP 204 No Content
Firefox http://detectportal.firefox.com/success.txt HTTP 200

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

redirect_flow_diagram.png

HSTS 问题

HTTP Strict Transport Security (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:为外部 Captive Portal 配置 SSID。 在您的硬件控制器中,将访客 SSID 设置为将未认证的客户端重定向到 Purple 的外部门户 URL。禁用控制器本身上的任何本地 Splash 页面。

步骤 2:定义 Walled Garden(围墙花园)。 至少添加以下域名:Purple 的门户和 RADIUS 终端节点(参见您的硬件集成指南)、上面列出的操作系统检测探测 URL、您的身份提供商域名(Microsoft Entra ID、Okta 或 Google Workspace),以及您的 Splash 页面资源使用的任何 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 实现。如果一个平台失败而其他平台正常工作,这几乎总是因为 Walled Garden 配置存在遗漏。


最佳实践

troubleshooting_checklist.png

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

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

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

实施有意识选择的加入机制。 GDPR 要求在 Captive Portal 收集数据必须基于知情、肯定的同意。Purple 的有意识选择加入机制清晰地呈现了数据收集选项,并为每个目的提供独立的勾选框。对于在英国或欧盟运营的场所,这并非可选,而是必选项。

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

应用一致的品牌形象。 欢迎页面(splash page)是访客与您的网络进行的第一次品牌互动。精心设计的门户可以提高选择加入率,并建立对 WiFi 体验的期望。设计指导请参阅 如何通过您的访客 WiFi 留下绝佳的第一印象


故障排查与风险缓解

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

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

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

捕获重定向。 使用浏览器开发人员工具(F12)或数据包捕获来观察 HTTP 交换。您应该会看到系统探测请求,随后是包含门户 URL 的 HTTP 302 响应。如果您看到了探测请求但没有 302 响应,则网关没有正确拦截。如果您根本没有看到探测请求,则系统已判定其可以访问互联网(可能来自缓存状态)且未发送探测。

**验证 RADIUS 通信。**在网关上,检查 RADIUS 计费日志。成功验证会生成一个 Accounting-Start 记录。如果您在访客登录后未看到任何计费记录,则说明 RADIUS 通信已中断。请检查共享密钥、服务器 IP 和防火墙规则。

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

下表将最常见的故障现象与其根本原因和相应的解决方法进行了映射。

故障现象 最可能的根本原因 解决方法
任何设备上均未显示门户 OS 探测被网关 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 地址池耗尽 扩大子网,缩短租约时间

投资回报率与业务影响

每一次 Captive Portal 失败都是一次丢失的数据捕获事件。Purple 的 Guest WiFi 平台可将每一次成功的验证转化为第一手数据记录 - 姓名、电子邮件、人口统计数据和访问频率 - 这些数据将直接馈入营销自动化和忠诚度计划中。

对于像 Premier Inn 或 Whitbread 这样的 酒店餐饮 运营商来说,在拥有 700 家门店的物业中,门户验证成功率提升 10% 即可直接转化为每月数万条额外的主动订阅记录。这些记录可为个性化电子邮件营销活动提供支持,其打开率明显高于购买的名单。

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

对于像曼彻斯特机场集团(Manchester Airports Group)这样的 交通 枢纽,可靠的访客 WiFi 是董事会层面追踪的旅客满意度指标。在起飞高峰期出现间歇性故障的门户会引发投诉并损害场馆的净推荐值(NPS)。 对于 医疗保健 环境,可靠的访客 WiFi 可以减轻临床人员应对连接投诉的压力,并提升患者体验指标。

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


参考文献

[1] Troubleshooting Tip: General captive portal explanation, flow and troubleshooting. Fortinet Community, November 2024. 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, February 2025. 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, February 2026. 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 (Network Connectivity Status Indicator)

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

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

HSTS (HTTP Strict Transport Security)

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

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

HTTP 302 redirect

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

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

RADIUS (Remote Authentication Dial-In User Service)

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

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

MAC address caching

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

在会话窗口内的简短断开连接和重复访问中实现会话持久化。对于宾客在不同区域移动的酒店环境至关重要。

Identity-Based Networks

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

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

DHCP exhaustion

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

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

应用实例

一家使用 HPE Aruba 接入点的拥有 200 间客房的酒店报告称,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。Portal 页面在所有设备上都能正常加载。访客填完了电子邮件收集表单并看到了成功提示。但是,当他们尝试上网时,却无法接入互联网。Purple 控制面板显示登录成功。您首先应该检查什么?

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

查看标准答案

由于 Purple 的控制面板显示登录成功,说明云端认证步骤已正确完成。故障出在 RADIUS 授权步骤 - UniFi 控制器未收到或未执行来自 Purple RADIUS 服务器的 Access-Accept 消息。请按以下顺序检查:(1) UniFi 控制器上的 RADIUS 共享密钥与 Purple 控制面板中的密钥完全一致;(2) 控制器到 Purple RADIUS 服务器 IP 地址的出站 UDP 端口 1812 和 1813 已放行;(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。

继续阅读本系列

故障排除公共 WiFi:解决“已连接但无法访问互联网”和登录页面重定向失败的问题

本权威技术参考指南解释了 Captive Portal 检测的底层机制,并详细介绍了导致访客 WiFi 无法连接的六种主要失效模式。它为 IT 经理和网络架构师提供了一个实用的故障排除框架,用于解决 HTTP 重定向问题、DNS 冲突和 MAC 随机化带来的挑战。

阅读指南 →

高密度无线网络上发生 DHCP 超时的十大原因

本权威技术参考指南确定了高密度无线网络上发生 DHCP 超时的十大原因,并提供了可操作的、与厂商无关的解决策略。本指南专为高级 IT 领导者、网络架构师和场馆运营总监设计,涵盖了深入的工程原理、逐步实施工作流以及可衡量的业务成果。了解如何消除连接瓶颈并优化您的无线基础设施,从而在苛刻的企业环境中提供无缝的 WiFi 连接。

阅读指南 →

使用数据包捕获 (PCAP) 诊断慢速 WiFi 性能

本技术参考指南为 IT 经理、网络架构师和场馆运营总监提供了一种结构化的数据包级方法,利用数据包捕获 (PCAP) 分析来诊断和解决企业级慢速 WiFi 性能问题。通过剖析原始 802.11 帧(包括重传率、空口占用率和物理层元数据),团队可以精准地将 RF 层瓶颈与有线网络或应用问题隔离开来。本指南适用于酒店、零售连锁、体育场馆和会议中心等高密度场馆,提供了可操作的诊断工作流、真实案例研究以及配置修复步骤,以恢复网络容量并保障宾客体验。

阅读指南 →