CISCO路由器什么时候路由优先,什么时候NAT优先可能大家都知道,INSIDE进先路由,OUTSIDE进先NAT。
好了,那么对于CISCO ASA却不是这样的情况,大部分上还是先查找路由如果数据从inside进,在两种情况下NAT会优先路由去确认出接口。
- 做了目的NAT转换
- static NAT session存在
知道这个功能后,我们再来看下如下两个CASE
- CISCO ASA虽然没有PBR功能,但是依然能做到双线分流
- ASA 8.3以上版本做了L2L VPN后无法通过隧道管理防火墙,即管理inside接口
针对第一个问题,设计如下拓扑解释下
ASA接口outside IP 200.1.1.1电信,设置默认路由为主 route outside 0 0 200.1.1.2
ASA接口backup IP 200.2.2.1联通,设置默认路由为备份 route backup 0 0 200.2.2.2 100
ASA接口inside IP 192.168.1.1作为内网接入
需求:内网访问HTTP/HTTPS/DNS/FTP走联通,其他包括VPN全部走电信
首先设置内网上网:
nat (inside) 1 0 0
global (outside) 1 interface
global(backup) 1 interface
access-list outside_access_in permit icmp any any echo-reply
access-list backup_access_in permit icmp any any echo-reply
access-group outside_access_in in interface outside
access-group backup_access_in in interface backup
接下来通过NAT来区分内网数据该走哪个接口出去,而不是通过路由来选择,因为这时候路由表里只存在电信的默认路由,联通由于优先级高而不在路由表中!
static (backup,inside) tcp 0.0.0.0 80 0.0.0.0 80
static (backup,inside) tcp 0.0.0.0 443 0.0.0.0 443
static (backup,inside) tcp 0.0.0.0 21 0.0.0.0 21
static (backup,inside) tcp 0.0.0.0 53 0.0.0.0 53
static (backup,inside) udp 0.0.0.0 53 0.0.0.0 53
这些语句表明来自inside需访问的HTTP/HTTPS/21/53全部通过backup来转换目的,这就满足了我上面说的条件1,那么这时候inside数据就不看路由表,直接通过这个NAT语句知道出接口是backup而不是正常情况下的outside!
这样就实现了链路带宽不均等而负载,有兴趣童鞋可以通过packet-tracer来看下数据包是怎么个流程,是不是优先通过NAT来判定出接口。
针对第二问题
大家都知道两台ASA做了L2L VPN后再加上management-access inside就可以在本端内网telnet或者ssh远程管理对端ASA的inside接口。同样的配置如果做在8.3以上版本上你会发现行不通,原因也是因为NAT优先路由。通过一个案例来解释下
192.168.1.0----inside ASA1 outside 200.1.1.1-----ISP----200.2.2.1 outside ASA2 inside 192.168.2.1
如上拓扑,如果ASA8.3版本以前identity nat默认就是查路由的,但是在8.3以后默认是查NAT。
ASA1的192.168.1.0访问192.168.2.1,数据包到ASA2后先通过NAT确认出接口是inside,然后数据包将会一直发到192.168.2.0的局域网里去并不会回包。
所以当我们做了8.3以上版本VPN时需要管理对端ASA设备,需要在identity nat后加上route-lookup关键字让它优先查找路由。
KINGJUNIPER