跳至主要內容

疑難排解 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 部署中的這些問題。

作者:Tom Hackett發佈於 更新於
📖 9 分鐘閱讀629 字數2 範例3 練習題9 關鍵定義

Video overview

收聽此指南

查看播客逐字稿
主持人(英式英文,自信專業顧問語氣): 歡迎收聽 Purple 技術簡報。今天我們要探討企業網路中最棘手的痛點之一:Captive Portal 重新導向失敗。當您的訪客 WiFi 顯示已連線但無法存取網際網路時,訪客會感到挫折、您的技術支援團隊會被查詢淹沒,而您的數據收集策略也會停滯不前。在本次簡報中,我們將剖析 Captive Portal 的技術架構,探討為什麼現代作業系統和瀏覽器經常阻擋它們,並為您提供具體的實作策略,以永久解決這些問題。 [暫停] 讓我們想像一下這個場景。您已在數百個零售據點部署了 Cisco Meraki 或 HPE Aruba 的無線基地台。硬體運作良好。但訪客卻抱怨無法上網。他們選取了 SSID,裝置顯示了 WiFi 圖示,但登入頁面(Splash Page)卻從未出現。或者更糟的是,他們看到了令人驚恐的 SSL 憑證錯誤。 為什麼會這樣?這與作業系統如何偵測網際網路連線能力有關。當裝置連線到網路時,它會向已知的 URL 發送 HTTP 探測。對於 iOS,它是 captive.apple.com。對於 Android,它是 connectivitycheck.gstatic.com。Windows 則使用 msftconnecttest.com。如果裝置收到標準的 HTTP 200 OK 回應,它就會假設自己擁有直接的網際網路存取權限。如果網路閘道器攔截了該請求,並以 HTTP 302 重新導向至另一個 URL 作為回應,作業系統就會知道自己處於 Captive Portal 之後。接著,它會開啟一個擬真瀏覽器來載入登入頁面。 失敗通常就發生在這個攔截點。 [暫停] 第一個主要的失敗點是網路連線狀態指標(Network Connectivity Status Indicator)探測,簡稱 NCSI。如果您的防火牆或閘道器阻擋了這些未經加密的 HTTP 請求,作業系統就永遠不會收到 302 重新導向。它只會單純地認為網路損壞。要解決此問題,您必須確保您的預先驗證存取控制清單(ACL)允許 HTTP 流量傳輸到那些特定的作業系統偵測 URL。 第二個且日益常見的問題是 HTTP 強制安全傳輸技術(HSTS)。現代瀏覽器針對主要網域強制執行 HTTPS。如果使用者連線到您的 WiFi,並立即嘗試開啟 google.com,他們的瀏覽器會堅持使用加密連線。當您的閘道器攔截該 HTTPS 請求並嘗試將其重新導向至 Captive Portal 時,瀏覽器會偵測到中間人攻擊。因為您閘道器所提供的憑證與 google.com 不符。結果就是完全阻擋。使用者會看到安全性警告,且無法進入登入頁面。 這裡的解決方案分為兩個部分。首先,依賴我們剛才討論的作業系統層級偵測機制。它們專門使用未加密的 HTTP,以避免這種憑證不符的情況。其次,確保您的 Walled Garden(圍牆花園)設定完美無瑕。 什麼是 walled garden?它是顧客在進行身分驗證之前可以存取的網域和 IP 位址清單。如果您使用透過 Microsoft Entra ID 或 Google Workspace 進行社群登入,或者透過 Stripe 處理付款,這些網域就必須包含在您的 walled garden 中。如果沒有包含,系統可能會載入歡迎頁面,但驗證程序將會無聲無息地失敗。 [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。 此外,還要考慮實體環境。體育場或旅遊樞紐(例如 Manchester Airports Group)等高密度場所需要處理數千個並行連線嘗試。如果您的本機 DHCP 集中資源耗盡,新裝置雖然會連線到存取點,但會無法取得 IP 位址。它們甚至永遠無法到達 Captive Portal 階段。請務必針對尖峰容量規劃適當大小的子網路,並對暫時性訪客網路使用較短的 DHCP 租約時間。 [PAUSE] 現在進行基於常見技術支援工單的快速問答環節。 問題一:為什麼該入口網站可在 iPhone 上運作,但在 Android 裝置上卻失敗? 回答:這幾乎可以肯定是一個 walled garden 問題。您很可能已將 captive.apple.com 列入白名單,但遺漏了 connectivitycheck.gstatic.com。請更新您的預先驗證存取控制清單。 問題二:顧客成功通過身分驗證,但仍然無法上網。為什麼? 回答:請檢查您的 RADIUS 設定。閘道很可能沒有收到來自 RADIUS 伺服器的 Access-Accept 訊息,或者驗證後的防火牆規則阻擋了流量。請驗證共用金鑰並確保連接埠 1812 和 1813 已開啟。 問題三:我們可以使用 HTTPS 進行初始重新導向以避免安全性警告嗎? 回答:不行。您無法在不引起憑證錯誤的情況下攔截 HTTPS 要求,除非您在每台顧客裝置上安裝根憑證,而這對於公共 WiFi 來說是不可能的。您必須依賴未加密的 HTTP 作業系統探測來觸發入口網站。 [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 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 位址集合。如果圍牆花園範圍太窄,快顯畫面可能會載入,但驗證會失敗。常見的遺漏包括:

  • 身分識別提供者網域:如果您使用 Microsoft Entra ID、Okta 或 Google Workspace 進行社群或 SSO 登入,其驗證端點必須包含在圍牆花園中。
  • CDN 和資產網域:您的快顯畫面可能會從內容傳遞網路載入 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 訊息。閘道器會根據該訊息開啟或保持關閉允許網際網路存取的防火牆規則。

授權縫隙 - 即訪客在快顯畫面上成功登入但仍無法上網 - 幾乎總是意味著閘道器未收到或未處理 Access-Accept 訊息。常見原因包括共用金鑰不符、本地防火牆封鎖了 UDP 連接埠 1812 和 1813,或是閘道器上的 RADIUS 伺服器 IP 位址設定錯誤。

高密度環境中的 DHCP 枯竭

在體育場館、會議中心和交通樞紐中,DHCP 耗盡是導致連線失敗的常見原因,其外觀與 Captive Portal 問題完全相同。如果 DHCP 位址池已滿,新裝置雖然與存取點建立關聯,但永遠無法取得 IP 位址。在沒有 IP 位址的情況下,裝置無法傳送 HTTP 探針,也永遠無法到達 Captive Portal。裝置會顯示為已連線到 SSID,但無法上網。

對於像曼徹斯特機場集團 (MAG) 這樣旅客流量會急劇達到尖峰的場地,子網路的大小必須針對最大同時在線裝置數量進行規劃,而不是平均值。較短的 DHCP 租約時間(針對臨時訪客網路設定為 15 - 30 分鐘)可以快速回收已離開裝置的位址。


實作指南

不論是哪種硬體平台 - Cisco Meraki、HPE Aruba、Ruckus、Juniper Mist、Ubiquiti UniFi、Cambium、Extreme 或 Fortinet - 在與 Purple 的雲端重疊網路整合時,皆適用以下步驟。

步驟 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 實作方式都不同。若在某個平台失敗而其他平台正常,幾乎可以確定是 Walled Garden 漏掉了特定網域。


對於您的特定設置有任何疑問嗎?

我們的團隊與超過 80,000 個場域的場域營運商、IT 經理和網路工程師合作。立即預約 20 分鐘的通話,我們將向您展示其他與您相似的用戶是如何解決此問題的。

最佳實踐

疑難排解 Captive Portal 重新導向:解決訪客 WiFi 連線失敗問題 - troubleshooting checklist

以下建議反映了 Purple 在全球超過 80,000 個場地部署中所累積的標準與模式。

區隔賓客與員工網路。 運作至少三個 SSID:Guest WiFiStaff WiFi 以及 IoT 網路。賓客流量必須與內部系統隔離。請參閱我們的指南 以三個 SSID 掌控全域:賓客、Passpoint 與 IoT WiFi 以取得架構詳細資訊。

使用專用的賓客 VLAN。 將賓客流量劃分到其專屬的 VLAN,以防止橫向移動並簡化防火牆原則。如果任何付款卡資料傳輸通過該網路,這將是 PCI-DSS 的硬性要求。

實施自願選擇同意。 GDPR 要求在 Captive Portal 進行的資料收集必須基於知情且明確的同意。Purple 的自願選擇同意功能清晰地呈現資料收集選項,並針對每個目的提供獨立的勾選方塊。這對於在英國或歐盟營運的場域是強制性的。

主動監控入口網站健康狀況。 Purple 的 WiFi 數據分析 平台提供登入成功率、工作階段計數和驗證失敗的即時能見度。成功登入人數突然下降是 RADIUS 或圍牆花園(walled garden)問題的早期預警,能讓您在賓客開始抱怨之前就發現問題。

應用一致的品牌形象。 Splash page 是賓客與您的網路進行的第一個品牌互動。設計良好的入口網站可提高同意率,並為 WiFi 體驗建立預期。請參閱 如何透過您的賓客 WiFi 留下極佳的第一印象 以取得設計指引。

-

疑難排解與風險緩釋

當收到 Captive Portal 問題回報時,在進行任何組態變更之前,請遵循此診斷順序。

隔離故障點。 詢問賓客他們使用的是哪種 iOS、Android、Windows 等作業系統和瀏覽器。您自己在相同的作業系統上測試相同的流程。如果問題僅限於特定作業系統,其原因幾乎可以肯定是由於該作業系統偵測 URL 缺少對應的圍牆花園(walled garden)條目。

檢查 DNS 解析。 從賓客 VLAN 上的裝置,嘗試解析 Captive Portal 的主機名稱。如果 DNS 解析失敗,即使重新導向正確發送,裝置也無法到達 Splash page。請驗證您的 DHCP 伺服器是否正在分配可靠的 DNS 位址,且閘道器在預先驗證狀態下允許 DNS 查詢。

擷取重新導向。 使用瀏覽器開發者工具 (F12) 或封包擷取來觀察 HTTP 交換。您應該會看到作業系統的偵測請求,隨後是包含入口網站 URL 的 HTTP 302 回應。如果您看到偵測請求但沒有 302 回應,則表示閘道器未正確攔截。如果您完全沒有看到偵測請求,則該作業系統已判定其具有網際網路連線(可能來自快取狀態)且未發送偵測。**驗證 RADIUS 通訊。**在閘道器上檢查 RADIUS 計費記錄。成功的驗證會產生 Accounting-Start 記錄。如果您在訪客登入後沒有看到任何計費記錄,則代表 RADIUS 通訊中斷。請檢查共用金鑰、伺服器 IP 和防火牆規則。

**檢查 DHCP 租約使用率。**在 DHCP 伺服器上,比對目前的租約數量與位址池大小。如果使用率超過 90%,表示即將耗盡。請立即擴大位址池或縮短租約時間。

下表將最常見的症狀對應至其根本原因和相關的修正方法。

症狀 最可能的根本原因 修正方法
所有裝置皆未出現入口網站 作業系統探測被閘道器 ACL 阻擋 將探測 URL 新增至驗證前允許清單
iOS 出現入口網站,但 Android 未出現 圍牆花園中遺失 Android 探測 URL connectivitycheck.gstatic.com 新增至圍牆花園
入口網站載入時出現 HTTPS 憑證錯誤 閘道器攔截 HTTPS 而非 HTTP 僅依賴 HTTP 探測攔截
入口網站已載入,但登入後無法上網 閘道器未收到 RADIUS Access-Accept 驗證共用金鑰、連接埠 1812/1813、RADIUS 伺服器 IP
社群媒體登入按鈕無回應且失敗 身分識別提供者網域不在圍牆花園中 新增 Microsoft Entra ID / Google Workspace 端點
訪客每次造訪都必須重新驗證 工作階段階段持續時間太短或停用了 MAC 快取 將工作階段設定為 24 小時,並啟用 MAC 位址快取
尖峰時段間歇性失敗 DHCP 位址池耗盡 擴大子網路,縮短租約時間

投資報酬率與商業影響

每一次 Captive Portal 失敗,都是一次錯失收集數據的機會。Purple 的 Guest WiFi 平台將每次成功的驗證轉化為第一方數據記錄 - 包括姓名、電子郵件、人口統計數據和造訪頻率 - 這些數據會直接匯入行銷自動化和會員計劃中。

對於像 Premier Inn 或 Whitbread 這樣的 旅宿 營運商,在擁有 700 家物業的旗下版圖中,將入口網站驗證成功率提高 10%,可直接轉化為每月數萬筆額外的主動訂閱記錄。這些記錄為個人化電子郵件行銷活動提供動力,其開信率明顯高於購買的對象清單。

對於 零售 營運商而言,Captive Portal 是瞭解顧客停留時間、重複造訪頻率和跨據點行為的入口。Purple 已在其實體場域網路中收集了 290 億個數據點 (Purple 內部數據)。而這些數據的價值完全取決於產生數據的驗證率。

對於曼徹斯特機場集團等 交通 樞紐而言,可靠的客用 WiFi 是董事會層級追蹤的旅客滿意度指標。在離境尖峰時段間歇性失敗的入口網站會引發投訴,並損害場域的淨推薦值 (Net Promoter Score)。 針對 醫療保健 環境,可靠的訪客 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 租約使用率來診斷。

範例

一間擁有 200 間客房且使用 HPE Aruba 基地台的飯店報告指出,Android 裝置上的訪客無法存取 captive portal,而 iOS 使用者連線則沒有問題。IT 小組已確認可從管理 VLAN 存取該 portal URL。

IT 小組應檢查 HPE Aruba 控制器上的驗證前 walled garden。iOS 裝置會探測 captive.apple.com,這可能已在白名單中。Android 裝置會探測 connectivitycheck.gstatic.comclients3.google.com/generate_204。這些 Google 網域幾乎可以肯定不在 walled garden 中。將它們新增到驗證前允許清單可解決此問題。該小組還應將 connectivitycheck.android.com 新增為次要 Android 探測 URL。更新 walled garden 後,重新啟動受影響的 SSID 並在恢復原廠設定的 Android 裝置上進行測試以確認修正,因為先前連線裝置上快取的網路狀態可能會掩蓋結果。

考官評語: 此情境說明了 captive portal 偵測因作業系統而異的特性。每個平台使用不同的探測 URL,而僅針對單一作業系統配置的 walled garden 將產生這種不對稱的失敗模式。關鍵的診斷訊號是該失敗是特定裝置類型專有的,而不是在所有裝置上斷斷續續發生。所有裝置上斷斷續續的失敗則會指向 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 個據點,原因很可能是集中式防火牆政策變更,或是 Purple RADIUS 伺服器 IP 位址變更未同步到 Meraki 配置中。

考官評語: 此處關鍵的診斷見解是,Purple 儀表板顯示成功登入意味著雲端驗證步驟已完成。因此,失敗發生在本機執行步驟 - 從雲端到閘道的 RADIUS 訊息。雲端驗證與本機授權之間的這種區別,對於對任何使用雲端覆蓋架構的 captive portal 部署進行疑難排解至關重要。

練習題

Q1. 在一個擁有 5,000 個座位的場地舉辦的大型會議期間,IT 團隊收到報告稱有數百名與會者無法存取訪客 WiFi 入口網站。無線基地台顯示關聯數量正常。該問題在活動開始 45 分鐘後出現。最可能的病因是什麼?立即的解決方案是什麼?

提示:此問題是在活動開始後才出現,而不是在啟動時。請考慮隨著更多設備加入,哪些資源會變得受限。

查看標準答案

最可能的原因是 DHCP 位址池耗盡。隨著與會人員陸續到達並連線至該 SSID,DHCP 位址池已被填滿。新裝置雖然與存取點建立了關聯,卻無法取得 IP 位址,因此無法發送觸發 Captive Portal 所需的 HTTP 探測。立即的解決方案是將 DHCP 租期縮短至 15 分鐘(以便更快回收已離開裝置的位址),並在可能的情況下透過新增第二個子網路來擴大位址池。長期的解決方案是在下一次活動時,根據最大同時連線裝置數量而非平均值來規劃 DHCP 位址池的大小。

Q2. 您已在零售連鎖店的 Ubiquiti UniFi 存取點上部署了 Purple。所有裝置上的歡迎頁面(splash page)均能正常載入。顧客完成了電子郵件擷取表單並看到了成功訊息。但當他們嘗試瀏覽網頁時,卻無法存取網際網路。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。

常見問題

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 分鐘的通話,我們將向您展示其他與您相似的用戶是如何解決此問題的。