Cisco Meraki 适用 Captive Portal
一份权威的中级技术参考指南,用于将 Cisco Meraki MR 接入点与 Purple 的云端 Captive Portal 进行集成。涵盖了 Meraki Dashboard 的逐步配置、RADIUS 服务器设置(端口 1812/1813)、围墙花园(walled garden)通配符域名例外情况,以及用于高性能访客 WiFi 部署的会话超时参数。
收听本指南
查看播客转录
📚 核心系列的一部分:多租户 WiFi →

执行摘要
本权威参考指南提供了一个全面的、分步的配置框架,用于将 Cisco Meraki 无线网络与 Purple 基于云的 captive portal 进行集成。本文件专为 IT 经理、网络架构师和托管服务提供商 (MSP) 设计,详细介绍了在 Meraki Dashboard 中部署安全、高性能访客 WiFi 解决方案所需的精确配置 [1]。
通过将访客智能层与硬件解耦,企业场所可以利用 Purple 经过认证的 Guest WiFi 和 WiFi Analytics 平台来捕获丰富的、符合 GDPR 的第一方数据,同时确保网络完整性和合规性 [2]。本指南解决了关键的集成参数,包括跨不同实体场所(如 Retail (零售)、 Healthcare (医疗保健)、 Hospitality (酒店)和 Transport (交通)枢纽)的 RADIUS 认证(端口 1812/1813)、围墙花园域名例外、CDN 通配符解析以及访客重定向机制。
技术深度剖析
为了成功将 Cisco Meraki MR 接入点 (AP) 与 Purple 等外部 captive portal 集成,网络工程师必须了解底层的控制面和数据面架构。与传统的本地无线控制器(其 RADIUS 认证请求源自物理控制器或单个 AP)不同,Cisco Meraki 采用云管理架构 [1]。
控制面与数据面分离
当访客客户端关联到为外部 captive portal 配置的开放 SSID 时,Meraki MR AP 会将客户端置于预认证状态。在此状态下,除了 DNS 查询、DHCP 以及发往 Walled Garden [3] 中明确定义的 IP 地址或主机名的流量外,所有流量都会被阻止。
实际的 RADIUS Access-Request 消息并非由本地 Meraki MR AP 生成。相反,它们源自 Cisco Meraki Dashboard 云端基础设施 [1]。这是一个至关重要的架构区别:
> "展示页面的 RADIUS 访问请求消息将源自控制面板,而不是源自本地 Meraki 设备。因此,此处无法指定 RADIUS 服务器的私有局域网 IP 地址。" [1]
因此,保护您的 RADIUS 服务器的上游防火墙必须允许来自整个 Meraki Dashboard 出站 IP 范围块的入站流量,这些范围是动态的且因地区而异 [1]。这些范围可以通过 Meraki Dashboard 在 Help > Firewall info 下动态获取 [1]。

RADIUS 认证协议 (PAP)
对于登录展示页面认证,Meraki 使用密码认证协议 (PAP) [1]。虽然 PAP 在历史上是未加密的,但 Meraki-Purple 集成通过多层加密降低了安全风险:
- 客户端到云端加密:访客客户端直接与 Purple 托管的 captive portal 建立安全的 HTTPS (SSL/TLS) 会话。凭据(例如社交登录令牌、电子邮件表单)在从客户端浏览器传输到 Purple 服务器的过程中被加密 [1]。
- RADIUS 共享密钥加密:当 Meraki 云向 Purple 的云端 RADIUS 服务器发送 RADIUS Access-Request 时,它会根据 RFC 2865 使用配置的 RADIUS Shared Secret 和标准 XOR 函数对用户密码进行加密 [1]。这确保了明文凭据绝不会通过公共互联网传输。
支持的 RADIUS 属性
Meraki 云和 Purple 云端 RADIUS 在认证握手期间交换几个关键属性,以执行会话参数和策略:
| RADIUS 属性 | 类型 | 方向 | 描述与实际应用背景 |
|---|---|---|---|
| User-Name | String | Request | 访客用户的标识符(例如电子邮件地址、MAC 地址)[1]。 |
| User-Password | String | Request | 加密的用户密码或会话令牌 [1]。 |
| Called-Station-ID | String | Request | 格式为 AP_MAC:SSID_NAME(例如 AA-BB-CC-DD-EE-FF:GuestWiFi)。对于基于位置的策略路由至关重要 [1]。 |
| Calling-Station-ID | String | Request | 客户端的物理 MAC 地址(例如 11-22-33-44-55-66)。用于设备跟踪和会话恢复 [1]。 |
| Session-Timeout | Integer | Accept | 以秒为单位的最大会话持续时间。过期后,客户端将被重定向回 captive portal [1]。 |
| Idle-Timeout | Integer | Accept | 以秒为单位的最大空闲时间。如果没有数据传输,会话将被终止。需要 RADIUS 计费 [1]。 |
| Filter-Id | String | Accept | 传递要应用于客户端的特定 Meraki 组策略名称(例如限制带宽或阻止特定类别)[1]。 |
实施指南
此分步配置演练概述了如何将 Cisco Meraki MR 接入点与 Purple 的外部 captive portal 进行集成。
步骤 1:配置 SSID 访问控制
在 Meraki Dashboard 中导航至 Wireless > Configure > Access control [1]。选择您的目标访客 SSID 并配置以下参数:
- Association Requirements:设置为 Open (no encryption) [1]。这可确保无摩擦的接入体验。如果您需要加密的访客传输,请考虑实施部署 Passpoint / Hotspot 2.0 with Cloud RADIUS [4]。
- Splash Page:选择 Sign-on with 并从下拉菜单中选择 my RADIUS server [1]。
- RADIUS Servers:点击 Add server 并输入 Purple 的 Cloud RADIUS 主和备用端点 [1]:
- Host IP:
116.203.120.121(主)和195.201.123.149(备) - Port:
1812(认证)[1] - Secret:[您的 Purple 共享密钥]
- Host IP:
- RADIUS Accounting:设置为 RADIUS accounting is enabled 并添加计费服务器:
- Host IP:
116.203.120.121(主)和195.201.123.149(备) - Port:
1813(计费) - Secret:[您的 Purple 共享密钥]
- Host IP:
- Captive Portal Strength:选择 Block all access until sign-on is complete [1]。这会严格强制客户端在通过 splash page 之前无法访问互联网。
步骤 2:配置自定义 Splash Page URL
导航至 Wireless > Configure > Splash page [1]。选择您的访客 SSID 并配置:
- Custom Splash URL:选择 Or point to a custom URL 并输入 Purple 重定向 URL:
https://login.venuewifi.com/ip/v2/meraki
- Splash Page Redirect:设置为 The URL they were trying to fetch 或将他们重定向到特定的着陆页(例如,您场所的主页)[3]。
步骤 3:配置 Walled Garden 域名例外
为确保访客客户端能够加载 Captive Portal、从内容分发网络 (CDN) 下载资源并完成社交媒体认证(例如 Google 或 Facebook OAuth),您必须启用并配置 Walled Garden [3]。
返回导航至 Wireless > Configure > Access control 并找到 Walled Garden 区域 [1]。
- 将 Walled Garden 设置为 Walled garden is enabled [1]。
- 在 Walled garden ranges 字段中,输入所需的 FQDN 和通配符域名 [1]。

Meraki 如何处理通配符和 CDN 流量
Cisco Meraki MR 无线接入点支持在 walled garden 中使用星号前缀(例如 *.purple.ai)的通配符域名 [1]。然而,了解其底层机制至关重要:
- 基于 DNS 的白名单:Meraki AP 会拦截客户端的 DNS 请求。当客户端请求与 walled garden 中的条目匹配的域名时,AP 会将该域名解析为其当前的 IP 地址,并临时允许客户端与该 IP 进行通信 [3]。
- 动态 CDN IP:像 Amazon CloudFront (
*.cloudfront.net) 和 Akamai (*.akamaihd.net) 这样的 CDN 会解析为高度动态、地理分布且频繁变化的 IP 地址。Meraki 基于 DNS 的白名单通过实时解析域名来无缝处理这一问题。切勿在您的 walled garden 中为 CDN 资源使用静态 IP 地址,因为这会导致门户资源间歇性加载失败。
最佳实践
为确保高可用性、安全性和最佳用户体验,请遵循以下行业标准的部署最佳实践:
1. 网络分段与 VLAN 隔离
切勿将访客流量直接桥接到您的企业局域网(LAN)。配置您的 Meraki MR AP,使用专用的 Guest VLAN(例如 VLAN 30)标记访客流量 [4]。确保此 VLAN 终止于上游防火墙上的 DMZ 或独立的虚拟路由和转发 (VRF) 实例。这可以降低横向移动风险,并确保符合 PCI DSS 和 GDPR 等安全标准 [2] [4]。
2. 配置故障转移与会话恢复能力
网络链路可能会发生故障。为了防止在认证服务器宕机期间访客被锁定而无法访问互联网,请在 Meraki Dashboard 中配置 RADIUS Failover Policy:
- Failover Policy:设置为 Deny access 以获得最大安全性,或者如果在宕机期间保持访客连接的优先级高于数据捕获,则设置为 Allow access。
- Secondary Servers:始终配置主和备用 RADIUS 服务器,以分担负载并提供自动故障转移 [1]。
3. 实施会话与空闲超时
通过配置适当的超时参数来管理您的无线频谱和 DHCP 池租约 [1]:
- Session Timeout:对于酒店/款待环境,设置为 1440 分钟(24 小时),允许访客在整个停留期间保持连接,而无需频繁重新认证 [1]。对于零售或公共交通,将其缩短至 120 分钟(2 小时),以鼓励新的互动并释放 DHCP 租约。
- Idle Timeout:设置为 15 分钟。如果客户端设备进入睡眠状态或离开场所,AP 将终止会话并回收网络资源 [1]。
故障排除与风险缓解
在 Cisco Meraki 上部署外部 Captive Portal 时,工程师通常会遇到三种主要的故障模式。使用此诊断矩阵可快速隔离并解决问题:
| 现象 | 根本原因 | 诊断步骤 | 解决办法 |
|---|---|---|---|
| Splash page 无法加载;浏览器显示“连接超时”。 | 上游防火墙正在阻止指向 Purple 的 CDN 的出站 DNS 或 HTTP/HTTPS 流量 [1]。 | 尝试从同一 VLAN 上的有线设备解析 login.venuewifi.com。 |
确保访客 VLAN 具有访问公共 DNS (UDP 53) 和 HTTP/HTTPS (TCP 80/443) 的出站权限。 |
| Splash page 已加载,但用户凭据认证失败。 | 上游防火墙正在阻止源自 Meraki Cloud 的 RADIUS 流量 [1]。 | 使用 Meraki Dashboard 中 Access Control 下的 RADIUS Test 工具 [1]。 | 将 Meraki Dashboard 的出站 IP 范围(可在 Help > Firewall info 下找到)添加到防火墙针对 UDP 端口 1812 和 1813 的出站允许列表中 [1]。 |
| 社交登录(例如 Google OAuth)失败,并出现重定向错误。 | 缺少所需的 OAuth 辅助域名 | Meraki Walled Garden 中的 ns [1]。 | 检查客户端设备上的浏览器控制台,查看是否有被拦截的资源加载。 |
投资回报率 (ROI) 与业务影响
将 Cisco Meraki 与 Purple 集成,可将访客 WiFi 从成本中心转变为战略性业务资产。通过将企业级硬件与先进的分析技术相结合,企业可以在多个维度上实现可衡量的回报:
- 数据变现与营销触达:通过获取经验证的电子邮件地址和社交账号信息,场所可以构建一个干净、合规的第一方客户数据库 [2]。这些数据可直接导入客户关系管理 (CRM) 和营销自动化系统,从而实现高度精准、本地化的营销活动。
- 运营效率:通过 Purple 实现的自动化入网流程减轻了前台和 IT 支持人员的负担。在酒店及餐饮环境中,这意味着更少关于 WiFi 连接的客户投诉,以及更低的运营开销。
- 先进的人流量分析:通过将 Meraki 的位置 API 与 Purple 的分析引擎相结合,场所运营商可以深入了解访客行为,包括人流量、停留时间、回头率和客流高峰时段 [2]。这些数据有助于在人员配置、店铺布局和房地产估值方面做出明智的决策。
参考资料
关键定义
Captive Portal
在向新连接到 Wi-Fi 网络的用户授予更广泛的网络资源访问权限之前,向其展示的网页。
场所用于强制执行服务条款、收集用户数据,并在允许访问互联网之前通过 RADIUS 对访客进行身份验证。
RADIUS (Remote Authentication Dial-In User Service)
一种网络协议,为连接和使用网络服务的用户提供集中的认证、授权和计费 (AAA) 管理。
Meraki AP 查询 Purple 的云端 RADIUS 服务器,以验证访客凭据并授权网络访问。
Walled Garden
在完成 captive portal 登录流程之前,允许未认证的访客客户端访问的一组受限 IP 地址或域名。
对于允许客户端访问托管的展示页面、从 CDN 下载 CSS/JS 资源以及与社交登录 OAuth 端点进行通信至关重要。
Session-Timeout
一个 RFC 2865 RADIUS 属性,指定用户会话在需要重新认证之前可以保持活跃的最大秒数。
由 Purple RADIUS 在 Access-Accept 数据包中返回,用于控制访客保持登录状态的时间(例如,酒店访客为 24 小时)。
Idle-Timeout
一个 RADIUS 属性,定义在终止用户会话之前允许的最大不活跃期间(无数据传输)。
用于在体育场或零售店等高密度环境中断开闲置设备的连接并回收 IP 地址。
PAP (Password Authentication Protocol)
RADIUS 用于验证用户凭据的一种简单的、未加密的身份验证协议。
Cisco Meraki 进行外部展示页面 RADIUS 认证时所需。通过 HTTPS 加密客户端到门户的传输,并使用共享密钥加密 RADIUS 数据包密码字段来维护安全性。
Passpoint (Hotspot 2.0)
由 Wi-Fi 联盟开发的一项行业标准,可实现类似于蜂窝网络的自动漫游和安全连接到 Wi-Fi 网络。
由 Meraki MR 接入点和 Purple 支持,可实现无缝的、基于证书的访客接入,而无需 captive portals。
CMX (Cisco Meraki Location APIs)
一个 API 框架,允许 Meraki 接入点将实时位置和存在数据(探测请求)导出到第三方分析平台。
与 Purple 集成,为实体场所提供详细的客流量、停留时间和回头率分析。
应用实例
一家拥有 350 间客房的豪华酒店运行着 Cisco Meraki MR46 接入点,需要部署一个安全的访客 WiFi 网络。他们希望收集访客电子邮件,限制每位访客的带宽为 5 Mbps,并确保访客每 7 天只需登录一次。网络架构师应该如何配置 Meraki Dashboard 和 RADIUS 设置?
- SSID 设置:配置一个名为 'Hotel_Guest' 的开放 SSID,并将展示页面(splash page)设置为 'Sign-on with' 和 'my RADIUS server'。\n2. RADIUS 配置:输入 Purple 的主 RADIUS IP(
116.203.120.121)和备用 RADIUS IP(195.201.123.149)。将认证端口设置为1812,计费端口设置为1813。配置共享密钥。\n3. 超时参数:在 RADIUS 服务器配置文件或 Purple 控制面板中,将 Session-Timeout 属性设置为604800秒(7 天),将 Idle-Timeout 设置为1800秒(30 分钟),以回收不活跃的 DHCP 租约。\n4. 流量整形:在 Meraki Dashboard 的 Wireless > Configure > Firewall & traffic shaping 下,选择该 SSID,启用流量整形,并将每个客户端的限制设置为下行 5 Mbps 和上行 2 Mbps。\n5. 围墙花园(Walled Garden):启用围墙花园,并添加*.purple.ai、*.venuewifi.com以及必要的 CDN 通配符(如*.cloudfront.net),以允许在认证前渲染展示页面。
一家拥有 45 家门店的全国性零售连锁店希望使用 Meraki MR33 AP 在所有门店部署访客 WiFi。他们需要确保配置的一致性、阻止对企业网络的访问并收集客流量分析数据。如何进行大规模部署?
- 配置模板:在 Meraki Dashboard 中创建一个单一的网络配置模板。使用 Purple 的 RADIUS 设置、围墙花园域名和自定义展示 URL(
https://login.venuewifi.com/ip/v2/meraki)配置访客 SSID。将所有 45 家门店的网络绑定到该模板。\n2. VLAN 隔离:在每家门店的本地交换机和防火墙上,配置一个专用的访客 VLAN(例如 VLAN 50)。在 Meraki SSID 设置中,将客户端 IP 分配(Client IP Assignment)设置为 'External DHCP server' 并指定 VLAN 50。确保防火墙阻止从 VLAN 50 到企业网段的所有路由。\n3. 位置分析:在 Meraki Dashboard 的 Network-wide > Configure > General 下启用 Meraki Scanning API (CMX)。输入 Purple Post URL 和密钥验证器。这允许 Meraki AP 将实时探测请求数据流式传输到 Purple 的分析引擎,以生成客流量和停留时间报告。
练习题
Q1. 网络工程师部署了一个带有 Purple captive portal 的新 Meraki 访客 SSID。未认证的客户端成功重定向到登录页面,但当他们尝试使用“使用 Google 登录”时,页面一直旋转并最终因 DNS 或超时错误而失败。其他登录方式(如电子邮件表单)工作正常。此问题最可能的原因是什么,应该如何解决?
提示:考虑在 RADIUS 认证完成之前,客户端浏览器必须访问哪些外部域名才能完成 Google OAuth 握手。
查看标准答案
最可能的原因是 Meraki SSID 的 Walled Garden 配置中缺少 Google OAuth 辅助域名。虽然允许了核心 Purple 域名和 CDN 域名(这就是展示页面可以加载的原因),但 Google 认证服务器被 AP 的预认证防火墙规则阻止了。要解决此问题,请导航至 Wireless > Configure > Access control,选择访客 SSID,并将以下 Google OAuth 域名附加到 Walled Garden 列表中:accounts.google.com、*.googleapis.com、*.gstatic.com 和 *.googleusercontent.com。保存后,AP 将允许客户端完成 Google 认证握手,并重定向回 Purple 以完成 RADIUS 登录。
Q2. 在对高密度体育场 WiFi 网络进行部署后审计期间,IT 团队发现,尽管活跃并发连接从未超过 800 个,但访客 VLAN(具有 2048 个 IP 的 /21 子网)的 DHCP 地址池在活动开始的前 2 小时内就完全耗尽了。已启用 RADIUS 计费。网络架构师如何调整 Meraki 和 RADIUS 设置以缓解此问题?
提示:分析高密度瞬态环境中客户端会话超时、空闲超时和 DHCP 租约时间之间的关系。
查看标准答案
DHCP 地址池耗尽是由瞬态客户端(路过或短暂进入体育场的用户)连接、获取 IP 地址然后离开场所引起的。由于默认的 Meraki Session-Timeout 或 DHCP 租约时间过长,即使物理设备已不再存在,这些 IP 地址仍保持保留状态。为了解决这个问题,架构师应该实施三个协调的更改:1) 缩短 DHCP 租约时间:在 DHCP 服务器(或处理 DHCP 的 Meraki 安全设备)上,将租约时间缩短至 10 或 15 分钟。2) 配置空闲超时:确保在端口 1813 上启用了 RADIUS 计费,并在 RADIUS Access-Accept 配置文件中配置 10 分钟(600 秒)的 Idle-Timeout。这会指示 Meraki AP 终止任何处于非活跃状态达 10 分钟的客户端的会话。3) 缩短会话超时:将体育场配置文件的全局 Session-Timeout 缩短至 120 分钟(7200 秒),以强制对活跃设备进行定期重新评估。
Q3. 某家 MSP 正在配置带有 Purple captive portal 的 Meraki 访客 SSID。他们已在 Meraki Dashboard 中输入了正确的 Purple RADIUS 服务器 IP 和端口 (1812/1813),但在使用内置的 RADIUS“测试”工具进行测试时,所有接入点都无法连接到服务器。该 MSP 确认 RADIUS 共享密钥正确且 Purple 云在线。该 MSP 可能忽略了什么路由或防火墙配置?
提示:回想在 Cisco Meraki 云管理架构中,RADIUS 认证请求源自何处。
查看标准答案
该 MSP 可能配置了其本地网络防火墙以允许来自本地 AP 子网的出站 RADIUS 流量,但忘记了在 Meraki 展示页面部署中,RADIUS Access-Request 直接源自 Cisco Meraki Dashboard 云端基础设施,而不是本地 AP。要解决此问题,MSP 必须获取 Meraki Dashboard 的出站 IP 范围(可在 Meraki Dashboard 的 Help > Firewall info 下找到),并配置其上游企业防火墙,以允许在这些 Meraki Dashboard IP 范围与 Purple 的云端 RADIUS 服务器之间进行端口 1812(认证)和 1813(计费)的双向 UDP 流量。此外,他们必须确保将 Meraki Dashboard IP 作为有效的 RADIUS 客户端添加到 Purple 门户配置中。
继续阅读本系列
CommScope Ruckus 与 Purple WiFi 集成:安装与配置指南
本技术参考指南为 CommScope Ruckus 架构与 Purple WiFi 的集成提供了权威的配置指南。它详细介绍了 Guest WiFi Captive Portal、通过 802.1X 实现的 Secure Staff WiFi 以及使用 Ruckus Dynamic PSK 实现的多租户网络隔离的逐步部署过程。
Allied Telesis 接入点与 Purple WiFi 集成
本指南为 Allied Telesis TQ 系列接入点与 Purple WiFi 的集成提供了全面的配置手册。内容涵盖外部 Captive Portal 重定向、802.1X RADIUS 身份验证,以及使用专用预共享密钥 (PPSK) 进行动态 VLAN 引导,以实现安全的多租户部署。
Grandstream GWN Access Points Integration with Purple WiFi
本权威技术参考指南详细介绍了如何将 Grandstream GWN 接入点与 Purple 的访客 WiFi 和分析平台进行集成。它涵盖了 Grandstream Captive Portal 配置、RADIUS AAA 设置、围墙花园(walled garden)设置、带有动态 VLAN 引导的安全员工 802.1X 认证以及多租户 PPSK 细分——为大规模部署访客和员工 WiFi 的 MSP 及 IT 团队提供可操作的逐步指导。