我们的networking有一个专用的VPN设备,位于办公室networking内部。 我们有一个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
TCPstream是正确的握手,一切都是顺利的航行。
它会是什么? ASA上有没有一些检查规则可以打破这个规定? 我怀疑这是因为stream量返回路由不同于发送路由(即数据包将直接从VPN端点到客户端,而不是通过ASA,因为它们在同一个LAN上)。
在ASA上禁用ACK随机解决此问题 (此scheme匹配示例B – 多个Internetpath ):
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
这种解决scheme很糟糕 – 确保在做这件事之前阅读这些内容。
防火墙(192.168.101.1)最有可能会丢失SYN-ACK,因为它在不同的路由中被路由回去,并且因为它是一个有状态的防火墙,所以拒绝它。
这通常被称为不对称路由。