在企业中常常存在这样一种情形,如下图
企业的边界路由器需要连接连接两个不同的ISP,比如联通和电信。这样设置是为了企业网络的稳定所采取的主备结构。在本图中我们假定以电信为主ISP,联通为备ISP。
但是本图中边界路由器连接的企业内部的源只有一个,在这里用PC来替代表示。
为了形成走主不走备,主坏了切换到备的情形,可以采用浮动静态路由,比如
ip route 10.1.1.0 255.255.255.0 192.168.1.1 2
这里的2就是需要设置的mertic值,根据不同情形设置为不同的值来达到主备路由
然后在边界路由器做NAT
-
先用acl抓取流量,因为源是一样的,可以用一个acl抓取,比如
- access-list 1 permit any
-
然后根据两个接口写两个nat
- ip nat inside source list 1 interface e0/0
- ip nat inside source list 1 interface e0/1
在这里因为acl相同 最后会发现第2条nat条目会将第一条nat条目覆盖掉
-
在这里用两个acl来抓取同一个源的流量
- access-list 1 permit any
- access-list 2 permit any
这样就不会覆盖nat
这样设置看起来没有好了,但是还是有问题
因为nat表中的nat条目存在顺序,不会同时执行,这样就会导致问题产生:如果条目顺序如上图,那么当主ISP为电信,在e0/1口时,nat表会先匹配第一条nat,这样会出现走电信e0/1口的流量走联通e0/0口,由于浮动静态路由的设置,不会让他走联通,这样会出现流量出不去。就算是第一条nat匹配的是电信,但是当电信挂了,联通成主的时候,联通也会遇到这样的问题。
解决过程:
使用route-map中的next-hop,当你去往电信的下一跳就让你关联电信的转换表,当你去往联通的下一跳就让你关联联通的转换表,所以不会出现上面该问题