跳至主要內容

為什麼您的 Captive Portal 在 iPhone 上無法載入:修復 Apple CNA 錯誤

疑難排解並修復 iPhone 和 iOS 上的 Captive Portal 彈出式視窗失敗問題。了解 Apple CNA、iCloud Private Relay 和 MAC 隨機化如何破壞 WiFi 登入,以及如何修復這些問題。

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

Video overview

收聽此指南

查看播客逐字稿
[片頭音樂:輕快、現代的電子合成流行樂,伴隨清脆的鋼琴點綴,營造出專業且科技感十足的氛圍] **主持人 (資深顧問)**:哈囉,歡迎來到 Purple 技術簡報。我是你們的主持人,今天我們要深入探討目前網路管理員、IT 經理和場域營運總監所面臨最常見 - 坦白說也最令人沮喪 - 的問題之一。 我們都經歷過這種情況。你花了數週的時間為你的飯店、購物中心或體育場規劃、配置和部署了最先進的訪客 WiFi 網路。你配備了最新的無線基地台、強大的控制器,以及一個準備好用來收集訪客數據並提升參與度的精美歡迎頁面。然而,客服工單卻開始接踵而至。而且內容如出一轍:"我的 iPhone 連上了訪客 WiFi,但登入頁面跑不出來。" 對訪客而言,你的 WiFi 就是壞掉了。但對身為網路工程師和架構師的我們來說,我們知道 iOS 底層正在進行一場複雜的技術角力。今天,我們將精準解析為什麼你的 Captive Portal 無法在 iPhone 上載入、Apple 的背景偵測邏輯如何運作,以及你可以在本季度於網路上實施的逐步緩解路徑。 [簡短的過渡音樂起伏] **主持人**:讓我們從技術深挖開始。為什麼 iPhone 連上了訪客 WiFi 卻無法顯示登入畫面? 要理解這一點,我們必須研究 Apple 的 **Captive Network Assistant**(簡稱 **CNA**)。當 iPhone 與開放的 SSID 建立關聯並透過 DHCP 取得 IP 位址時,它不會乾等使用者開啟瀏覽器。相反地,系統背景精靈(daemon)會立即向一個非常特定的 URL 發送純 HTTP GET 請求:`http://captive.apple.com/hotspot-detect.html`。 這個背景探測使用名為 `CaptiveNetworkSupport` 的獨特系統 User-Agent。CNA 精靈正在尋找一個非常特定的回應。如果 Apple 的伺服器回傳了 HTTP 狀態碼 **200 OK** 且內容完全為 "Success" 字樣,iOS 就會判定該網路具有不受限制的網際網路存取權限。它會悄悄將 WiFi 設為主要路由介面,使用者便能照常使用。 然而,如果你的網路閘道器拦截了該 HTTP 請求並回傳了其他內容 - 例如 HTTP 302 或 307 重定向,或是自訂的 HTML 頁面 - iOS 會立即識別出它正處於 Captive Portal 之後。它會瞬間啟動原生 **Websheet 應用程式**。這就是大家熟悉、會顯示你訪客登入頁面的向上滑出式互動視窗。 現在,這裡出現了第一個主要的工程陷阱:**圍牆花園 (Walled Garden)**。 許多網路工程師常犯一個錯誤,就是在預先驗證的存取控制清單(ACL)中,將 Apple 的成功網域(例如 `captive.apple.com`)列入白名單。他們會想:「既然這是 Apple 的網域,我應該讓它通過。」但如果您將它列入白名單,背景探測就會成功到達 Apple 的伺服器並收到「Success」回應,接著 iOS 就會判斷沒有 Captive Portal。如此一來,Websheet 視窗就永遠不會觸發!與此同時,使用者卻被阻擋而無法存取任何其他網站。因此,第一條法則:**千萬不要在您的隔離園區(walled garden)中將 captive.apple.com 列入白名單。** [簡短的轉場音效] **主持人**:但是現代的 iOS 隱私功能又該如何處理?即使有完美的隔離園區,像是 **iCloud 私密轉送**(iCloud Private Relay)與**專用 MAC 位址**等功能也正在改變遊戲規則。 我們來談談 iOS 15 中推出的 iCloud 私密轉送(iCloud Private Relay)。這項功能會將 Safari 的 DNS 和 HTTP 流量加密,並透過雙躍點代理伺服器架構進行路由。當啟用了私密轉送的使用者連線到您的訪客 WiFi 時,背景 HTTP 探測會被封裝在加密通道內。因為您的網路閘道器無法檢查或攔截此加密封包,所以無法植入重新導向。探測會無聲無息地失敗,而 iPhone 只會顯示「沒有網際網路連線」的警告。沒有入口網站,沒有登入,只有阻礙。 幸運的是,對此有一種程式化的網路層級緩解措施。Apple 在設計私密轉送時,使其會遵循網路層級的封鎖。如果您的本地 DNS 伺服器針對 Apple 的私密轉送網域(特別是 `mask.icloud.com` 與 `mask-h2.icloud.com`)傳回 **NXDOMAIN** 回應,iOS 就會識別出該網路與私密轉送不相容。它會立即顯示系統提示,詢問使用者是否要針對此網路「不使用私密轉送」。當他們點擊該選項的瞬間,系統就會繞過加密通道,攔截 HTTP 探測,您的 Captive Portal 就能完美載入。 接下來是**專用 MAC 位址**以及 iOS 18 中全新的**輪替 MAC 位址**。在預設情況下,iPhone 會針對每個 SSID 隨機分配其 MAC 位址。在 iOS 18 中,即使連線到同一個網路,此位址也會定期輪替。如果您的無線控制器僅靠 MAC 位址來追蹤已驗證的訪客工作階段,突然的輪替會導致閘道器將該 iPhone 視為全新的、未驗證的裝置。訪客會突然斷線並被強制重新登入。 為了解決這個問題,企業級場域必須捨棄簡單的 MAC 基礎追蹤。像 **Purple** 這樣的平台透過在瀏覽器工作階段中植入安全且持久的 Cookie 來解決此問題,或者更理想的做法是將場域轉換至 **Passpoint**(亦稱為 Hotspot 2.0)。Passpoint 使用安全的 802.1X 設定檔來自動且安全地對回訪訪客進行身分驗證,而完全不需要顯示 Captive Portal 頁面。它既安全又無縫,並且完全繞過了 CNA 的限制。 [簡短的轉場音樂漸強] **主持人**:現在,讓我們來談談自訂 DNS 設定檔和本地 VPN。 許多技術型使用者會安裝自訂 DNS 設定檔(例如 NextDNS 或 AdGuard)來強制執行加密的 DNS-over-HTTPS。由於這些設定檔會繞過您本地由 DHCP 分配的 DNS 伺服器,您的閘道器將無法對 `captive.apple.com` 進行 DNS 欺騙。同樣地,「一律啟用」的 VPN 設定檔會在分配到 IP 的那一刻立即嘗試建立加密通道。如果 VPN 連線成功,它會繞過您的重導向;如果被阻擋,則會使連線陷入死鎖。 對於這些使用者,最極端的終極手動備用方案就是 **neverssl.com** 招式。如果訪客已連接到您的 WiFi,但 Portal 網頁卻無法載入,請告訴他們開啟 Safari 並在網址列中輸入 `neverssl.com`。因為這個網域是嚴格未加密的 HTTP,閘道器保證能攔截 port 80 的流量並強制載入重導向,從而繞過任何自訂 DNS 或 VPN 的干擾。 [音效:快速過渡鐘聲] **主持人**:讓我們針對場地支援團隊最常遇到的問題,進行快速問答。 *問題一:為什麼我的 iPhone 在 WiFi 名稱下方顯示橘色的「無網際網路連線」?* **回答**:這代表 iPhone 已完成 WiFi 關聯並取得 IP 位址,但背景 CNA 偵測未能收到 Apple 成功伺服的回應,且未能成功重導向,這通常是 iCloud 私密轉送或啟用中的 VPN 所致。 *問題二:我們可以直接在網路中完全停用 CNA 微型瀏覽器嗎?* **回答**:可以,大多數企業級無線區域網路控制器(Wireless LAN Controllers)都有一個名為「CNA Bypass」或「Captive Portal Bypass」的設定。啟用後,控制器會欺騙 Apple 的成功偵測,讓 iPhone 誤以為已完全連上網際網路。這可以阻止 Websheet 跳出,但這必須依賴使用者手動開啟 Safari 來觸發重導向,有時反而會造成使用者更多困惑。 *問題三:什麼是驗證後偵測問題?* **回答**:在訪客登入後,CNA Websheet 會執行二次偵測以驗證網際網路存取。如果您的閘道器將他們重導向至登入後登陸頁面,但繼續阻擋 Apple 的成功網域,則右上角的按鈕將一直卡在「取消」上。點擊「取消」會中斷他們的 WiFi 連線。您必須確保 Apple 的成功網域在驗證後完全可以存取。 [簡短的過渡音樂漸強] **主持人**:最後,讓我們來看看這對實際業務帶來的影響。 優化您的 captive portal 不僅是為了追求技術上的完美,更關乎您的實質收益。我們最近與一家奢華五星級度假村集團合作,他們原本的訪客 WiFi 連線失敗率高達 35%,導致每週產生超過 450 件櫃檯投訴。透過重構其 walled garden、在 DNS 層級封鎖專用代理(Private Relay)網域以強制進行本地路由,並部署 **Purple 的 Guest WiFi** 解決方案,他們在短短 30 天內就讓櫃檯的 WiFi 報修件數減少了 **92%**。其旅客滿意度評分大幅飆升,並成功收集了數千筆經驗證的訪客設定檔。 如果您想確保您的訪客 WiFi 網路與 Apple 的 Captive Network Assistant 完美互動,同時最大化數據收集並降至最低支援成本,請前往 **purple.ai**。我們的平台經過專門設計,開箱即可處理所有這些 iOS 特有的細微差異。 感謝您收聽本次 Purple 技術簡報。本週就實施這些 walled garden 與 DNS 策略,看著您的支援工作票券隨之消失。我們下次再見,祝您的連線保持安全,訪客登入流程順暢無阻。 [片尾音樂:輕快的電子合成樂漸漸淡出]

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

Interactive Network Tool

Apple iOS captive portal and CNA diagnostic advisor

Diagnose captive portal popup failures, white screens, SSL warnings, and iCloud Private Relay issues across iOS 14 to iOS 18 with controller-specific remediation scripts.

Critical

Apple CNA Probe Request Intercepted or Dropped Before HTTP 302

The Apple Captive Network Assistant (CNA) daemon failed to detect network captivity because probe HTTP GET requests to captive.apple.com/hotspot-detect.html were silently dropped or returned an unhandled status.

Detailed Protocol Breakdown (IOS_18)

Upon associating with an unauthenticated SSID, iOS issues an HTTP GET request to http://captive.apple.com/hotspot-detect.html expecting the string "<HTML><HEAD><TITLE>Success</TITLE></HEAD><BODY>Success</BODY></HTML>". If the network drops TCP port 80 or hijacks DNS without returning an immediate HTTP 302 redirect, iOS assumes internet connectivity is offline and suppresses the slide-over CNA sheet.

Pre-auth walled garden allowlist (never the Apple probe hosts):

*.purple.ai*.purplewifi.netfonts.googleapis.comfonts.gstatic.com

Reduce captive portal login failures with Passpoint and Purple

Provide instant, seamless onboarding for iOS and Android guest WiFi without CNA popup errors or manual browser logins.

Useful? Link to this tool

執行摘要

iOS 裝置(iPhone 與 iPad)上的 Captive Portal 登入失敗,是旅宿業、零售業、醫療保健和企業環境中,訪客 WiFi 連線客訴的主要原因之一。當 iOS 裝置與開放式或需經網頁驗證的無線網路關聯時,Apple 的 Captive Network Assistant (CNA) 幕後程式會啟動一系列背景 HTTP 探測。如果這些探測被阻擋、路由錯誤或未正確攔截,Captive Portal 顯示頁面(Splash Page)將無法載入,導致使用者無法存取網際網路,也無從得知如何登入。

本技術指南詳細介紹了 Apple CNA 偵測的底層機制,分析了關鍵的 iOS 隱私功能 - 包括 iCloud Private Relay、專用 WiFi 位址(MAC 隨機化) 和 加密 DNS - 並為網路工程師與場域營運商提供逐步的緩解策略。

正為 iOS 上的訪客 WiFi 連線中斷而苦惱嗎?

Purple 的雲端管理訪客 WiFi 平台可自動處理 Apple CNA 探測、iCloud Private Relay 和 MAC 隨機化 - 在所有 iOS 和 Android 裝置上提供無縫的 Captive Portal 註冊體驗。

探索 Purple 訪客 WiFi →

技術深入探討

Apple 的偵測邏輯與探測機制

當 iPhone 連線到無線存取點時,iOS 網路堆疊會立即發送一個名為 captivenetworkd 的幕後程式。該幕後程式會向預先定義的 Apple 驗證 URL 發送純 HTTP GET 要求,包括:

  • http://captive.apple.com/hotspot-detect.html
  • http://www.apple.com/library/test/success.html
  • http://gsp1.apple.com/pep/gcc
+-------------------+       HTTP GET captive.apple.com       +----------------------+
|   iPhone (iOS)    | -------------------------------------> |  Network Controller  |
+-------------------+                                        +----------------------+
          |                                                             |
          | <--- HTTP 302 Redirect (https://portal.purple.ai) ---------+
          |
          v
[ 啟動 CNA Websheet ] ---> [ 轉譯 Purple Captive Portal ]

該幕後程式會評估 HTTP 回應狀態和內容主體:

  1. 成功回應 (HTTP 200,包含 <HTML><HEAD><TITLE>Success</TITLE></HEAD><BODY>Success</BODY></HTML>"): 作業系統判定該網路提供不受限制的網際網路存取。不顯示任何快顯頁面。
  2. 重導向回應 (HTTP 302 / 307): 網路閘道器攔截 Port 80 的 HTTP 請求,並將用戶端重導向至 Captive Portal URL。iOS 辨識出重導向並啟動 CNA Websheet (一個特製的互動視窗瀏覽器)。
  3. 連線逾時或重設: 如果閘道器丟棄 Port 80 封包或無法回應 DNS 查詢,探針會逾時。iOS 會在設定中的 SSID 名稱下方顯示「無網際網路連線」警告,但無法顯示登入頁面。

驗證後探測 (「完成」按鈕挑戰)

當使用者在快顯頁面上提交憑證或接受服務條款後,無線區域網路控制器 (WLC) 會將用戶端 ACL 狀態更新為「已驗證」。CNA 精靈會立即向 captive.apple.com 發送後續的 HTTP 探針。

如果第二個探針傳回 HTTP 200「Success」,CNA Websheet 右上角的按鈕會從「取消」變更為「完成」。如果網路在驗證後未能立即允許頻外 HTTP 存取,該按鈕將一直卡在「取消」,此時點擊它可能會導致裝置與 WiFi 網路完全斷開連線。


iOS 專屬干擾因素

1. iCloud 私密轉送

iCloud 私密轉送於 iOS 15 推出,是一項旨在保護網頁瀏覽隱私的 Apple 服務。啟用後,Safari 和未加密的 HTTP 流量會被加密並透過兩個獨立的網際網路轉送站進行路由:

[ iPhone ] === 加密 QUIC/TLS ===> [ Apple 入口代理伺服器 ] ---> [ 出口代理伺服器 ] ---> [ 網頁目標 ]
  • 問題所在: 私密轉送透過 Oblivious DNS-over-HTTPS (ODoH) 加密 DNS 請求,並透過 QUIC (UDP Port 443) 建立 HTTP 流量通道。由於本地閘道路由器無法檢查或攔截加密的 QUIC 流量,因此無法植入標準的 HTTP 302 重導向。
  • 影響: 前往 captive.apple.com 的初始 HTTP 探針會透過通道遠離本地閘道,導致連線逾時且無法顯示快顯頁面。

2. 私用 MAC 位址與輪替識別碼

自 iOS 14 開始並在 iOS 18 中擴展,Apple 預設啟用私用 WiFi 位址。iOS 不使用裝置的永久硬體 MAC 位址,而是為每個 SSID 產生一個隨機的 MAC 位址。

  • 問題所在: 在使用基於 MAC 的工作階段授權網路中 (已驗證的使用者可根據 MAC 位址獲得 24 小時的存取權限),MAC 輪替會導致網路閘道器將返回的裝置視為新的、未驗證的用戶端。
  • 影響: 使用者會重複看到 Captive Portal 快顯頁面,導致使用者體驗不佳並產生大量的前台支援工單。

3. 加密 DNS 設定檔 (DoH / DoT)

擁有自訂 iOS 設定描述檔(例如 NextDNS、Cloudflare 1.1.1.1 或企業 MDM DNS 設定)的使用者,會透過加密的 HTTPS (DoH) 或 TLS (DoT) 將所有 DNS 查詢直接傳輸到外部解析器。

  • 問題所在:本地網路 DNS 伺服器無法攔截或欺騙針對 captive.apple.com 或不存在網域的 DNS 請求。
  • 影響:初始 DNS 解析會完全繞過本地控制器,導致無法觸發 Captive Portal 重新導向。

-

實作與緩解指南

圍牆花園(認證前 ACL)設計

為確保在 iOS 上能可靠地呈現 Captive Portal,網路工程師必須精確設定認證前的圍牆花園存取控制清單 (ACL):

規則類型 目標 / 網域 用途
允許 *.purple.ai、*.purpleshield.com 允許未認證的用戶端連線至 Purple 傳送門基礎架構與資產。
攔截 前往任何目標的 HTTP (TCP 連接埠 80) 攔截純 HTTP 網頁流量以觸發 302 重新導向。
封鎖 / NXDOMAIN mask.icloud.com、mask-h2.icloud.com 回傳 NXDOMAIN 以示警「私密轉送」在本地網路上無法使用。
請勿加進白名單 captive.apple.com、www.apple.com 絕不能加進白名單。加入白名單會導致探測成功,而無法啟動傳送門。

逐步 WLC 設定(以 Cisco Catalyst / Meraki 為例)

  1. 設定 DNS 攔截:將 DHCP 伺服器設定為將閘道 IP 位址指派為未認證用戶端的主 DNS 伺服器。
  2. 設定私密轉送訊號:在本地 DNS 伺服器上新增 DNS 重寫規則:
    mask.icloud.com      IN A 0.0.0.0 (或 NXDOMAIN)
    mask-h2.icloud.com   IN A 0.0.0.0 (or NXDOMAIN)
    
    當 iOS 收到這些主機名稱的 NXDOMAIN 時,會顯示系統提示:「此網路已封鎖 iCloud 私密轉送。您要在不使用私密轉送的情況下使用此網路嗎?」 點選 在不使用私密轉送的情況下使用 即可恢復標準的傳送門重新導向。
  3. 設定工作階段逾時:根據 IP/MAC 配對設定閘道工作階段逾時,或清除持續性授權 Cookie。

-

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

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

最佳實踐與產業標準

大規模管理訪客無線上網引導需要遵循現代網路標準:

  • 過渡至 WPA3-Personal (OWE):傳統訪客傳送門在開放、未加密的 SSID 上執行。企業場域應採用商機隨機無線加密 (OWE) (IEEE 802.11aq),以提供無密碼的個人化加密。
  • 符合 PCI DSS 與 GDPR 規範:訪客傳送門必須將訪客流量與 PCI DSS 付款網路隔離。在收集聯絡資料時,傳送門必須提供明確、未綑綁的 GDPR 同意核取方塊 - 這可以透過 WiFi Analytics 平台輕鬆管理。
  • 部署 Passpoint (Hotspot 2.0):為了完全消除 Captive Portal 的摩擦,場所可以部署 Passpoint (Hotspot 2.0)。Passpoint 使用蜂巢式網路風格的驗證,透過預先安裝的描述檔安全且自動地連接 iOS 裝置,完全繞過 CNA 幕後程式。

疑難排解與風險緩釋

終端使用者自主修復路徑

  1. 停用該網路的 iCloud 私密轉送:開啟 設定 > WiFi,點擊網路名稱旁邊的 (i) 圖示,然後關閉限制 IP 位址追蹤。
  2. 停用專用 WiFi 位址:在相同的網路設定選單中,如果需要基於 MAC 的存取,請關閉專用 WiFi 位址。
  3. 透過 Safari 強制進行 Portal 重新導向:開啟 Safari 並輸入純 HTTP 位址: http://neverssl.com 由於 neverssl.com 不使用 HTTPS,因此本機路由器將能可靠地攔截該請求並載入 Portal 頁面。

網路工程師診斷路徑

                  [ iPhone 連接至訪客 SSID ]
                                  |
                                  v
                        [ 已分配 DHCP IP? ]
                        /                   \
                     (否)                   (是)
                      /                       \
        [ 檢查 DHCP 網段 ]             [ 可解析 captive.apple.com? ]
                                        /                             \
                                     (否)                             (是)
                                      /                                 \
                         [ 檢查 DNS ACL ]                   [ Apple 是否在白名單中? ]
                                                             /                       \
                                                          (是)                      (否)
                                                           /                           \
                                              [ 自圍牆花園中移除 ]              [ Port 80 重新導向? ]
                                                                               /                   \
                                                                            (否)                   (是)
                                                                             /                       \
                                                                 [ 修復 WLC 導向 ]    [ 載入 CNA 網頁 ]

投資報酬率與業務影響

優化 iOS 訪客 WiFi 的上網引導體驗,對場所營運和業務指標有著直接且可衡量的影響。

飯店業案例研究:五星級度假村集團

  • 挑戰:一家擁有 12 家物業的奢華酒店集團,其訪客 WiFi 連線失敗率高達 35%,導致每週產生超過 450 起櫃檯投訴。
  • 實施:IT 團隊重構了其 walled garden(圍牆花園),停用了基於 MAC 的工作階段追蹤,並部署了具備最佳化 CNA 處理能力的 Purple 的 Guest WiFi 解決方案。
  • 結果:前台與 WiFi 相關的投訴在 30 天內減少了 92%。客戶滿意度 (CSAT) 評分提升了 18 分,且該場所在第一季度收集了 40,000 個全新驗證的電子郵件地址。

零售案例研究:全國購物中心營運商

  • 挑戰:一家擁有 45 間購物中心的零售營運商難以提升訪客互動率,因為 iCloud 私密轉送阻止了 40% 的 iOS 裝置載入 Captive Portal。
  • 實施:實施了網路層級的私密轉送阻擋(針對 Apple 的轉送網域傳回 NXDOMAIN 以強制進行本地路由),並部署了 WiFi Analytics。
  • 結果:Portal 完成率從 58% 躍升至 94%。行銷團隊透過在地化的零售媒體活動,將收回的 Portal 版位變現,每季創造了額外 $120,000 美元的廣告收入。

相關資源

對於部署企業級客用無線網路的網路團隊,這些資源提供了更深入的技術背景資訊:

Purple 的 Guest WiFi 平台為全球的 旅宿業、零售業、醫療保健 和 交通運輸 場所提供服務,大規模提供經過 CNA 最佳化的客用登入體驗。

關鍵定義

Apple Captive Network Assistant (CNA)

一個 iOS 和 macOS 作業系統精靈,用於探測網際網路連線能力,並在偵測到 Captive Portal 時自動啟動受限的 WebKit 強制回應視窗(WebSheet)。

控制在連接訪客 WiFi 時,iPhone 上是否會自動出現登入認證頁面。

金絲雀探測 URL (Canary probe URL)

用戶端作業系統用來驗證不受限網際網路連線能力的輕量級 HTTP 端點(例如 http://captive.apple.com/hotspot-detect.html)。

如果探測回應被修改或重新導向,作業系統會觸發其 Captive Portal 處理常式。

RFC 8908 Captive Portal API

一個 IETF 標準協定,提供一個 API 端點,讓裝置可以透過 JSON 查詢網路限制狀態、場地條款以及剩餘的工作階段時間。

以結構化、具加密安全性的網頁寄存網路偵測,取代傳統的 HTTP 劫持。

DHCP Option 114 (Captive-Portal)

一個 DHCP 選項(RFC 8910),在初始第 3 層位址指派期間,將 RFC 8908 Captive Portal API 的 URI 傳遞給用戶端裝置。

在取得 IP 期間立即向 iOS 14+ 提示受限狀態,繞過 DNS 篡改。

iCloud Private Relay

一項 Apple 隱私服務,透過雙躍點加密代理架構路由 Safari 流量與未加密的 DNS。

除非本地網路發出明確的網路受損訊號 (NXDOMAIN),否則可能會遮罩認證前的 DNS 查詢。

專用 WiFi 位址 (MAC 隨機化)

iOS 14+ 中的一項隱私功能,可為每個 SSID 產生唯一的隨機化 MAC 位址,以防止跨場所的實體追蹤。

如果 MAC 位址在工作階段中途或重新認證期間輪替,可能會導致 RADIUS 計費工作階段不同步。

範例

一家部署了 Cisco Catalyst 9800 WLC 的豪華酒店發現,當 iPhone 訪客用戶連接到開放的訪客 WiFi SSID 時,他們從未收到 Captive Portal 認證頁面。而 Android 和 Windows 筆記型電腦則能立即載入該頁面。網路團隊應如何診斷並修復此 Apple CNA 偵測問題?

  1. 檢查預先授權重新導向 ACL:驗證 Cisco 9800 重新導向 ACL 是否拒絕(跳過)UDP 53 DNS 並允許 TCP 80 HTTP 以觸發重新導向。2. 檢查 Apple 探測白名單:確保 captive.apple.com 在重新導向之前「沒有」被列入預先授權圍牆花園(Walled Garden)的白名單中;將其列入白名單會使 iOS 誤以為網路已開通,進而抑制 Portal 的顯示。3. 驗證 HTTP 302 與 307:設定 WLC webauth 參數對應,以傳回帶有 Portal FQDN 的 HTTP 302 Found 重新導向。4. 停用 HTTPS 攔截:確保連接埠 443 HTTPS 流量被捨棄或拒絕,而不是使用不受信任的憑證進行劫持。5. 部署 DHCP Option 114:在訪客 DHCP 位址池中加入 option 114 ascii https:///api/v1/capport,以便原生 iOS 14 - 18 進行偵測。
考官評語: Apple 裝置極度依賴 captive.apple.com 傳回的 Success 憑證進行精確比對。如果探測網域過早在圍牆花園中被放行,iOS 就會錯誤地判斷網路已開通,且永遠不會觸發 WebSheet。

某體育場網路管理員觀察到,iOS 17 和 iOS 18 用戶遇到了無限登入循環:出現 CNA 頁面,用戶接受條款並點擊「連接」,強制回應視窗關閉,但 30 秒後視窗重新開啟並再次要求登入。其根本原因和補救措施是什麼?

  1. RADIUS 工作階段追蹤:在 iOS 17/18 上,「專用 WiFi 位址」如果啟用,會使用輪替的 MAC 位址,或者裝置可能在結束強制回應視窗時重新交涉 DHCP。2. RADIUS CoA 設定:驗證控制器是否在 UDP 連接埠 3799 上處理 RFC 3576 RADIUS 授權變更(CoA)中斷連線,以便在驗證成功後立即移除預先授權 ACL。3. 工作階段逾時與寬限期:將 MAC 驗證繞過(MAB)快取逾時增加到 1440 分鐘(24 小時),並提供 15 分鐘的租約寬限期。4. 圍牆花園 OAuth 資源:驗證所有 OAuth 端點(Google、Apple、Microsoft)以及字型和樣式表皆已納入圍牆花園中,以便在關閉 WebSheet 之前完全載入工作階段。
考官評語: 無限重新導向循環通常源於 RADIUS CoA 延遲。當 iOS 傳送登入後驗證探測時,控制器尚未將用戶端狀態從預先授權更新為授權後狀態。

練習題

Q1. 為什麼嘗試重新導向 HTTPS (連接埠 443) 流量會導致 iOS 裝置上出現 Captive Portal 錯誤,而不是開啟歡迎頁面?

提示:思考 TLS 加密、憑證驗證與 HSTS 如何保護網路流量。

查看標準答案

HTTPS 在用戶端瀏覽器與目的地網頁伺服器之間建立端對端加密的 TLS 通道。當無線閘道器嘗試攔截連接埠 443 並提供重新導向時,閘道器提供的 SSL/TLS 憑證與要求的網域名稱 (例如 google.com 或 apple.com) 不相符。iOS 會強制執行 HTTP 嚴格傳輸安全 (HSTS),導致 Safari 和 WebKit 中止連線並顯示嚴重的安全性警告,而不會執行重新導向。

Q2. 企業客用網路應如何處理 iCloud Private Relay,以確保在 iOS 裝置上順暢地進行 Captive Portal 重新導向?

提示:檢閱 Apple 官方關於 mask.icloud.com DNS 回應的網路指南。

查看標準答案

網路管理員應將其本地遞迴 DNS 伺服器設定為針對網域名稱 mask.icloud.com 和 mask-h2.icloud.com 回傳 NXDOMAIN 回應 (或 DNS 解析失敗)。當 iOS 收到這些金絲雀網域的 NXDOMAIN 回應時,它會顯示系統警報,通知使用者該網路不支援 Private Relay,並乾淨地回復到標準 DNS 和 HTTP 探測處理。

Q3. 與傳統的 DNS 和 HTTP 劫持技術相比,部署 RFC 8908 Captive Portal API 有何優勢?

提示:思考協定清晰度、第 3 層訊號傳送與使用者體驗。

查看標準答案

RFC 8908 提供了一項標準化的 JSON REST API,透過 DHCP Option 114 或 IPv6 路由器公告進行通訊。用戶端作業系統無需攔截使用者網頁流量,而是直接透過 HTTPS 查詢該 API,以了解該網路是否為 Captive 網路、取得入口網站登入 URL、檢查剩餘額度,並接收場所品牌的通知。這消除了 SSL 憑證警告、支援密碼管理員,並維護了瀏覽器的安全完整性。

常見問題

為什麼我的 Captive Portal 沒有在 iPhone 上彈出?

當 Apple Captive Network Assistant (CNA) 無法完成對 http://captive.apple.com/hotspot-detect.html 的探針測試時,iPhone 上的 Captive Portal 就會無法彈出。常見原因包括:1) 認證前防火牆阻擋了 UDP port 53 DNS;2) 網路在 walled garden 中過早將 captive.apple.com 設為白名單;3) 閘道器企圖進行 HTTPS 攔截而非 HTTP 302 重新導向;或 4) iCloud Private Relay 干擾了 DNS 解析。

如何強制在 iOS 上顯示 WiFi 登入畫面?

要在 iPhone 上手動觸發 Captive Portal:1) 開啟 Safari 並瀏覽純文字 HTTP URL,例如 http://captive.apple.com、http://neverssl.com 或 http://1.1.1.1;2) 前往「設定」>「WiFi」,點擊該網路旁邊的資訊 (i) 圖示,並確保「自動加入」與「自動登入」已切換為開啟;3) 關閉 WiFi 並重新開啟以觸發 CNA 探針精靈。

哪些網域必須加入 Apple 裝置的 walled garden 中?

若要支援 Apple iOS 與 macOS 的 Captive Portal 偵測與資源載入,請將以下網域加入白名單:captive.apple.com、www.airport.us、appleiphonecell.com、*.apple.com、*.purple.ai、*.purplewifi.net,以及登入頁面上使用的任何第三方 OAuth 提供者網域(例如 accounts.google.com)或 CDN 資源。

RFC 8908 如何解決 iOS 的 Captive Portal 問題?

RFC 8908 (Captive Portal API) 與 RFC 8910 (DHCP Option 114) 會在 DHCP IP 租約協商期間,將 Captive Portal URL 直接傳遞給 iOS。這使得 iOS 14+ 能夠在 Layer 3 立即識別網路受限狀態,而無需依賴脆弱的 HTTP 重新導向或 DNS 劫持。

MAC 位址隨機化如何影響 Captive Portal 驗證?

iOS 私密 WiFi 位址會在每個 SSID 使用唯一的 MAC 位址。如果裝置輪替其 MAC 位址,或者工作階段快取嚴格與實體 MAC 位址綁定且無 RADIUS accounting 寬限期,使用者可能會被強制重複進行驗證。配置 24 小時的租約寬限期並部署 Passpoint (Hotspot 2.0) 可解決此問題。

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

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