簡介
本文說明在無線LAN控制器(WLC)環境中排除Web驗證問題的秘訣。
必要條件
需求
思科建議您瞭解以下主題:
有關如何在WLC上設定Web驗證的資訊,請參閱無線LAN控制器Web驗證組態範例。
採用元件
本檔案中的資訊是根據執行韌體版本8.3.121的WLC 5500。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
相關產品
本檔案也適用於以下硬體:
WLC上的Web驗證
Web驗證是第3層安全功能,會導致控制器不允許來自特定使用者端的IP流量(DHCP相關封包/網域名稱系統(DNS)相關封包除外),除非該使用者端正確提供有效的使用者名稱和密碼(透過預先驗證存取控制清單(ACL)允許的流量除外)。Web 驗證是唯一允許用戶端在驗證前取得 IP 位址的安全原則。這是一種簡單的驗證方法,無需借助要求者或用戶端公用程式。Web驗證可在WLC本機上或透過RADIUS伺服器執行。Web驗證通常由想要部署訪客存取網路的客戶使用。
當控制器攔截到用戶端傳來的第一個 TCP HTTP (port 80) GET 封包,就會開始執行 Web 驗證。為了讓使用者端Web瀏覽器達到此目的,使用者端必須首先取得IP位址,然後對Web瀏覽器執行URL到IP位址(DNS解析)的轉譯。如此一來,網頁瀏覽器就知道要將 HTTP GET 傳送到哪個 IP 位址。
若在 WLAN 上設定 Web 驗證,控制器會在驗證程序完成前封鎖來自用戶端的所有流量(DHCP 和 DNS 流量除外)。當使用者端將第一個HTTP GET傳送到TCP連線埠80時,控制器會將使用者端重新導向到https://192.0.2.1/login.html(如果這是已設定的虛擬IP)以進行處理。此程序結束後,登入網頁會隨即出現。
注意:使用外部Web伺服器進行Web驗證時,WLC平台需要外部Web伺服器的預先驗證ACL。
本節詳細介紹Web驗證重新導向程式。
-
開啟網頁瀏覽器並輸入 URL,例如 http://www.example.com。用戶端會為此 URL 送出 DNS 請求,以取得目的地 IP。WLC將DNS請求傳遞到DNS伺服器,DNS伺服器使用DNS回覆進行響應,其中包含目標www.example.com的IP地址,然後將該地址轉發到無線客戶端。
-
接著,用戶端會嘗試啟動與目的地 IP 位址之間的 TCP 連線。它發出一個目的地為www.example.com的IP地址的TCP SYN資料包。
-
WLC有為使用者端設定的規則,因此可以作為www.example.com的代理。它將TCP SYN-ACK資料包發回給客戶端,源地址為www.example.com。客戶端發回TCP ACK資料包以完成三向TCP握手,並且TCP連線已完全建立。
-
使用者端將目的地為www.example.com的HTTP GET封包傳送到。WLC會攔截此封包並將其傳送以進行重新導向處理。HTTP 應用程式閘道會準備 HTML 本文並傳回,以回覆用戶端請求的 HTTP GET。此HTML讓使用者端前往WLC的預設網頁URL,例如http://<Virtual-Server-IP>/login.html。
-
使用者端會關閉具有IP位址的TCP連線,例如www.example.com。
-
現在,使用者端想要前往http://<virtualip>/login.html,因此嘗試使用WLC的虛擬IP位址開啟TCP連線。它會將192.0.2.1(此處的虛擬IP)的TCP SYN封包傳送到WLC。
-
WLC 會以 TCP SYN-ACK 回應,用戶端則會向 WLC 傳回 TCP ACK 以完成交握。
-
使用者端向/login.html傳送一個目的地為192.0.2.1的HTTP GET以要求登入頁面。
-
此要求允許傳至WLC的Web伺服器,且伺服器使用預設登入頁面做出回應。使用者端會收到瀏覽器視窗上的登入頁面,使用者可以在此頁面進行登入。
在本例中,客戶端IP地址為192.168.68.94。客戶端解析了它訪問的Web伺服器10.1.0.13的URL。您可以看到,客戶端通過三次握手來啟動TCP連線,然後傳送一個以資料包96開始的HTTP GET資料包(00是HTTP資料包)。這不是由使用者觸發,而是作業系統自動觸發門戶檢測(我們可以從請求的URL猜測)。控制器會攔截封包並以代碼200回覆。代碼 200 封包內有一個重新導向 URL:
<HTML><HEAD>
<TITLE> Web Authentication Redirect</TITLE>
<META http-equiv="Cache-control" content="no-cache">
<META http-equiv="Pragma" content="no-cache">
<META http-equiv="Expires" content="-1">
<META http-equiv="refresh" content="1; URL=https://192.0.2.1/login.html?redirect=http://captive.apple.com/hotspot-detect.html">
</HEAD></HTML>
然後透過三次交握關閉TCP連線。
然後使用者端啟動與重新導向URL的HTTPS連線,重新導向URL會將其傳送到192.0.2.1(控制器的虛擬IP位址)。用戶端必須驗證伺服器憑證,或是忽略憑證以顯示 SSL 通道。在這種情況下,這是自簽名的證書,因此客戶端忽略了它。登入網頁透過此SSL通道傳送。資料包112開始事務。
您可以選擇為WLC的虛擬IP地址配置域名。如果為虛擬IP地址配置域名,則此域名會從控制器返回到HTTP OK資料包中,以響應來自客戶端的HTTP GET資料包。然後,您必須對此域名執行DNS解析。從DNS解析獲取IP地址後,它會嘗試開啟具有該IP地址的TCP會話,該IP地址是在控制器的虛擬介面上配置的IP地址。
最終,網頁會透過通道到達使用者端,而使用者會透過安全通訊端層(SSL)通道傳回使用者名稱/密碼。
Web驗證使用以下三種方法之一執行:
-
使用內部網頁(預設)。
-
使用自訂登入頁面。
-
使用外部Web伺服器中的登入頁面。
附註:
— 自訂Web驗證套件組合中檔案名稱不得超過30個字元。請確保套件組合中的檔案名稱不超過30個字元。
— 從WLC 7.0版開始,如果在WLAN上啟用Web驗證,且您也有CPU ACL規則,則只要使用者端在WebAuth_Reqd狀態下未進行驗證,以使用者端為基礎的Web驗證規則便一律優先使用。一旦客戶端進入RUN狀態,就會應用CPU ACL規則。
— 因此,如果在WLC中啟用了CPU ACL,則在以下情況下需要虛擬介面IP的allow規則(在ANY方向):
— 當CPU ACL沒有兩個方向的allow ALL規則。
— 如果存在allow ALL規則,但埠443或80也存在較高優先順序的DENY規則。
— 如果禁用secureweb,則虛擬IP的允許規則必須為TCP協定和埠80,如果啟用secureweb,則必須為埠443。當CPU ACL就位時,要允許客戶端在成功身份驗證後訪問虛擬介面IP地址,需要執行此操作。
Web驗證疑難排解
設定Web驗證後,如果功能無法按預期運作,請完成以下步驟:
- 檢查客戶端是否獲得IP地址。如果沒有,使用者可以取消選中WLAN上的DHCP Required覈取方塊,並為無線客戶端提供靜態IP地址。假設與接入點關聯。
- 此程式的下一步是使用Web瀏覽器對URL進行DNS解析。當WLAN客戶端連線到為Web身份驗證配置的WLAN時,客戶端從DHCP伺服器獲取IP地址。使用者開啟Web瀏覽器並輸入網站地址。然後,客戶端執行DNS解析以獲取網站的IP地址。現在,當使用者端嘗試連線至網站時,WLC會攔截使用者端的HTTP GET作業階段,並將使用者重新導向到Web驗證登入頁面。
- 因此,請確保使用者端能夠執行DNS解析,以便重新導向生效。在Microsoft Windows中,選擇開始>運行,輸入CMD以開啟命令視窗,然後執行「nslookup www.cisco.com」並檢視IP地址是否返回。
在Mac/Linux中,開啟一個終端視窗,然後執行nslookup www.cisco.com,並檢視IP地址是否返回。
如果您認為使用者端未取得DNS解析,您可以:
輸入此URL時,它會啟動網頁嗎?如果是,則很可能是DNS問題。這也可能是憑證問題。預設情況下,控制器使用自簽名證書,大多數Web瀏覽器會警告其不要使用。
- 對於使用自定義網頁的Web身份驗證,請確保自定義網頁的HTML代碼適當。
您可以從思科軟體下載範例Web驗證指令碼。例如,對於5508控制器,選擇Products > Wireless > Wireless LAN Controller > Standalone Controllers > Cisco 5500 Series Wireless LAN Controllers > Cisco 5508 Wireless LAN Controller > Software on Chassis > Wireless Lan Controller Web Authentication Bundle,然後下載webauth_bundle.zip檔案。
使用者的Internet瀏覽器重新導向至自訂登入頁面時,系統會將這些引數新增到URL:
- ap_mac — 無線使用者所關聯的接入點的MAC地址。
- switch_url — 必須向其發佈使用者憑據的控制器的URL。
- redirect — 身份驗證成功後使用者重定向到的URL。
- statusCode — 控制器Web驗證伺服器傳回的狀態碼。
- wlan — 無線使用者關聯的WLAN SSID。
以下是可用的狀態代碼:
- 狀態代碼1 — 您已登入。您無需執行進一步的操作。
- 狀態代碼2 — 您未配置為根據Web門戶進行身份驗證。您無需執行進一步的操作。
- 狀態代碼3 — 此時無法使用指定的使用者名稱。使用者名稱可能已經登入到系統?
- 狀態代碼4 — 您已被排除。
- 狀態代碼5 — 您輸入的使用者名稱和密碼組合無效。請重試。
- 上傳到WLC之前,需要在自定義網頁上顯示的所有檔案和圖片必須捆綁到.tar檔案中。確保.tar套件組合中包含的檔案之一是login.html。如果不包括login.html檔案,則會收到以下錯誤消息:
有關如何建立自訂Web驗證視窗的詳細資訊,請參閱無線LAN控制器Web驗證組態範例的自訂Web驗證准則一節。
注意:檔案過大且檔名稱過長可能會導致解壓縮錯誤。建議圖片採用.jpg格式。
- 確保Scripting選項在客戶端瀏覽器上未被阻止,因為WLC上的自定義網頁基本上是HTML指令碼。
- 如果您為WLC的虛擬介面設定了主機名稱,請確保DNS解析對虛擬介面的主機名稱可用。
註意:從WLC GUI導覽至Controller > Interfaces選單,以便為虛擬接口分配DNS主機名。
- 有時,客戶端電腦上安裝的防火牆會阻止Web身份驗證登入頁。嘗試存取登入頁面之前,請先停用防火牆。完成Web驗證後,可以再次啟用防火牆。
- 拓撲/解決方案防火牆可以放置在客戶端和web-auth伺服器之間,這取決於網路。對於實施的每個網路設計/解決方案,終端使用者必須確保網路防火牆上允許這些埠。
通訊協定 |
連接埠 |
HTTP/HTTPS流量 |
TCP埠80/443 |
CAPWAP資料/控制流量 |
UDP埠5247/5246 |
LWAPP資料/控制流量(版本5.0之前) |
UDP埠12222/12223 |
EOIP資料包 |
IP協定97 |
行動化 |
UDP埠16666(非安全)UDP埠16667(安全IPSEC隧道) |
- 若要進行Web驗證,使用者端必須首先與WLC上的適當WLAN建立關聯。導覽至WLC GUI上的Monitor > Clients功能表,以便檢視使用者端是否與WLC關聯。檢查客戶端是否具有有效的IP地址。
- 在Web驗證完成之前,在客戶端瀏覽器上禁用代理設定。
- 預設的Web驗證方法是密碼驗證通訊協定(PAP)。確保在RADIUS伺服器上允許PAP身份驗證,以便此命令生效。若要檢查使用者端驗證的狀態,請檢查RADIUS伺服器的偵錯和記錄訊息。您可以在WLC上使用debug aaa all命令來檢視RADIUS伺服器的偵錯。
- 將電腦上的硬體驅動程式從製造商網站更新為最新代碼。
- 驗證請求方中的設定(筆記型電腦上的程式)。
- 使用內建於Windows中的Windows零配置請求方時:
- 驗證使用者是否安裝了最新的修補程式。
- 對請求方運行調試。
- 在客戶端上,從命令視窗開啟EAPOL(WPA+WPA2)和RASTLS日誌。選擇開始>運行> CMD:
netsh ras set tracing eapol enable
netsh ras set tracing rastls enable
若要停用日誌,請執行相同的命令,但將enable替換為disable。對於XP,所有日誌都可以位於C:\Windows\tracing。
- 如果仍然沒有登入網頁,請收集並分析來自單個客戶端的此輸出:
debug client <mac_address in format xx:xx:xx:xx:xx:xx>
debug dhcp message enable
debug aaa all enable
debug dot1x aaa enable
debug mobility handoff enable
- 如果完成這些步驟後問題未解決,請收集這些調試並使用Support Case Manager以開啟服務請求。
debug pm ssh-appgw enable
debug pm ssh-tcp enable
debug pm rules enable
debug emweb server enable
debug pm ssh-engine enable packet <client ip>
相關資訊