Cisco

Android 上 Chrome 的 Captive Portal 問題

  • October 13, 2020

我已經在我們的公共 Wi-Fi 上設置了 WebAuth。我們有一個 Cisco WLC 5508,當使用 iOS、Apple、Windows 設備或某些 Android 設備時,頁面載入正確,但是當我使用 Chrome 53.0.2785.124 作為 Marshmallow 6.0.1 上的預設瀏覽器的設備時,我得到一個指示可能的 MTM 攻擊的錯誤頁面。它顯示“您的連接不是私有的”,然後是其他一些文本和 NET::ERR_CERT_COMMON_NAME_INVALID。這是錯誤的螢幕截圖。

據我了解,這是由於瀏覽器試圖訪問 URL 並期待特定結果,但是請求的 google.com 首頁上的證書與返回的 wlc.mydomain.com 上的主機證書不匹配SSL 證書。

www.google.com/chrome/browser/privacy/whitepaper.html 的一部分內容如下:

如果 Chrome 檢測到 SSL 連接超時、證書錯誤或其他可能由強制門戶(例如酒店的 WiFi 網路)引起的網路問題,Chrome 將向 http://www.gstatic 發出無 cookie 請求。 com/generate_204 並檢查響應程式碼。如果該請求被重定向,Chrome 將在新選項卡中打開重定向目標,假設它是一個登錄頁面。不記錄對強制門戶檢測頁面的請求。

它實際上是向 http://connectivitycheck.android.com/generate_204 發送請求。我看到的問題是來自 WLC 的響應,狀態程式碼是 HTTP 1.1 200 OK。我希望看到由於頁面被阻止或 300 響應指示重定向而導致的錯誤。根據Google上面的文字,當它收到重定向時,聽起來瀏覽器將進入它的 Captive Portal 模式(並打開一個新的標籤頁進行身份驗證)。

我認為這可能是 WLC 配置的問題,但可能是 Android 上的 Chrome 53 的問題。

如果有人有推薦的解決方案,我將不勝感激。

問候, D

原來這是Chrome中的一個錯誤。

請參閱問題 662150

https://bugs.chromium.org/p/chromium/issues/detail?id=662150&can=2&start=0&num=100&q=&colspec=ID%20Pri%20M%20Stars%20ReleaseBlock%20Component%20Status%20Owner%20Summary%20OS%20Modified&groupby=&sort=

雨傘問題是 335933。

****更新:

我們真的需要這個來工作。Google在提出解決方案方面並沒有快速行動。我的新 S7E 內置了一個強制門戶應用程序。

我猜其他製造商仍然會有問題。我確實看到一位患者帶著經歷過這種情況的聯想平板電腦進來。一名員工使用她的舊三星設備也有同樣的情況。

我看到相當多的人遭受俘虜門戶痛苦。我終於能夠通過沉陷強制門戶測試 FQDN 的 DNS 流量來解決這個問題。

我確實首先嘗試在我的 ASA 上基於 FQDN 丟棄流量,但由於流量來自 WLC,我無法基於 VLAN 拒絕。

所以,DNS hack。

在 WLC 上,我設置了 3 個虛擬介面。1 是內部的。2 是供應商,3 是公共的。每個都有自己的 DHCP 範圍,因此我可以根據他們的獨特情況設置所有特定選項。3 有一個 WLAN,其中包含與之關聯的強制門戶。

我將供應商 WLAN 配置為使用公共 DNS 伺服器 - 在該 WLAN 上使用不多。

我有兩個使用 BIND 9 執行 CentOS 的公共記憶體 DNS 伺服器;我將它們鎖定以最小化攻擊面。它們是 ESXi 主機上的虛擬機,每個都安裝了銅網卡,連接到隔離的虛擬交換機和我的 DMZ 網路。沒花我一毛錢。

我這樣做是因為一些使用者(就診醫生)使用他們的個人設備,我們在沒有強制門戶的情況下將他們連接到供應商(他們連接一次並保持連接 - 客人有時間限制,需要接受可接受的使用政策)。

添加到 /etc/named.conf

zone "connectivitycheck.android.com" IN { type master; file "sinkhole.db"; };

zone "clients3.google.com" IN { type master; file "sinkhole.db"; };

/var/named/sinkhole.db

`$TTL 600 @ IN SOA localhost root ( 5 ; serial 3h ; refresh 1h ; retry 1w ; expire 1h ) ; min TTL ; IN NS ns.

  • IN A 127.0.0.1 connectivitycheck.android.com. IN A 127.0.0.1 clients3.google.com. IN A 127.0.0.1`

它不漂亮,但效果很好。我希望這對其他人有幫助。

引用自:https://serverfault.com/questions/811005