問題:
瀏覽某些網站時,為什麼會出現502 / 504 GATEWAY_TIMEOUT錯誤?
症狀:使用者在瀏覽某些網站時從Cisco WSA收到502或504網關超時錯誤
使用者在瀏覽網站時收到502或504個網關超時錯誤。訪問日誌將顯示「NONE/504」或「NONE/502」
訪問日誌行示例:
1233658928.496 153185 10.10.70.50 NONE/504 1729 GET http://www.example.com/ - DIRECT/www.example.com - .......
WSA可能返回502或504網關超時錯誤的原因有很多。雖然這些錯誤反應是相似的,但瞭解它們之間的細微差別非常重要。
以下是可能發生的情況型別的一些範例:
- 502: WSA已嘗試與Web伺服器建立TCP連線,但尚未收到SYN/ACK。
- 504: WSA正在接收TCP重置(RST),從而終止與Web伺服器的連線。
- 504: WSA在與Web伺服器通訊之前未收到來自所需服務的響應,例如DNS發生故障。
- 504: WSA已與Web伺服器建立了TCP連線並傳送了GET請求,但WSA從未收到HTTP響應。
以下是每個情景的示例,以及有關潛在問題的更多詳細資訊:
502: WSA已嘗試與Web伺服器建立TCP連線,但尚未收到SYN/ACK。 |
如果Web伺服器未響應WSA的SYN資料包,經過一定嘗試後,客戶端將收到502 Gateway Timeout錯誤。
此問題的典型原因為: 1. Web伺服器或Web伺服器網路出現問題。 2. WSA網路上的網路問題導致SYN資料包無法訪問Internet。 3.防火牆或類似裝置正在丟棄WSA SYN資料包或Web伺服器的SYN/ACK 4. IP欺騙在WSA上啟用,但是配置不正確(無返迴路徑重定向)
故障排除步驟: 第一步是驗證WSA是否能ICMP ping通Web伺服器。這可以透過使用以下CLI命令來完成:
WSA> ping www.example.com 如果ping失敗,並不表示伺服器已關閉。這可能表示ICMP封包在路徑中的某處遭到封鎖。如果ping成功,那麼我們可以確定WSA與Web伺服器之間具有基本的第3層連線。 Telnet測試將驗證WSA是否能夠在埠80上與Web伺服器建立TCP連線。有關執行telnet測試的資訊,請參閱本文中進一步的說明。 網路問題或防火牆阻止
如果ping成功,但telnet失敗,則很有可能是過濾裝置(如防火牆)阻止此資料流透過網路。建議分析防火牆日誌和/或來自防火牆的資料包捕獲以瞭解更多詳細資訊。 啟用IP欺騙,但未正確配置 如果透過WSA顯式代理或telnet測試成功,這表明WSA可以直接與Web伺服器通訊,但是當客戶端透過WSA代理並進行IP欺騙時,會出現問題。 沒有客戶端IP欺騙:
- WSA使用自己的IP地址作為源向Web伺服器傳送SYN。當資料包返回時,它會直接到達WSA。
使用客戶端IP欺騙:
- WSA傳送SYN,但使用客戶端的IP作為源。如果沒有特殊的網路設定,返回的資料包將傳送到客戶端而不是WSA。
- 要使用客戶端IP欺騙,必須以非常特定的方式配置網路,以便正確重定向資料包。如果Web伺服器返迴路徑資料包被傳送到客戶端而不是WSA,則WSA將永遠不會看到伺服器SYN/ACK,並將502 Gateway Timeout錯誤傳送回客戶端。
|
504: WSA正在接收TCP重置(RST),從而終止與Web伺服器的連線。 |
如果WSA在其與Web伺服器的上行連線上收到TCP重置資料包,WSA將向客戶端傳送504網關超時錯誤。 此問題的典型原因為: 1. Cisco Layer 4 Traffic Monitor (L4TM)正在阻止WSA代理連線Web伺服器。 2.防火牆、IDS、IPS或其他資料包檢查裝置正在阻止WSA。 故障排除步驟: 首先確定TCP RST是來自L4TM還是來自其他裝置。 如果L4TM阻止此流量,此流量將顯示在GUI報告的「Monitor -> L4流量監視器」下。否則,RST來自其他裝置。 L4TM阻塞: 如果L4TM阻塞,建議不要阻塞WSA代理也在運行的埠上。原因有多種: 1.如果出現問題,WSA代理會提供一個友好的錯誤消息,而不僅僅是TCP重置連線。這有助於限制終端使用者在遭到阻止時的困惑。 2. WSA代理能夠掃描和阻止特定內容,而L4TM阻止與列入黑名單的IP地址匹配的所有流量。 若要將L4TM配置為不在代理埠上阻塞,請轉到「GUI -> Security Services -> L4 Traffic Monitor」。 如果站點是已知有問題的網站,但有理由允許流量,則站點可以是中列出的白色: "GUI ->網路安全管理器-> L4流量監視器->允許清單" 防火牆/IDS/IPS阻塞: 如果網路上的另一台裝置阻止WSA連線到Web伺服器,建議分析以下內容: 1.防火牆阻止日誌 2.在出現問題時入口/出口資料包捕獲 阻止日誌可以快速確認裝置是否阻止了WSA。有時,防火牆、IPS或IDS會阻止流量,並且無法正確記錄流量。在這種情況下,證明TCP RST來源的唯一方法是從裝置獲取入口和出口捕獲。如果RST從入口介面傳送出去,並且沒有資料包透過出口端,則肯定是由安全裝置導致的。
|
504: WSA已與Web伺服器建立了TCP連線並傳送了GET請求,但WSA從未收到HTTP響應。 |
如果WSA傳送HTTP GET但從未收到響應,則會向客戶端傳送504網關超時錯誤。 此問題的典型原因為:
- 防火牆、IDS、IPS或其他資料包檢測裝置允許TCP連線,但阻止HTTP內容到達Web伺服器。在這種情況下,Telnet測試可能有助於隔離被阻止的HTTP資料種類。
防火牆阻止日誌可以快速確認裝置是否阻止WSA,以及為什麼。有時,防火牆、IPS或IDS會阻止流量,並且無法正確記錄流量。在這種情況下,證明TCP RST來源的唯一方法是從裝置獲取入口和出口捕獲。如果RST從入口介面傳送出去,並且沒有資料包透過出口端,則肯定是由安全裝置導致的。 |
使用telnet測試與Web伺服器的連線 |
從WSA CLI,運行telnet命令:
WSA> telnet 請選擇您要從哪個介面進行telnet訪問。 1. 自動 2. 管理(192.168.15.200/24: wsa.hostname.com) 3. P1 (192.168.113.199/24: data.com) [1]> 3 輸入遠端主機名或IP地址。 []> www.example.com
輸入遠端埠。 [25]> 80
正在嘗試10.3.2.99... 已連線到www.example.com. 逸出字元是'^]'。
附註:紅色的「已連線」消息表明TCP已在WSA和Web伺服器之間成功建立。
也可以透過此telnet會話手動傳送HTTP請求。以下是可以在「已連線」消息後鍵入的請求示例:
------------------------------------------------------------------------------------- 獲取http://www.example.com HTTP/1.1 主機: www.example.com {Enter} -------------------------------------------------------------------------------------
注意:請確保在末尾增加額外的回車,否則伺服器將不會響應請求。 |