跳至主要内容

UniFi captive portal设置指南

如何将Purple captive portal添加到Ubiquiti UniFi:外部门户服务器、控制器授权和围墙花园,并附有指向Purple逐步设置指南的链接以进行精确配置。

发布于 更新于
📖 2 分钟阅读33 字5 关键定义

Video overview

收听本指南

查看播客转录
Captive Portal for Ubiquiti UniFi - A Purple Technical Briefing [INTRODUCTION & CONTEXT - approximately 1 minute] 欢迎收看 Purple 技术简报系列。我是主持。今天我们将深入探讨在 Ubiquiti UniFi 基础设施上部署外部 Captive Portal 的技术细节,这是全球酒店餐饮、零售和企业环境中部署最广泛的网络平台之一。 如果您是使用 UniFi Cloud Gateways、Dream Machines 或 UniFi Network Application 的 IT 经理、网络架构师或系统集成商,这一期内容非常适合您。我们将详细剖析外部门户机制在底层的实际工作原理、如何正确配置、常见的陷阱在哪里,以及为什么对于需要更高级 Splash 页面(而不仅仅是基础页面)的场所来说,在 UniFi 部署之上叠加 Purple 是正确的架构决策。 让我们开始吧。 [TECHNICAL DEEP-DIVE - approximately 5 minutes] 首先,让我们了解当访客连接到启用了 Captive Portal 的 UniFi SSID 时,实际发生了什么。 当访客设备与您的访客 SSID 关联时,UniFi 接入点(AP)会像往常一样通过 DHCP 为其分配一个 IP 地址。但该设备会立即被置于 UniFi 所称的“挂起”状态。在此状态下,AP 内置的 DNSmasq 进程会拦截设备发起的每一个 DNS 查询,无论该设备认为自己正在使用什么 DNS 服务器。AP 会将所有 DNS 流量重定向到自身。 同时,AP 在 80 端口上运行一个轻量级的 HTTP 重定向器。一旦访客的浏览器发起任何 HTTP 请求 - 请注意,这里是 HTTP,而不是 HTTPS - 重定向器就会触发一个 302 重定向,将浏览器发送到 Captive Portal 的 Splash 页面。正是这种机制触发了 iOS 和 Android 设备上的“登录 WiFi”通知。 现在,内置门户与外部门户之间的区别就变得至关重要了。使用内置的 UniFi Hotspot Portal,Splash 页面由 UniFi Network Application 直接提供。它功能尚可,设置也很快,但局限性非常明显。您只能获得基础的密码认证、凭证(vouchers)和 Stripe 支付。没有电子邮件捕获、没有社交媒体登录、没有 GDPR 合规同意管理、没有 CRM 集成,除了会话计数之外,也没有任何有意义的数据分析。 当您配置“外部门户服务器”(External Portal Server) - 也就是我们今天关注的设置 - 时,您是在告知 UniFi 控制器将访客重定向到一个完全独立的 Web 应用程序。在我们的案例中,该程序就是 Purple。您在“外部门户服务器”字段中输入的 URL 将成为所有这些 302 重定向的目的地。 以下是关于该重定向 URL 的重要技术细节。当 UniFi 将访客重定向到您的外部门户时,它会在 URL 中附加多个查询参数。这些参数包括:AP MAC 地址、客户端设备 MAC 地址、Unix 时间戳、客户端原本尝试访问的原始 URL 以及 SSID 名称。您的外部门户 - 在此场景中为 Purple - 会捕获这些参数,利用它们来识别连接设备,展示相应的 splash 页面,处理身份验证,然后向 UniFi 网络应用发起 API 回调以授权该 MAC 地址。 该 API 调用是至关重要的握手过程。自 UniFi 网络应用 9.1 及更高版本起,提供了一个具有标准基于密钥身份验证的官方 REST API。授权端点是对站点 API 第一版本的 POST 请求,指向特定的客户端 ID,其 JSON 主体可以指定以分钟为单位的时间限制、以兆字节为单位的数据使用限制以及以千字节每秒为单位的速率限制。一旦控制器收到该授权,它就会将指令推送给 AP,访客状态随即从待处理变为已授权。互联网访问权限正式授予。 现在我们来谈谈 Walled Garden(围墙花园),UniFi 将其称为“预授权访问”。这是访客在进行身份验证之前可以访问的域名和 IP 地址白名单。这至关重要,也是最常见的配置错误来源之一。 您的 walled garden 至少需要包含 Purple 门户的完全限定域名,以及 Purple 基础设施解析到的 IP 地址或 CIDR 范围。如果您正在使用社交登录 - 比如 Facebook、Google、Microsoft - 您还需要添加这些提供商的 OAuth 端点域名。Google 的登录端点跨越多个 IP 范围和多个域名,包括 accounts.google.com 和 oauth2.googleapis.com。Facebook 的登录基础设施同样需要多个条目。Purple 的文档提供了一个持续维护的所需确切条目列表,并且随着这些提供商更新其基础设施,该列表也会保持最新。 UniFi 还有一个特定的关键怪癖,常常会让许多部署工作陷入困境。AP 上的 HTTP 重定向器仅拦截 80 端口上的普通 HTTP 流量。现代设备 - 比如 iOS、Android、Windows 和 macOS - 都会执行基于 HTTPS 的 Captive Portal 检测。Apple 设备通过 HTTPS 访问 captive.apple.com。Android 设备访问 connectivitycheck.gstatic.com。如果这些 HTTPS 请求没有收到特定的响应,设备可能会判定不存在 Captive Portal,从而根本无法显示登录提示。 解决方案是确保您的 walled garden 包含了主流操作系统的 Captive Portal 检测域名,并且您的 Purple 门户可通过 HTTPS 访问,且配有有效的、受信任的 SSL 证书。自签名证书会导致浏览器安全警告,从而阻止门户加载。对于生产环境部署而言,这是不可妥协的要求。 另一个需要特别考虑的 UniFi 相关因素是控制器的可访问性。无论 UniFi Network Application 是运行在 Cloud Gateway、Cloud Key 还是自托管服务器上,都必须能够从 Purple 的基础架构进行访问,以便 API 授权调用能够成功。如果您的控制器位于 NAT 之后的私有网络中,您需要确保相关的 API 端口是可访问的。对于自托管控制器,旧版 API 的端口通常是 8443,而 9.1 版本中引入的新版 API 则是标准 HTTPS 端口 443。Purple 的支持文档指定了需要入站访问您控制器的确切 IP 范围。 对于基于 RADIUS 的身份验证 - 这适用于您在开放式访客 SSID 模式之外部署 Purple 搭配 WPA2-Enterprise 或 WPA3-Enterprise SSID 的场景 - UniFi 内置的 RADIUS 服务器支持标准的 802.1X EAP 方法。您可以在“设置”、“网络”、“RADIUS 服务器”下配置 RADIUS 配置文件,然后在 SSID 配置中引用该配置文件。从 8.4 版本开始,UniFi 还支持基于 TLS 的 RADIUS(即 RADSEC),它加密了 AP 与身份验证服务器之间的 RADIUS 流量。对于 RADIUS 流量需要跨越公共互联网的多站点部署,强烈推荐使用 RADSEC。 [实施建议与陷阱 - 约2分钟] 让我为您提供一份实用的实施清单,这是我在向任何在 UniFi 上部署 Purple 的客户推荐时都会详细说明的。 首先,网络隔离。您的访客 SSID 必须处于专用的 VLAN 上,与您的企业网络和物联网(IoT)网络隔离。UniFi 让这一切变得非常简单 - 在“设置”、“网络”中创建一个专用网络,为其分配一个 VLAN ID,并将您的访客 SSID 与该网络关联。在访客网络上启用客户端隔离,以阻止访客之间的流量互通。 其次,控制器必须具有合法的 FQDN 和可信的 SSL 证书。不要依赖 IP 地址。使用一个规范的域名,为其获取 Let's Encrypt 或商业证书,并配置 UniFi 使用该证书。这可以解决绝大多数 HTTPS 重定向问题。 第三,仔细构建您的围墙花园(Walled Garden)并进行测试。最少包含的条目有:您的 Purple 门户域名及其 IP 范围,用于 iOS、Android 和 Windows 的 Captive Portal 检测域名,以及您正在使用的任何 OAuth 提供商域名。请使用从未连接过该网络的设备进行测试 - 缓存的 DNS 和网络状态可能会在测试期间掩盖围墙花园的配置漏洞。 第四,对于 API 集成,请在 UniFi Network Application 中使用专用的本地管理员账户,并赋予其所需的最小权限。不要使用您的主管理员凭据。如果您使用的是 Network Application 9.1 或更高版本,请使用“控制面板”、“集成”下的全新 API 密钥机制 - 它更安全,且不需要基于凭据的身份验证。 第五,请仔细考虑会话时长。UniFi 的默认访客会话过期时间可能短至8小时。对于访客可能会入住多晚的酒店部署,请在 Purple 门户设置中配置适当的会话时长,并确保在 API 授权调用中正确传递这些时长。 我见过的最常见问题是部署在无法公开访问的自托管控制器上。如果 Purple 无法连接到您的控制器来授权访客,门户页面将会加载,但身份验证会静默失败。在上线前,请务必验证从 Purple 基础设施到您的控制器的 API 连接性。 [快速问答 - 约1分钟] 这在 UniFi Dream Machine Pro 上适用吗?是的。所有 UniFi OS 控制台 - UDM、UDM Pro、UDM SE、UCG Ultra、UCG-Max - 都支持 External Portal Server 配置。Network Application 直接在设备上运行。 我可以在单个 Purple 账户中对多个 UniFi 站点使用 Purple 吗?是的。Purple 的多站点架构正是为此而设计的。每个场所都配置为 Purple 中的独立站点,并映射到相应的 UniFi 站点。 我需要在 UniFi 网关上开放防火墙端口吗?您需要确保访客 VLAN 流量可以通过端口 443 访问 Purple 门户域名。控制器 API 端口也必须可以从 Purple 的服务器访问。Purple 的文档中提供了具体的 IP 范围。 WPA3 呢?UniFi 支持 WPA3 Personal 和 WPA3 Enterprise。Captive Portal 机制可在访客网络上与 WPA3 Personal 配合工作。WPA3 Enterprise 使用 802.1X 和 RADIUS,这是另一种身份验证流程。 [总结与后续步骤 - 约1分钟] 总结一下:在 UniFi 上将 Purple 部署为外部 Captive Portal 是一种得到良好支持、架构合理的集成方案。关键步骤包括:将您的访客 SSID 配置为指向您的 Purple 门户 URL 的 External Portal Server 选项,构建一个涵盖 Purple 基础设施和您正在使用的任何 OAuth 提供商的完整 Walled Garden(围墙花园),确保您的 UniFi 控制器拥有有效的 SSL 证书且可从 Purple 的 API 服务器访问,并根据您的场所类型配置适当的会话时长。 其商业价值显而易见。内置的 UniFi 门户只能为您提供一个 Welcome 页面。而 Purple 则为您提供了一个符合合规要求、数据驱动的访客体验平台,它可以与您的 CRM 集成,在满足 GDPR 同意的前提下收集第一手数据,并提供场所运营商和营销团队真正需要的客流量和停留时间分析。 如果您是需要大规模部署 UniFi 的 MSP 或系统集成商,Purple 的多站点管理和白标功能使其成为您客户的理想选择。 有关详细的配置文档、Walled Garden IP 列表以及 API 集成指南,请访问 purple.ai。感谢收听。

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

UniFi Network Hotspot ArchitectUbiquiti UniFi OS & Network Application 8.x

Ubiquiti UniFi captive portal and guest WiFi configurator

Generate UniFi Network Hotspot Manager settings, configure pre-authorization walled gardens, calculate guest VLAN subnet sizing, and validate cloud RADIUS accounting for seamless Purple deployment.

Target controller
UniFi Dream Machine Pro / SE
UniFi OS 3.x / Network 8.x
Native Hotspot Manager (External Portal Server)
Walled garden domains
9 FQDN rules
OS captive probe safe
Recommended subnet
/23 (509 IPs)
73% peak pool load
AAA interim accounting
300s
RFC 2866 accounting sync

Internal routing engine handles guest captive redirection with native gateway isolation.

Local IP or internal hostname used for controller API communication.

Redirection security parameters
UniFi Network Hotspot Manager Configuration Payload
{
  "hotspot_portal": {
    "authentication": "external_portal_server",
    "server_ip_or_hostname": "auth.purplewifi.net",
    "port": 443,
    "use_secure_portal": true,
    "redirect_mode": "original_url"
  },
  "controller_authorisation_profile": {
    "target_model": "UDM-Pro / UDM-SE / UDM-Enterprise",
    "controller_management_host": "192.168.1.1",
    "controller_api_port": 8843,
    "enable_https": true
  },
  "pre_authorization_allowed_hostnames": [
    "auth.purplewifi.net",
    "securelogin.purplewifi.net",
    "api.purplewifi.net",
    "cdn.purplewifi.net",
    "fonts.googleapis.com",
    "fonts.gstatic.com",
    "accounts.google.com",
    "graph.facebook.com",
    "linkedin.com"
  ],
  "radius_profile": {
    "profile_name": "Purple-Guest-RADIUS",
    "auth_server": "10.0.10.15",
    "auth_port": 1812,
    "acct_server": "10.0.10.15",
    "acct_port": 1813,
    "interim_update_interval_sec": 300,
    "dynamic_vlan_rfc3580": true,
    "default_guest_vlan": 20
  },
  "wireless_guest_profile": {
    "ssid": "Guest-WiFi",
    "client_isolation": true,
    "dhcp_recommended_lease_seconds": 7200,
    "recommended_cidr_scope": "/23",
    "per_client_bandwidth_limit_down_kbps": 10240,
    "per_client_bandwidth_limit_up_kbps": 3072
  }
}
Looking to deploy guest WiFi across enterprise UniFi hardware?
Review our architecture framework or talk directly to our wireless solutions engineering team.
Explore Captive Portal Guide
Useful? Link to this tool

captive portal是访客在联网前看到的登录页面。在Ubiquiti UniFi上,接入点和UniFi Network控制器运行WiFi;Purple运行该门户及其背后的第一方数据,而无需更换您的任何UniFi设备。

Ubiquiti UniFi如何与Purple访客WiFi协同工作

Purple是一个云端覆盖网络。您的UniFi Network控制器继续运行WiFi;Purple通过UniFi已有的功能来运行访客体验。

  • **外部门户服务器。**在UniFi的Hotspot Manager中,您将着陆页指向Purple,而不是UniFi内置的页面。新设备会被重定向到您的Purple展示页面,访客登录,然后控制权返回给UniFi。
  • **控制器授权。**Purple通过使用其公网地址和您为此创建的专用控制器登录凭据,直接与您的UniFi Network控制器通信,从而授权每个访客。如果控制器无法从公网访问,端口转发可以让该连接成为可能。
  • **围墙花园。**UniFi的预授权规则允许在访客登录之前加载展示页面以及任何支付或社交登录步骤。

对于重复访客,UniFi的SecurePass (Passpoint)选项添加了由RADIUS支持的安全加密连接,因此已知用户无需再次登录即可重新连接。

这就是整个模式:UniFi传输数据包并管理无线电,Purple拥有登录和数据。因为它是运行在标准的外部Web认证和RADIUS上,所以在Cisco Meraki、HPE Aruba、Ruckus、Juniper Mist、Ubiquiti UniFi、Cambium、Extreme和Fortinet上的工作方式完全相同。Purple在设计上与硬件无关。

您需要什么

  • 具有管理员权限的UniFi Network控制器(在Dream Machine、CloudKey或您自己的服务器上)。
  • 已设置好展示页面和登录流程的Purple场所。
  • 专用的UniFi控制器登录凭据和您控制器的公网地址,以便Purple授权访客。

使用Purple进行设置

具体的设置、外部门户服务器地址、Hotspot Manager着陆页选项、预授权域名、将Purple连接到控制器的场所设置以及可选的SecurePass配置,都在Purple的支持指南中进行了逐步记录,并提供了要输入的精确数值。

Ubiquiti UniFi Network设置指南

请按照该指南进行配置。本页面解释了各个部分是如何协同工作的,以便您了解每个步骤的作用。

您将获得什么

一旦访客通过Purple登录,每次访问都会变成经核实的、有意识选择加入的第一方数据:谁访问了、访问频率如何,以及如何在获得许可的情况下联系他们。这就是连接人们的WiFi与构建您拥有的营销受众的WiFi之间的区别。Purple符合GDPR规范并获得ISO 27001认证,在超过80,000个活跃场所中实现99.999%的在线率。

关键定义

Captive portal

访客在联网前看到的登录页面。Purple托管并运行它;UniFi将设备重定向到它。

Purple在您的UniFi WiFi之上添加的访客体验层。

外部门户服务器

一个UniFi设置,将未认证的设备发送到外部托管的登录页面,而不是UniFi内置的页面。

UniFi的Hotspot Manager如何将访客引导至Purple展示页面。

控制器授权

Purple通过专用的登录凭据,在其公网地址上与您的UniFi Network控制器通信,以授权每个访客会话。

Purple如何允许已登录的访客在UniFi上联网。

围墙花园

设备在登录前可以访问的简短地址白名单。

允许在预认证前加载展示页面、支付和社交登录。

SecurePass (Passpoint)

由 RADIUS 支持的加密 WiFi 连接,可让已知用户重新连接而无需再次登录。

供常客选择的加密安全层。

常见问题

Ubiquiti UniFi 如何与外部 captive portal 进行集成?

UniFi Network Hotspot Manager 允许管理员将访客身份验证委托给外部门户服务器。当未授权的访客连接到访客 SSID 时,UniFi 网关会拦截初始 HTTP 流量,并将客户端浏览器重定向到 auth.purplewifi.net 上的 Purple。访客完成身份验证后,Purple 会调用 UniFi 控制器 API 来授权该客户端 MAC 地址访问互联网。

UniFi 控制器与 captive portal 之间必须开放哪些端口?

要进行云端或外部 captive portal 集成,UniFi Network 控制器必须能够通过 TCP 端口 8843(旧版安装中为 TCP 端口 8443)接收授权 API 调用。为了确保安全的访客浏览器重定向,请确保在访客预授权防火墙策略中允许 TCP 端口 443 上的出站 HTTPS 和 UDP 端口 53 上的 DNS。

为什么绝不应该将操作系统的 captive 探测主机列入白名单?

包括 iOS, Android, macOS 和 Windows 在内的操作系统会探测特定端点(如 captive.apple.com 和 connectivitycheck.gstatic.com)以检测受限网络。如果将这些探测主机名放入 UniFi 预授权访问中,设备将收到未被拦截的 HTTP 200 响应,从而判定互联网连接已激活,并隐藏自动登录浏览器弹窗。

在 UniFi 上运行 Purple 需要哪些预授权访问规则?

UniFi Hotspot Manager 要求在访客登录前在预授权访问中将 Purple 身份验证和资产域名列入白名单。这包括 auth.purplewifi.net、securelogin.purplewifi.net、api.purplewifi.net 和 cdn.purplewifi.net。如果启用了社交登录或付费档次,则相应的 OAuth 和支付网关端点也必须列入白名单。

RADIUS 计费如何增强 UniFi 上的访客 WiFi 管理?

配置指向 UDP 端口 1812(认证)和 1813(计费)的 Purple RADIUS 配置文件可实现实时会话跟踪。将过渡计费更新间隔设置为 300 秒,允许 UniFi 接入点定期向 Purple 分析平台报告访客无线时长、传输字节和停留时长,而不会使控制器资源过载。

访客网络推荐使用多大的子网和多长的 DHCP 租约时间?

访客网络面临高周转率和租期频繁变动的问题。高流量场馆应至少配置一个 /22 子网(1,021 个可用 IP 地址),并将 DHCP 租约时间缩短至 2 小时(7,200 秒)。这可以防止在访客流量高峰期地址池耗尽,而客户端设备隔离则可以防止未经授权的设备间横向通信。

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

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