原文作者: Mansur

原文链接: http://nbma.info/asa-tcp-traffic-back/

环境R2,R3网关在ASA,R3背后有10.0.0.0网络,ASA路由10.0.0.0/24下一跳是R3
问题,R2访问10.0.0.0/24网段时,流量到达ASA,icmp和udp可以通过,tcp会被丢弃

拓扑

1,R2的10.1.1.44发起TCP流量访问10.0.0.0网段web server
2,ASA收到改流量,发现出站接口是相同的security-level,需要敲下这条命令:
ASA(config)#same-security permit intra-interface
3,然后这个SYN包会通过R3路由到达R4,
4,Web server返回SYN-ACK,这个包在到达R3之后,将会被直接通过mac地址转发到R2
5,R2收到该数据包会直接丢弃,这是因为ASA的“tcp序列号随机化”的默认特性,
当ASA从任意接口收到一个的SYN包时,会将seq随机成另一个数字,记录在状态表中,然后再发出,这是他的一个安全策略。
而在上例中,假定R2初始的SYN包的seq是12345,经过ASA被随机成为56789,R4回报只会确认收到56789,这个包在到达R2之后会被丢弃,因为R2希望确认12345
6,为了避免这种内部的异步路由导致的丢包,需要在ASA赦免特定tcp流量的状态化检测,配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
object-group network LOCAL
network-object 10.1.1.0 255.255.255.0
object-group network VPN
network-object 10.0.0.0 255.255.255.0
access-list TCP-BYPASS extended permit ip object-group LOCAL object-group VPN
//抓取需要bypass的明细流量
ASA(config)#class-map TCP-BYPASS
ASA(config-cmap)#match access-list TCP-BYPASS
//创建class-map匹配感兴趣流量
ASA(config-cmap)#policy-map TCP-BYPASS-POLICY
ASA(config-pmap)#class TCP-BYPASS
//创建policy-map,指定class-map
ASA(config-pmap-c)#set connection advanced-options tcp-state-bypass
//开启tcp bypass特性
ASA(config-pmap-c)#service-policy TCP-BYPASS-POLICY interface inside
//针对inside调用

其他:
如果ping也被ASA检测,那么也需要禁用,否则从10.0.0.0发起的ping是不通的,
其他被ASA检测的协议也是类似