Routing

通過 Cisco ASA 的路由正在更改 TCP 序列/ACK 號

  • June 11, 2013

我們的網路有一個位於辦公室網路內的專用 VPN 設備。我們有一個帶有靜態路由的 Cisco ASA,它將 VPN 子網路由到 VPN 設備。因此,從客戶端到遠端站點 ( ) 的典型請求192.168.161.28 -> 192.168.101.28是:

客戶端 ASA 本地 VPN 遠端 VPN 遠端伺服器
192.168.161.28 -> 192.168.161.17 -> 192.168.161.10 -> 192.168.101.1 -> 192.168.101.28

使用此路由,遠端 VPN 端點 192.168.101.1 上的防火牆拒絕 3 次 TCP 握手:

Status: A TCP packet was rejected because it has an invalid sequence number or an invalid acknowledgement number

但是,如果我繞過 ASA(直接在客戶端機器上使用靜態路由):

客戶端 本地 VPN 遠端 VPN 遠端伺服器
192.168.161.28 -> 192.168.161.10 -> 192.168.101.1 -> 192.168.101.28

TCP 流已正確握手,一切順利。

會是什麼呢?ASA 上是否有一些檢查規則可能會破壞這一點?我懷疑這是因為流量的返迴路由與發送路由不同(即數據包將直接從 VPN 端點發送到客戶端,而不是通過 ASA,因為它們在同一個 LAN 上)。

在 ASA 上禁用 ACK 隨機化可解決此問題(此方案與範例 B - 多個 Internet 路徑匹配):

access-list tcp_bypass extended permit tcp 192.168.161.0 255.255.255.0 any
class-map tcp_bypass
match access-list tcp_bypass
policy-map tcp_bypass_policy
class tcp_bypass
set connection advanced-options tcp-state-bypass
set connection timeout idle 0:10:00
service-policy tcp_bypass_policy interface inside

這種解決方案有點糟糕 - 請確保在執行之前閱讀其中的含義。

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