Cisco-Asa

思科自適應安全設備正在丟棄未設置 SYN 標誌的數據包

  • November 18, 2012

我們的 DMZ 中有一個 apache 實例,它被配置為將請求代理到我們網路中的內部 NATed tomcat 實例。它工作正常,但是突然間從 apache 到 tomcat 實例的請求停止通過 apache 日誌中的以下內容:

$$ error $$(70007)指定的超時已過期:ajp_ilink_receive() 無法接收標頭

調查 Cisco 日誌查看器顯示以下內容:

錯誤消息 %ASA-6-106015: Deny TCP (no connection) from IP_address/port to IP_address/port flags tcp_flags on interface interface_name。說明:ASA 丟棄了在 ASA 連接表中沒有關聯連接的 TCP 數據包。自適應安全設備在數據包中查找 SYN 標誌,該標誌指示建立新連接的請求。如果未設置 SYN 標誌,並且不存在現有連接,則自適應安全設備會丟棄數據包。

建議 的操作:除非自適應安全設備收到大量這些無效 TCP 數據包,否則不需要。如果是這種情況,請跟踪數據包的來源並確定發送這些數據包的原因。

所有機器都是使用 VMware 虛擬化的,預設情況下,機器一直使用 Intel E1000 模擬 NIC。我們的網路管理員已將其更改為 VMXNET3 驅動程序以嘗試糾正問題,我們只需要等待,看看問題是否仍然存在,因為它是一個間歇性問題。

還有其他可能導致此問題的原因嗎?這不是我們遇到類似問題的第一個服務。

我們的 apache 主機執行 Ubuntu 11.10,核心版本為 3.0.0-17-server。我們在執行核心 2.6.18-308.16.1.el5 的 RHEL5 (5.8) 上也遇到過這個問題,這台機器也有 E1000 NIC。

注意:我不是網路管理員,而是負責這些系統的軟體架構師和分析程序員。

已發現問題是 ASA 在一段時間後關閉持久連接,當它關閉連接時,它還被配置為RST在再次進行呼叫時不發送消息。

為了理解為什麼這會導致問題,我可以在這裡進行說明。

  1. Apache 創建成功的第一個連接。
  2. 在超過 ASA 重置時間的延遲後,ASA 會關閉連接。
  3. 發出請求,Apache 嘗試發送它認為打開的連接並在之後超時TimeOut- 預設 300 秒
  4. Apache 向客戶端發送錯誤

如果仍有許多池連接處於打開狀態,則此處的問題會被放大。例如,如果 Apache 以 5 個池連接開始,並且在上述關閉一個連接之後,它仍然會在客戶端獲得成功請求之前再顯示 4 次此行為。

有幾種方法可以克服這一點。

  1. 允許 ASA 向其RST信任的客戶端發送消息。
  2. 將配置設置mod_proxy:ProxyPass - keepaliveOn
  3. 將配置設置為mod_proxy:ProxyPass - ttl低於防火牆重置時間。

不要嘗試配置太低mod_proxy:ProxyPass - timeoutmod_proxy:ProxyPass - connectiontimeout就好像您的 tomcat 實例中存在任何長時間執行的操作,例如任何 Web 服務或 ReST 端點,那麼如果它們花費的時間超過此時間,它們可能會開始失敗。

我們的解決方案是同時執行前兩個選項。

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