Captive Portal para Cisco Meraki
Um guia de referência técnica de nível intermédio e autoritário para integrar pontos de acesso Cisco Meraki MR com o Captive Portal na nuvem da Purple. Abrange configurações passo a passo do Meraki Dashboard, definições de servidor RADIUS (portas 1812/1813), exceções de domínio wildcard de walled garden e parâmetros de limite de tempo de sessão para implementações de WiFi de convidados de alto desempenho.
Ouça este guia
Ver transcrição do podcast
📚 Parte da nossa série principal: WiFi Multi-Tenant →

执行摘要
本权威参考指南提供了一个全面的、分步的配置框架,用于将 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]。这些数据有助于在人员配置、店铺布局和房地产估值方面做出明智的决策。
参考资料
Definições Principais
Captive Portal
Uma página web que é apresentada a utilizadores recém-conectados a uma rede Wi-Fi antes de lhes ser concedido um acesso mais amplo aos recursos da rede.
Utilizado por espaços para impor termos de serviço, recolher dados de utilizadores e autenticar convidados via RADIUS antes de permitir o acesso à Internet.
RADIUS (Remote Authentication Dial-In User Service)
Um protocolo de rede que fornece gestão centralizada de Autenticação, Autorização e Contabilização (AAA) para utilizadores que se ligam e utilizam um serviço de rede.
Os APs Meraki consultam os servidores Cloud RADIUS da Purple para verificar as credenciais dos convidados e autorizar o acesso à rede.
Walled Garden
Um conjunto restrito de endereços IP ou nomes de domínio aos quais os clientes convidados não autenticados têm permissão para aceder antes de concluírem o processo de início de sessão no Captive Portal.
Crucial para permitir que os clientes acedam à splash page alojada, transfiram recursos CSS/JS de CDNs e comuniquem com endpoints OAuth de início de sessão social.
Session-Timeout
Um atributo RADIUS RFC 2865 que especifica o número máximo de segundos que uma sessão de utilizador pode permanecer ativa antes de exigir uma nova autenticação.
Retornado pelo RADIUS da Purple no pacote Access-Accept para controlar quanto tempo um convidado permanece com a sessão iniciada (ex. 24 horas para hóspedes de hotel).
Idle-Timeout
Um atributo RADIUS que define o período máximo de inatividade (sem transferência de dados) permitido antes que a sessão do utilizador seja terminada.
Utilizado para desligar dispositivos inativos e recuperar endereços IP em ambientes de alta densidade, como estádios ou lojas de retalho.
PAP (Password Authentication Protocol)
Um protocolo de autenticação simples e não encriptado utilizado pelo RADIUS para validar credenciais de utilizador.
Exigido pela Cisco Meraki para autenticação RADIUS de splash page externa. A segurança é mantida encriptando o trânsito do cliente para o portal via HTTPS e encriptando o campo de palavra-passe do pacote RADIUS utilizando o segredo partilhado.
Passpoint (Hotspot 2.0)
Um padrão da indústria desenvolvido pela Wi-Fi Alliance que permite roaming automático semelhante ao celular e ligação segura a redes Wi-Fi.
Suportado pelos pontos de acesso Meraki MR e pela Purple para permitir uma integração de convidados fluida e baseada em certificados, sem necessidade de Captive Portals.
CMX (Cisco Meraki Location APIs)
Uma estrutura de API que permite aos pontos de acesso Meraki exportar dados de localização e presença em tempo real (pedidos de sonda) para plataformas de análise de terceiros.
Integrado com a Purple para fornecer análises detalhadas de afluência (footfall), tempo de permanência e taxa de retorno para espaços físicos.
Exemplos Práticos
Um hotel de luxo com 350 quartos equipado com pontos de acesso Cisco Meraki MR46 necessita de implementar uma rede WiFi de convidados segura. Pretendem recolher os e-mails dos convidados, limitar a largura de banda a 5 Mbps por convidado e garantir que os convidados apenas precisam de iniciar sessão uma vez a cada 7 dias. Como deve o arquiteto de rede configurar o Meraki Dashboard e as definições de RADIUS?
- Configuração do SSID: Configure um SSID aberto com o nome 'Hotel_Guest' com a splash page definida para 'Sign-on with' e 'my RADIUS server'.\n2. Configuração do RADIUS: Introduza os IPs de RADIUS primário (
116.203.120.121) e secundário (195.201.123.149) da Purple. Defina a porta de autenticação para1812e a porta de accounting para1813. Configure o segredo partilhado.\n3. Parâmetros de Timeout: No perfil do servidor RADIUS ou no dashboard da Purple, defina o atributo Session-Timeout para604800segundos (7 dias) e o Idle-Timeout para1800segundos (30 minutos) para recuperar concessões DHCP inativas.\n4. Modelação de Tráfego (Traffic Shaping): No Meraki Dashboard em Wireless > Configure > Firewall & traffic shaping, selecione o SSID, ative a modelação de tráfego e defina um limite por cliente de 5 Mbps de downstream e 2 Mbps de upstream.\n5. Walled Garden: Ative o walled garden e adicione*.purple.ai,*.venuewifi.come os wildcards de CDN necessários, como*.cloudfront.net, para permitir a renderização da splash page antes da autenticação.
Uma cadeia de retalho nacional com 45 lojas pretende implementar WiFi de convidados em todas as localizações utilizando APs Meraki MR33. Necessitam de garantir uma configuração consistente, bloquear o acesso à rede corporativa e recolher análises de afluência (footfall). Como deve isto ser implementado à escala?
- Modelos de Configuração: Crie um único Modelo de Configuração de Rede (Network Configuration Template) no Meraki Dashboard. Configure o SSID de convidados com as definições de RADIUS da Purple, domínios de walled garden e o URL de splash personalizado:
https://login.venuewifi.com/ip/v2/meraki. Vincule todas as 45 redes de lojas a este modelo.\n2. Segmentação de VLAN: No switch local e firewall de cada loja, configure uma VLAN de Convidados dedicada (ex. VLAN 50). Nas definições de SSID da Meraki, defina a Atribuição de IP de Cliente (Client IP Assignment) para 'External DHCP server' e especifique a VLAN 50. Garanta que a firewall bloqueia todo o encaminhamento da VLAN 50 para as sub-redes corporativas.\n3. Análise de Localização: Ative a Meraki Scanning API (CMX) no Meraki Dashboard em Network-wide > Configure > General. Introduza o URL de Post da Purple e o validador de segredo. Isto permite que os APs Meraki transmitam dados de pedidos de sonda (probe requests) em tempo real para o motor de análise da Purple para relatórios de afluência (footfall) e tempo de permanência.
Perguntas de Prática
Q1. Um engenheiro de rede implementa um novo SSID de convidados Meraki com um Captive Portal da Purple. Os clientes não autenticados são redirecionados com sucesso para a página de início de sessão, mas quando tentam utilizar 'Iniciar sessão com o Google', a página fica a carregar e acaba por falhar com um erro de DNS ou de limite de tempo. Outros métodos de início de sessão (como o formulário de e-mail) funcionam perfeitamente. Qual é a causa mais provável deste problema e como deve ser resolvido?
Dica: Considere quais os domínios externos que o navegador do cliente deve alcançar para concluir o handshake do Google OAuth antes que a autenticação RADIUS seja concluída.
Ver resposta modelo
A causa mais provável é que os domínios auxiliares do Google OAuth estão em falta na configuração do Walled Garden do SSID da Meraki. Embora os domínios principais da Purple e os domínios de CDN sejam permitidos (razão pela qual a splash page carrega), os servidores de autenticação da Google estão a ser bloqueados pelas regras de firewall de pré-autenticação do AP. Para resolver isto, navegue até Wireless > Configure > Access control, selecione o SSID de convidados e adicione os seguintes domínios do Google OAuth à lista do Walled Garden: accounts.google.com, *.googleapis.com, *.gstatic.com e *.googleusercontent.com. Uma vez guardado, o AP permitirá que o cliente conclua o handshake de autenticação da Google e redirecione de volta para a Purple para concluir o início de sessão RADIUS.
Q2. Durante uma auditoria pós-implementação de uma rede WiFi de estádio de alta densidade, a equipa de TI nota que o pool de DHCP para a VLAN de convidados (uma sub-rede /21 com 2048 IPs) fica completamente esgotado nas primeiras 2 horas de um evento, embora as ligações simultâneas ativas nunca excedam as 800. O accounting de RADIUS está ativado. Como pode o arquiteto de rede ajustar as definições da Meraki e do RADIUS para mitigar este problema?
Dica: Analise a relação entre os limites de tempo de sessão do cliente, limites de tempo de inatividade (idle timeouts) e tempos de concessão DHCP em ambientes transitórios de alta densidade.
Ver resposta modelo
O esgotamento do pool de DHCP é causado por clientes transitórios (utilizadores que passam a pé ou entram brevemente no estádio) que se ligam, obtêm um endereço IP e depois abandonam o espaço. Como o Session-Timeout padrão da Meraki ou o tempo de concessão DHCP é demasiado longo, esses endereços IP permanecem reservados mesmo que os dispositivos físicos já não estejam presentes. Para resolver isto, o arquiteto deve implementar três alterações coordenadas: 1) Reduzir o Tempo de Concessão DHCP: No servidor DHCP (ou no dispositivo de segurança Meraki que gere o DHCP), reduza o tempo de concessão para 10 ou 15 minutos. 2) Configurar o Idle Timeout: Garanta que o accounting de RADIUS está ativado na porta 1813 e configure um Idle-Timeout de 10 minutos (600 seconds) no perfil RADIUS Access-Accept. Isto indica ao AP Meraki para terminar a sessão de qualquer cliente inativo durante 10 minutos. 3) Encurtar o Session Timeout: Reduza o Session-Timeout global para o perfil do estádio para 120 minutos (7200 segundos) para forçar a reavaliação periódica dos dispositivos ativos.
Q3. Um MSP está a configurar um SSID de convidados Meraki com um Captive Portal da Purple. Introduziram os IPs e portas corretos do servidor RADIUS da Purple (1812/1813) no Meraki Dashboard, mas ao testar com a ferramenta integrada de 'Teste' de RADIUS, todos os pontos de acesso falham ao tentar alcançar o servidor. O MSP verifica que o segredo partilhado de RADIUS está correto e que a nuvem da Purple está online. Que configuração de encaminhamento ou firewall terá o MSP provavelmente negligenciado?
Dica: Lembre-se de onde provêm os pedidos de autenticação RADIUS numa arquitetura gerida na nuvem da Cisco Meraki.
Ver resposta modelo
O MSP provavelmente configurou as firewalls da sua rede local para permitir o tráfego RADIUS de saída das sub-redes dos APs locais, mas esqueceu-se de que, numa implementação de splash page da Meraki, os RADIUS Access-Requests provêm diretamente da Infraestrutura na Nuvem do Cisco Meraki Dashboard, e não dos APs locais. Para resolver isto, o MSP deve obter os intervalos de IP de saída do Meraki Dashboard (encontrados no Meraki Dashboard em Help > Firewall info) e configurar a sua firewall corporativa a montante para permitir tráfego UDP de entrada e saída nas portas 1812 (Autenticação) e 1813 (Accounting) entre esses intervalos de IP do Meraki Dashboard e os servidores Cloud RADIUS da Purple. Adicionalmente, devem garantir que os IPs do Meraki Dashboard são adicionados como clientes RADIUS válidos na configuração do portal da Purple.
Continue a ler esta série
Integração do Cisco WLC e Catalyst com a Purple WiFi: Guia de Acesso de Convidados Passo a Passo
Este guia de referência detalha a integração passo a passo de Cisco Catalyst 9800 WLCs com a Purple WiFi. Abrange a External Web Authentication para portais cativos de convidados, 802.1X EAP-TLS para acesso seguro de funcionários e Cisco iPSK for segmentação de VLAN dinâmica multi-tenant.
Integração do CommScope Ruckus com o Purple WiFi: Guia de Instalação e Configuração
Este guia de referência técnica fornece um manual de configuração autoritativo para integrar arquiteturas CommScope Ruckus com o Purple WiFi. Detalha implementações passo a passo para Captive Portals de Guest WiFi, WiFi seguro para funcionários via 802.1X e isolamento de rede multi-tenant utilizando Ruckus Dynamic PSK.
Integração de Access Points Allied Telesis com Purple WiFi
Este guia fornece um manual de configuração abrangente para integrar access points Allied Telesis da Série TQ com o Purple WiFi. Abrange o redirecionamento de Captive Portal externo, autenticação RADIUS 802.1X e direcionamento dinâmico de VLAN usando Private Pre-Shared Keys (PPSK) para implementações multi-tenant seguras.