通过 Cisco ASA 的路由正在更改 TCP 序列/ACK 编号

Mar*_*son 7 routing cisco-asa

我们的网络有一个位于办公网络内部的专用 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

使用此路由,192.168.101.1 远程 VPN 端点上的防火墙拒绝 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 上)。

Mar*_*son 5

在 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
Run Code Online (Sandbox Code Playgroud)

这种解决方案有点糟糕 - 确保在执行之前阅读其中的含义。