案例拓撲:
拓撲描述:
服務器有2塊網卡,內網網卡2.2.2.1/24 網關2.2.254 提供內網用戶訪問;
外網網卡1.1.1.1/24,外網網關1.1.1.254 80端口映射到公網
這個時候服務器有2條默認路由,分布是0.0.0.0 0.0.0.0 1.1.1254 以及 0.0.0.0 0.0.0.0 2.2.2.254 走負載均衡
用戶通過1.1.1.1 公網地址訪問服務器,服務器有一定的幾率通過2.2.2.254這條默認路由回復,這個時候就導致了流量來回路徑在同一臺設備上不一致。
此次設備是一臺奇安信防火墻,給出如下提示:未命中會話丟包數顯著增加
會話是綁定接口的,那么很顯然來回路徑不一致會導致匹配不到接口下觀察到的會話,導致隨機的丟包。
當服務器將內網網卡的默認網關刪除,并采用明細路由后故障解除。
其他廠家也有一些說法比如:
- ?問題定義與表現?
?來回路徑不一致?:指數據包進入和離開防火墻時經過不同路徑(如流量從接口1出、接口2回),導致防火墻無法正確匹配會話狀態。
?半會話問題?:當路徑不一致時,防火墻僅記錄單向會話(如僅記錄請求方向),回程數據因未匹配會話表被丟棄,表現為TCP連接異常(如第三次握手失敗)、ICMP部分丟包或應用訪問緩慢。
半會話問題一般常見于2臺防火墻,分別串聯在2條二層聚合鏈路上做HA的情況。 - ?主要原因?
?路由規劃不合理?:網絡中存在多路徑但未配置對稱路由,導致往返路徑分離。
?防火墻嚴格模式限制?:默認狀態下,防火墻要求會話狀態嚴格匹配(如華為需檢查會話鏈路狀態,華三默認嚴格模式),非對稱路徑觸發丟包。
?安全策略缺陷?:回程方向未配置匹配策略(防火墻優先依賴會話表,但半會話無法生成完整會話記錄)。 - ?解決方案?
?調整防火墻模式?:
華為設備:關閉會話狀態檢測(undo firewall session link-state check)。
華三設備:切換為寬松模式(session state-machine mode loose),允許非對稱路徑通過。
?注意?:寬松模式可能降低安全性,建議優先優化組網。
?臨時策略調整?:手動放行回程方向的安全策略,確保數據包不被阻斷。
?原進原出功能?:若使用接口地址做SNAT或DNAT,需在接口啟用原進原出(華為設備)。 - ?診斷方法?
?基礎測試?:通過ping和traceroute檢查路徑對稱性,但需注意ICMP可能被放行而掩蓋問題。
?高級工具?:抓包分析TCP握手過程,或通過telnet測試應用端口連通性,結合防火墻會話表排查半會話記錄。 - ?長期優化建議?
?規范組網設計?:避免多路徑冗余導致非對稱路由,確保往返路徑一致。
?會話持久化配置?:部分設備支持會話綁定(如固定下一跳),減少路徑波動影響。
?關鍵總結?:半會話問題本質是防火墻狀態檢測機制與路徑不對稱的沖突,需權衡安全性與可用性選擇解決方案。優先通過路由優化根治,次選防火墻模式調整。