双ISP接入,实现负载负载均衡相互备份和策略路由(SLA+PBR)
首先感谢JEFF及时为我解答,我把完整的实验内容发上来,方便大家参考学习,这个实验在实际工程中是非常常见的。为了保证园区或企业内部连接到Internet网络的高可用性,通常我们会使用双线接入(比如:电信,网通两个ISP提供的网络)。并部署相关的策略,在一条线路失效后,能快速切换到另外一条可用线路。而且在双线都正常使用时,实现负载均衡。根据目前来讲,进行策略路由方法大概有几下几种:一、根据源地址策略路由二、根据目的地址策略路由三、根据源端口策略路由四、根据目的端口策略路由在实际工作环境中,特别是网吧,一般采用两条光纤接入,一条接电信光纤,一条接网通光纤,如采用方法一进行策略路由,明显有几个不好的弊端,负载不均衡,有可能导致一条光纤负载大,一条负载小,还会导致访问网站(或游戏)的速度不理想,明明网游服务器在网通,可是数据包却从电信光纤出口出去,导致访问速度下降。方法三和四都有缺陷。只有方法二是工程中常用的方案,我们需要的是当访问电信网站时从电信光纤接口出去,当访问网通网站时从网通光纤接口出去,如果电信光纤接口出现问题,就从网通光纤出口出去,反之溢然,达到一个备份效果。先看拓扑图http://www.guojiaming.com/wp-content/uploads/2012/10/%E5%8F%8CWAN%E6%8B%93%E6%89%91%E5%9B%BE.jpg实验要求:一、内网1和内网2要访问电信网络时,走电信出口(S0/0口),实现策略路由,提高网速。二、内网1和内网2要访问网通网络时,走网通出口(S0/1口),实现策略路由,提高网速。三、当电信光纤出现问题时,内网1和内网2走网通出口,当电信光纤恢复正常时,走电信出口,以达到备份的目的。四、当网通光纤出现问题时,内网1和内网2走电信出口,当电信光纤恢复正常时,走网通出口,以达到备份的目的。
网络接口以及IP地址配置具体看拓扑图,Isp1路由器是用来模拟电信,环回口用来模拟网段,网段有:20.20.10.0 20.20.20.0 20.20.30.0共三个网段。
Isp2路由器是用来模拟网通,环回口用来模拟网段,网段有:220.220.1.0 220.220.2.0 220.220.3.0共三个网段。
下面开始具体配置。ISP1(模拟电信路由器)配置:hostname isp1interface Loopback0ip address 20.20.10.1 255.255.255.0!interface Loopback1ip address 20.20.20.1 255.255.255.0!interface Loopback2ip address 20.20.30.1 255.255.255.0!interface Serial0/0ip address 100.100.100.2 255.255.255.0serial restart-delay 0!interface Serial0/1ip address 60.0.0.1 255.255.255.0serial restart-delay 0router bgp 1bgp log-neighbor-changesnetwork 20.20.10.0 mask 255.255.255.0network 20.20.20.0 mask 255.255.255.0network 20.20.30.0 mask 255.255.255.0network 60.0.0.0 mask 255.255.255.0network 100.100.100.0 mask 255.255.255.0neighbor 60.0.0.2 remote-as 2注:两个ISP之间采用BGP路由,电信BGP自治系统号为1,环回口用来模拟电信的各个网段。
ISP2(模拟电信路由器)配置:hostname isp2interface Loopback0ip address 220.220.1.1 255.255.255.0!interface Loopback1ip address 220.220.2.1 255.255.255.0!interface Loopback2ip address 220.220.3.1 255.255.255.0!interface Serial0/0ip address 200.200.200.2 255.255.255.0serial restart-delay 0!interface Serial0/1ip address 60.0.0.2 255.255.255.0serial restart-delay 0router bgp 2bgp log-neighbor-changesnetwork 60.0.0.0 mask 255.255.255.0network 200.200.200.0network 220.220.1.0network 220.220.2.0network 220.220.3.0neighbor 60.0.0.1 remote-as 1
注:两个ISP之间采用BGP路由,网通BGP自治系统号为2,环回口用来模拟电信的各个网段。
Lan1(内网1)配置:hostname lan1interface Ethernet0/0ip address 192.168.1.2 255.255.255.0ip route 0.0.0.0 0.0.0.0 192.168.1.1
Lan2(内网2)配置:hostname lan1interface Ethernet0/0ip address 192.168.2.2 255.255.255.0ip route 0.0.0.0 0.0.0.0 192.168.2.1
网关路由器基本配置:hostname natinterface Serial0/0ip address 100.100.100.1 255.255.255.0注:连接电信接口interface Serial0/1ip address 200.200.200.1 255.255.255.0注:连接网通接口interface Ethernet1/0ip address 192.168.1.1 255.255.255.0注:连接内网1接口interface Ethernet1/1ip address 192.168.2.1 255.255.255.0注:连接内网2接口ip route 0.0.0.0 0.0.0.0 100.100.100.2ip route 0.0.0.0 0.0.0.0 200.200.200.2
下面是关键配置:ip access-list extended isp1permit ip any 20.20.10.0 0.0.0.255permit ip any 20.20.20.0 0.0.0.255permit ip any 20.20.30.0 0.0.0.255permit ip any 60.0.0.0 0.0.0.255permit ip any 100.100.100.0 0.0.0.255permit ip any 200.200.200.0 0.0.0.255注:名为ISP1的访问列表有两个作用:一、把去往电信方向的网段挑选出来,等下NAT会调用,去往电信方向NAT就会转换公网地址为100.100.100.1。二、策略路由时调用,去往电信方向,指出他的下一跳是电信出口。ip access-list extended isp2permit ip any 220.220.1.0 0.0.0.255permit ip any 220.220.2.0 0.0.0.255permit ip any 220.220.3.0 0.0.0.255permit ip any 60.0.0.0 0.0.0.255permit ip any 100.100.100.0 0.0.0.255permit ip any 200.200.200.0 0.0.0.255
注:名为ISP2的访问列表有两个作用:一、把去往网通方向的网段挑选出来,等下NAT会调用,去往电信方向NAT就会转换公网地址为200.200.200.1。二、策略路由时调用,去往网通方向,指出他的下一跳是网通出口。
route-map load permit 10match ip address isp1set interface Serial0/0set default interface Serial0/1
注:策略路由名为load,匹配去往电信网段的,设置出口为S0/0口(电信出口),如果S0/0 DOWN掉,设置默认出口为S0/1口(网通出口)。
route-map load permit 20match ip address isp2set interface Serial0/1set default interface Serial0/0
注:如果没有匹配10,则往下匹配20,匹配去往网通网段的地址,设置出口为S0/1口(网通出口),如果S0/1 DOWN掉,设置默认出口为S0/0口(电信出口)。
route-map nat1 permit 10match ip address isp1match interface Serial0/0
注:即要匹配去往电信的地址段,也要匹配出口为S0/0口(电信出口)。同时满足这两个条件,就给它做nat转换。
route-map nat11 permit 10match ip address isp1match interface Serial0/1
注:即要匹配去往电信的地址段,也要匹配出口为S0/1口(网通出口)。同时满足这两个条件,就给它做nat转换。这条语句主要是做备份用的,当s0/0口DOWN掉时,这里就只有s0/1口可以用。
route-map nat2 permit 10match ip address isp2match interface Serial0/1
注:即要匹配去往网通的地址段,也要匹配出口为S0/1口(网通出口)。同时满足这两个条件,就给它做nat转换。
route-map nat22 permit 10match ip address isp2match interface Serial0/0
注:即要匹配去往网通的地址段,也要匹配出口为S0/0口(电信出口)。同时满足这两个条件,就给它做nat转换。这条语句主要是做备份用的,当s0/1口DOWN掉时,这里就只有s0/0口可以用。
route-map isp3 permit 10match ip address 1match interface Serial0/0
注:如果要是访问即不是网通,也不是电信网段时, nat转换接口为s0/0(电信接口)。
route-map isp33 permit 10match ip address 1match interface Serial0/1
注:如果要是访问即不是网通,也不是电信网段时, nat转换接口为s0/1(网通接口),用来备份,默认是从电信出去,如果电信DOWN掉,这里只有从s0/1地址转换。
interface Serial0/0ip nat outside
interface Serial0/1ip nat outside
interface Ethernet1/0ip nat insideip policy route-map loadinterface Ethernet1/1ip nat insideip policy route-map load
注:在接口上应用策略路由。
ip nat inside source route-map nat1 interface Serial0/0 overload注:如果是去往电信网段,转换出口为s0/0口(电信接口),正常去往电信时就拿S0/0公网地址进行转换。
ip nat inside source route-map nat11 interface Serial0/1 overload注:如果是去往电信网段,转换出口为s0/1口(网通接口),作用就是当去往电信网段主接口s0/0 down掉,这时只有拿s0/1接口(网通接口)的公网地址进行转换。
ip nat inside source route-map nat2 interface Serial0/1 overload注:如果是去往网通网段,转换出口为s0/1口(网通接口), 正常去往网通时就拿S0/1公网地址进行转换。
ip nat inside source route-map nat22 interface Serial0/0 overload
注:如果是去往网通网段,转换出口为s0/0口(电信接口),作用就是当去往网通网段主接口s0/1 down掉,这时只有拿s0/0接口(电信接口)的公网地址进行转换。
ip nat inside source route-map isp3 interface Serial0/0 overload注:如果访问的网段即不是电信,也不是网通,这时默认拿S0/0电信接口的公网地址进行转换。
ip nat inside source route-map ips33 interface Serial0/1 overload注:如果访问的网段即不是电信,也不是网通,而且S0/0电信接口又DOWN掉时,只有拿S0/1网通接口的公网地址进行转换。
打开debug ip nat观看nat转换效果:先在内网上ping电信的公网地址,可以看到,可以连接。lan1#ping 20.20.20.1
Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 20.20.20.1, timeout is 2 seconds:!!!!!Success rate is 100 percent (5/5), round-trip min/avg/max = 12/40/64 mslan1#ping 20.20.10.1
Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 20.20.10.1, timeout is 2 seconds:!!!!!Success rate is 100 percent (5/5), round-trip min/avg/max = 8/24/44 mslan1#ping 20.20.30.1
Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 20.20.30.1, timeout is 2 seconds:!!!!!Success rate is 100 percent (5/5), round-trip min/avg/max = 8/23/44 m
在网关上看一下nat有没有正确转换:01:25:47: NAT: s=192.168.1.2->100.100.100.1, d=20.20.20.1 01:25:47: NAT*: s=20.20.20.1, d=100.100.100.1->192.168.1.2 01:25:47: NAT: s=192.168.1.2->100.100.100.1, d=20.20.20.1 01:25:47: NAT*: s=20.20.20.1, d=100.100.100.1->192.168.1.2 01:25:47: NAT: s=192.168.1.2->100.100.100.1, d=20.20.20.1 01:25:47: NAT*: s=20.20.20.1, d=100.100.100.1->192.168.1.2 01:25:47: NAT: s=192.168.1.2->100.100.100.1, d=20.20.20.1 01:25:47: NAT*: s=20.20.20.1, d=100.100.100.1->192.168.1.2 01:25:47: NAT: s=192.168.1.2->100.100.100.1, d=20.20.20.1 01:25:47: NAT*: s=20.20.20.1, d=100.100.100.1->192.168.1.2 nat#01:25:52: NAT: s=192.168.1.2->100.100.100.1, d=20.20.10.1 01:25:52: NAT*: s=20.20.10.1, d=100.100.100.1->192.168.1.2 01:25:52: NAT: s=192.168.1.2->100.100.100.1, d=20.20.10.1 01:25:52: NAT*: s=20.20.10.1, d=100.100.100.1->192.168.1.2 01:25:52: NAT: s=192.168.1.2->100.100.100.1, d=20.20.10.1 01:25:52: NAT*: s=20.20.10.1, d=100.100.100.1->192.168.1.2 01:25:52: NAT: s=192.168.1.2->100.100.100.1, d=20.20.10.1 01:25:52: NAT*: s=20.20.10.1, d=100.100.100.1->192.168.1.2 01:25:52: NAT: s=192.168.1.2->100.100.100.1, d=20.20.10.1 01:25:52: NAT*: s=20.20.10.1, d=100.100.100.1->192.168.1.2 nat#01:25:56: NAT: s=192.168.1.2->100.100.100.1, d=20.20.30.1 01:25:56: NAT*: s=20.20.30.1, d=100.100.100.1->192.168.1.2 01:25:56: NAT: s=192.168.1.2->100.100.100.1, d=20.20.30.1 01:25:56: NAT*: s=20.20.30.1, d=100.100.100.1->192.168.1.2 01:25:56: NAT: s=192.168.1.2->100.100.100.1, d=20.20.30.1 01:25:56: NAT*: s=20.20.30.1, d=100.100.100.1->192.168.1.2 01:25:56: NAT: s=192.168.1.2->100.100.100.1, d=20.20.30.1 01:25:56: NAT*: s=20.20.30.1, d=100.100.100.1->192.168.1.2 01:25:56: NAT: s=192.168.1.2->100.100.100.1, d=20.20.30.1 01:25:56: NAT*: s=20.20.30.1, d=100.100.100.1->192.168.1.2
可以看出,去往电信网段时,NAT拿100.100.100.1这个电信的公网地址来转换,符合我们要求。
下面在内网去ping网通的网段:lan1#ping 220.220.1.1
Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 220.220.1.1, timeout is 2 seconds:!!!!!Success rate is 100 percent (5/5), round-trip min/avg/max = 12/28/44 mslan1#ping 220.220.2.1
Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 220.220.2.1, timeout is 2 seconds:!!!!!Success rate is 100 percent (5/5), round-trip min/avg/max = 4/28/68 mslan1#ping 220.220.3.1
Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 220.220.3.1, timeout is 2 seconds:!!!!!Success rate is 100 percent (5/5), round-trip min/avg/max = 16/46/64 ms可以连通。
在网关看一下NAT转换情况:01:29:16: NAT: s=192.168.1.2->200.200.200.1, d=220.220.1.1 01:29:16: NAT*: s=220.220.1.1, d=200.200.200.1->192.168.1.2 01:29:16: NAT: s=192.168.1.2->200.200.200.1, d=220.220.1.1 01:29:16: NAT*: s=220.220.1.1, d=200.200.200.1->192.168.1.2 01:29:16: NAT: s=192.168.1.2->200.200.200.1, d=220.220.1.1 01:29:16: NAT*: s=220.220.1.1, d=200.200.200.1->192.168.1.2 01:29:16: NAT: s=192.168.1.2->200.200.200.1, d=220.220.1.1 01:29:16: NAT*: s=220.220.1.1, d=200.200.200.1->192.168.1.2 01:29:16: NAT: s=192.168.1.2->200.200.200.1, d=220.220.1.1 01:29:16: NAT*: s=220.220.1.1, d=200.200.200.1->192.168.1.2 nat#01:25:56: NAT*: s=20.20.30.1, d=100.100.100.1->192.168.1.2 01:29:19: NAT: s=192.168.1.2->200.200.200.1, d=220.220.2.1 01:29:19: NAT*: s=220.220.2.1, d=200.200.200.1->192.168.1.2 01:29:19: NAT: s=192.168.1.2->200.200.200.1, d=220.220.2.1 01:29:19: NAT*: s=220.220.2.1, d=200.200.200.1->192.168.1.2 01:29:19: NAT: s=192.168.1.2->200.200.200.1, d=220.220.2.1 01:29:19: NAT*: s=220.220.2.1, d=200.200.200.1->192.168.1.2 01:29:19: NAT: s=192.168.1.2->200.200.200.1, d=220.220.2.1 01:29:19: NAT*: s=220.220.2.1, d=200.200.200.1->192.168.1.2 01:29:19: NAT: s=192.168.1.2->200.200.200.1, d=220.220.2.1 01:29:19: NAT*: s=220.220.2.1, d=200.200.200.1->192.168.1.2 nat#01:25:56: NAT*: s=20.20.30.1, d=100.100.100.1->192.168.1.2 01:29:21: NAT: s=192.168.1.2->200.200.200.1, d=220.220.3.1 01:29:21: NAT*: s=220.220.3.1, d=200.200.200.1->192.168.1.2 01:29:22: NAT: s=192.168.1.2->200.200.200.1, d=220.220.3.1 01:29:22: NAT*: s=220.220.3.1, d=200.200.200.1->192.168.1.2 01:29:22: NAT: s=192.168.1.2->200.200.200.1, d=220.220.3.1 01:29:22: NAT*: s=220.220.3.1, d=200.200.200.1->192.168.1.2 01:29:22: NAT: s=192.168.1.2->200.200.200.1, d=220.220.3.1 01:29:22: NAT*: s=220.220.3.1, d=200.200.200.1->192.168.1.2 01:29:22: NAT: s=192.168.1.2->200.200.200.1, d=220.220.3.1 01:29:22: NAT*: s=220.220.3.1, d=200.200.200.1->192.168.1.2 可以看出,网关是拿网通接口的公网地址200.200.200.1拿进行nat转换的,符合我们的要求。
下面在内网上ping一个即不是电信也不是网通的网段:lan2#ping 6.6.6.6
Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 6.6.6.6, timeout is 2 seconds:.!U!.Success rate is 40 percent (2/5), round-trip min/avg/max = 16/38/60 ms6.6.6.6是我在isp1模拟的一个网段,没有在bgp发布,所以即不是电信网段,也不是网通网段,可以看出,是可以连通的,但是5个包通了两个,为什么呢?因为有两个包从网通接口出去了,导致不通,如果关掉网通接口,5个包可以全通。
在网关上看一下NAT转换情况:01:37:10: NAT: s=192.168.1.2->100.100.100.1, d=6.6.6.6 01:37:10: NAT*: s=6.6.6.6, d=100.100.100.1->192.168.1.2 01:37:10: NAT: s=192.168.1.2->100.100.100.1, d=6.6.6.6 01:37:10: NAT: s=200.200.200.2, d=100.100.100.1->192.168.1.2 01:37:10: NAT: s=192.168.1.2->100.100.100.1, d=6.6.6.6 01:37:10: NAT*: s=6.6.6.6, d=100.100.100.1->192.168.1.2 01:37:10: NAT: s=192.168.1.2->100.100.100.1, d=6.6.6.6 去往非电信网通网段时,拿电信的公网地址进行转换。
下面我们把网关的S0/0接口(电信接口)关闭。nat(config)#int s0/0nat(config-if)#shutdown
回到内网上在去ping电信网段,看一下情况会是怎样。lan1#ping 20.20.10.1
Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 20.20.10.1, timeout is 2 seconds:!!.!!Success rate is 80 percent (4/5), round-trip min/avg/max = 24/47/92 mslan1#ping 20.20.20.1
Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 20.20.20.1, timeout is 2 seconds:!!!!!Success rate is 100 percent (5/5), round-trip min/avg/max = 16/44/72 mslan1#ping 20.20.30.1
Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 20.20.30.1, timeout is 2 seconds:!!!!!Success rate is 100 percent (5/5), round-trip min/avg/max = 12/34/48 ms可以连通,没有受到网关S0/0关闭,产生影响。
在网关上看一下NAT转换情况:
nat#01:42:01: NAT: s=192.168.1.2->200.200.200.1, d=20.20.10.1 01:42:01: NAT*: s=20.20.10.1, d=200.200.200.1->192.168.1.2 01:42:01: NAT: s=192.168.1.2->200.200.200.1, d=20.20.10.1 01:42:01: NAT*: s=20.20.10.1, d=200.200.200.1->192.168.1.2 01:42:01: NAT: s=192.168.1.2->200.200.200.1, d=20.20.10.1 01:42:01: NAT*: s=20.20.10.1, d=200.200.200.1->192.168.1.2 01:42:01: NAT: s=192.168.1.2->200.200.200.1, d=20.20.10.1 01:42:01: NAT*: s=20.20.10.1, d=200.200.200.1->192.168.1.2 01:42:01: NAT: s=192.168.1.2->200.200.200.1, d=20.20.10.1 01:42:01: NAT*: s=20.20.10.1, d=200.200.200.1->192.168.1.2 nat#01:42:05: NAT: s=192.168.1.2->200.200.200.1, d=20.20.20.1 01:42:05: NAT*: s=20.20.20.1, d=200.200.200.1->192.168.1.2 01:42:05: NAT: s=192.168.1.2->200.200.200.1, d=20.20.20.1 01:42:05: NAT*: s=20.20.20.1, d=200.200.200.1->192.168.1.2 01:42:05: NAT: s=192.168.1.2->200.200.200.1, d=20.20.20.1 01:42:05: NAT*: s=20.20.20.1, d=200.200.200.1->192.168.1.2 01:42:05: NAT: s=192.168.1.2->200.200.200.1, d=20.20.20.1 01:42:05: NAT*: s=20.20.20.1, d=200.200.200.1->192.168.1.2 01:42:05: NAT: s=192.168.1.2->200.200.200.1, d=20.20.20.1 01:42:05: NAT*: s=20.20.20.1, d=200.200.200.1->192.168.1.2 nat#01:42:08: NAT: s=192.168.1.2->200.200.200.1, d=20.20.30.1 01:42:08: NAT*: s=20.20.30.1, d=200.200.200.1->192.168.1.2 01:42:08: NAT: s=192.168.1.2->200.200.200.1, d=20.20.30.1 01:42:08: NAT*: s=20.20.30.1, d=200.200.200.1->192.168.1.2 01:42:08: NAT: s=192.168.1.2->200.200.200.1, d=20.20.30.1 01:42:08: NAT*: s=20.20.30.1, d=200.200.200.1->192.168.1.2 01:42:08: NAT: s=192.168.1.2->200.200.200.1, d=20.20.30.1 01:42:08: NAT*: s=20.20.30.1, d=200.200.200.1->192.168.1.2 01:42:08: NAT: s=192.168.1.2->200.200.200.1, d=20.20.30.1 01:42:08: NAT*: s=20.20.30.1, d=200.200.200.1->192.168.1.2 可以看到,当去往电信网段时,S0/0口关闭后,这里会拿S0/1网通接口的公网IP200.200.200.1地址来进行NAT转换。下面回到网关上,把S0/0打开,再看一下转换情况:nat(config)#int s0/0nat(config-if)#no shutdown
01:46:36: NAT: s=192.168.1.2->100.100.100.1, d=20.20.10.1 01:46:36: NAT*: s=20.20.10.1, d=100.100.100.1->192.168.1.2 01:46:36: NAT: s=192.168.1.2->100.100.100.1, d=20.20.10.1 01:46:36: NAT*: s=20.20.10.1, d=100.100.100.1->192.168.1.2 01:46:36: NAT: s=192.168.1.2->100.100.100.1, d=20.20.10.1 01:46:36: NAT*: s=20.20.10.1, d=100.100.100.1->192.168.1.2 01:46:36: NAT: s=192.168.1.2->100.100.100.1, d=20.20.10.1 01:46:36: NAT*: s=20.20.10.1, d=100.100.100.1->192.168.1.2 01:46:36: NAT: s=192.168.1.2->100.100.100.1, d=20.20.10.1 01:46:36: NAT*: s=20.20.10.1, d=100.100.100.1->192.168.1.2 nat#01:46:38: NAT: s=192.168.1.2->100.100.100.1, d=20.20.20.1 01:46:38: NAT*: s=20.20.20.1, d=100.100.100.1->192.168.1.2 01:46:38: NAT: s=192.168.1.2->100.100.100.1, d=20.20.20.1 01:46:38: NAT*: s=20.20.20.1, d=100.100.100.1->192.168.1.2 01:46:39: NAT: s=192.168.1.2->100.100.100.1, d=20.20.20.1 01:46:39: NAT*: s=20.20.20.1, d=100.100.100.1->192.168.1.2 01:46:39: NAT: s=192.168.1.2->100.100.100.1, d=20.20.20.1 01:46:39: NAT*: s=20.20.20.1, d=100.100.100.1->192.168.1.2 01:46:39: NAT: s=192.168.1.2->100.100.100.1, d=20.20.20.1 01:46:39: NAT*: s=20.20.20.1, d=100.100.100.1->192.168.1.2 nat#01:46:41: NAT: s=192.168.1.2->100.100.100.1, d=20.20.30.1 01:46:41: NAT*: s=20.20.30.1, d=100.100.100.1->192.168.1.2 01:46:41: NAT: s=192.168.1.2->100.100.100.1, d=20.20.30.1 01:46:41: NAT*: s=20.20.30.1, d=100.100.100.1->192.168.1.2 01:46:41: NAT: s=192.168.1.2->100.100.100.1, d=20.20.30.1 01:46:41: NAT*: s=20.20.30.1, d=100.100.100.1->192.168.1.2 01:46:41: NAT: s=192.168.1.2->100.100.100.1, d=20.20.30.1 01:46:41: NAT*: s=20.20.30.1, d=100.100.100.1->192.168.1.2 01:46:41: NAT: s=192.168.1.2->100.100.100.1, d=20.20.30.1 01:46:41: NAT*: s=20.20.30.1, d=100.100.100.1->192.168.1.2 可以看出,当去往电信网段时,S0/0口打开后,又会拿S0/0电信接口的公网IP100.100.100.1地址来进行NAT转换。符合我们的要求。
现在在打开debug ip policy看一下策略路由的效果:01:49:00: IP: s=192.168.1.2 (Ethernet1/0), d=20.20.10.1, len 100, policy match01:49:00: IP: route map load, item 10, permit01:49:00: IP: s=192.168.1.2 (Ethernet1/0), d=20.20.10.1 (Serial0/0), len 100, policy routed01:49:00: IP: Ethernet1/0 to Serial0/0 100.100.100.201:49:00: IP: s=192.168.1.2 (Ethernet1/0), d=20.20.10.1, len 100, policy match01:49:00: IP: route map load, item 10, permit01:49:00: IP: s=192.168.1.2 (Ethernet1/0), d=20.20.10.1 (Serial0/0), len 100, policy routed01:49:00: IP: Ethernet1/0 to Serial0/0 100.100.100.201:49:00: IP: s=192.168.1.2 (Ethernet1/0), d=20.20.10.1, len 100, policy match01:49:00: IP: route map load, item 10, permit01:49:00: IP: s=192.168.1.2 (Ethernet1/0), d=20.20.10.1 (Serial0/0), len 100, policy routed01:49:00: IP: Ethernet1/0 to Serial0/0 100.100.100.201:49:00: IP: s=192.168.1.2 (Ethernet1/0), d=20.20.10.1, len 100, policy match01:49:00: IP: route map load, item 10, permit01:49:00: IP: s=192.168.1.2 (Ethernet1/0), d=20.nat#20.10.1 (Serial0/0), len 100, policy routed01:49:00: IP: Ethernet1/0 to Serial0/0 100.100.100.201:49:00: IP: s=192.168.1.2 (Ethernet1/0), d=20.20.10.1, len 100, policy match01:49:00: IP: route map load, item 10, permit01:49:00: IP: s=192.168.1.2 (Ethernet1/0), d=20.20.10.1 (Serial0/0), len 100, policy routed01:49:00: IP: Ethernet1/0 to Serial0/0 100.100.100.2
去往20.20.10.1电信网段,从E1/0发出,在S0/0接口出去。nat#01:49:07: IP: s=192.168.1.2 (Ethernet1/0), d=220.220.1.1, len 100, policy match01:49:07: IP: route map load, item 20, permit01:49:07: IP: s=192.168.1.2 (Ethernet1/0), d=220.220.1.1 (Serial0/1), len 100, policy routed01:49:07: IP: Ethernet1/0 to Serial0/1 200.200.200.201:49:07: IP: s=192.168.1.2 (Ethernet1/0), d=220.220.1.1, len 100, policy match01:49:07: IP: route map load, item 20, permit01:49:07: IP: s=192.168.1.2 (Ethernet1/0), d=220.220.1.1 (Serial0/1), len 100, policy routed01:49:07: IP: Ethernet1/0 to Serial0/1 200.200.200.201:49:07: IP: s=192.168.1.2 (Ethernet1/0), d=220.220.1.1, len 100, policy match01:49:07: IP: route map load, item 20, permit01:49:07: IP: s=192.168.1.2 (Ethernet1/0), d=220.220.1.1 (Serial0/1), len 100, policy routed01:49:07: IP: Ethernet1/0 to Serial0/1 200.200.200.201:49:07: IP: s=192.168.1.2 (Ethernet1/0), d=220.220.1.1, len 100, policy match01:49:07: IP: route map load, item 20, permit01:49:07: IP: s=192.168.1.2 (Ethernet1/0)nat#, d=220.220.1.1 (Serial0/1), len 100, policy routed01:49:07: IP: Ethernet1/0 to Serial0/1 200.200.200.201:49:07: IP: s=192.168.1.2 (Ethernet1/0), d=220.220.1.1, len 100, policy match01:49:07: IP: route map load, item 20, permit01:49:07: IP: s=192.168.1.2 (Ethernet1/0), d=220.220.1.1 (Serial0/1), len 100, policy routed01:49:07: IP: Ethernet1/0 to Serial0/1 200.200.200.2去往220.220.1.1网通网段,从E1/0发出,在S0/1接口出去。完全按照我们的设想来进行策略路由。
通过以上我们可以看出,我们已经实现本实验要求:1、内网1和内网2要访问电信网络时,走电信出口(S0/0口)。2、内网1和内网2要访问网通网络时,走网通出口(S0/1口)。3、当电信光纤出现问题时,内网1和内网2走网通出口,当电信光纤恢复正常时,走电信出口,以达到备份的目的。4、当网通光纤出现问题时,内网1和内网2走电信出口,当电信光纤恢复正常时,走网通出口,以达到备份的目的。
在做双ISP接入实验时,主要要理解nat和策略路由这两个过程,第一要解决公网地址转换时的问题,因为双ISP接入时有两个公网地址,默认情况下只会有一个公网地址生效,解决这个问题需要用到route-map,一般我们在做nat时,我们会拿源地址时行转换。比如:nat(config)#access-list 1 permit 192.168.1.0nat(config)#ip nat inside source list 1 interface e0/0 overload像这样做,会出现只有一个公网地址生效。所以,我们要采用扩展ACL来做,把去往电信或网通的所以网段列表挑选出来,如果是去往电信,就拿电信的公网IP转换。是去往网通,就拿网通的公网IP转换。我们需要做的是收集大量的网通电信网段地址表,网络上可以下载到。解决了nat地址转换问题后,还要解决一个路由的问题,nat只是转换地址,没有说数据怎样出去。要我们需要策略路由,用route-map强行指定去往电信的数据包走电信接口。去往网通的数据包走网通接口。例:route-map load permit 10match ip address isp1set interface Serial0/0set default interface Serial0/1set default interface Serial0/1这语句非常有用,如果S0/0 DOWN时,就可以走默认出口S0/1,从而实现路由不会中断。个中好处可以自己体会。
下面附NAT路由器完整配置:nat#sh runBuilding configuration…
Current configuration : 2658 bytes!version 12.2service timestamps debug uptimeservice timestamps log uptimeno service password-encryption!hostname nat!!ip subnet-zero!!!!!!interface Serial0/0ip address 100.100.100.1 255.255.255.0ip nat outsideno fair-queueserial restart-delay 0!interface Serial0/1ip address 200.200.200.1 255.255.255.0ip nat outsideserial restart-delay 0!interface Serial0/2no ip addressshutdownserial restart-delay 0!interface Serial0/3no ip addressshutdownserial restart-delay 0!interface Ethernet1/0ip address 192.168.1.1 255.255.255.0ip nat insideip policy route-map loadhalf-duplex!interface Ethernet1/1ip address 192.168.2.1 255.255.255.0ip nat insideip policy route-map loadhalf-duplex!interface Ethernet1/2no ip addressshutdownhalf-duplex!interface Ethernet1/3no ip addressshutdownhalf-duplex!ip nat inside source route-map ips33 interface Serial0/1 overloadip nat inside source route-map isp3 interface Serial0/0 overloadip nat inside source route-map nat1 interface Serial0/0 overloadip nat inside source route-map nat11 interface Serial0/1 overloadip nat inside source route-map nat2 interface Serial0/1 overloadip nat inside source route-map nat22 interface Serial0/0 overloadip classlessip route 0.0.0.0 0.0.0.0 100.100.100.2ip route 0.0.0.0 0.0.0.0 200.200.200.2ip http server!!ip access-list extended isp1permit ip any 20.20.10.0 0.0.0.255permit ip any 20.20.20.0 0.0.0.255permit ip any 20.20.30.0 0.0.0.255permit ip any 60.0.0.0 0.0.0.255permit ip any 100.100.100.0 0.0.0.255permit ip any 200.200.200.0 0.0.0.255ip access-list extended isp2permit ip any 220.220.1.0 0.0.0.255permit ip any 220.220.2.0 0.0.0.255permit ip any 220.220.3.0 0.0.0.255permit ip any 60.0.0.0 0.0.0.255permit ip any 100.100.100.0 0.0.0.255permit ip any 200.200.200.0 0.0.0.255access-list 1 permit anyroute-map load permit 10match ip address isp1set interface Serial0/0set default interface Serial0/1!route-map load permit 20match ip address isp2set interface Serial0/1set default interface Serial0/0!route-map nat2 permit 10match ip address isp2match interface Serial0/1!route-map nat1 permit 10match ip address isp1match interface Serial0/0!route-map isp3 permit 10match ip address 1match interface Serial0/0!route-map isp33 permit 10match ip address 1match interface Serial0/1!route-map nat11 permit 10match ip address isp1match interface Serial0/1!route-map nat22 permit 10match ip address isp2match interface Serial0/0!!line con 0exec-timeout 0 0logging synchronousline aux 0line vty 0 4!end
后期补充:个人发现个问题,上面的配置做负载是没问题的,但是有个问题,如果ISP1或ISP2上的接口down掉了还是不会切换,所以就要像配置HSRP一样有一个监测机制。现在带来解决办法 :通过track实现通过track来实现,因为track是通过ICMP协议来发现对方是否可达,如果不可达将会做出相应该的操作
相关配置:core(config)#
ip sla monitor 1 创建一个服务级别计划编号为1
type echo protocol ipIcmpEcho 100.100.100.2source-interface s1/0检查的类型为ICMP ECHO包,检查的地址为100.100.100.2 ,即从S1/0口对100.100.100.2 发ECHO包,看是否有应答
frequency 55秒钟发一次ECHO包,另外如果5秒钟没收到包的话就认为下一跳不可达了
ip sla monitor schedule 1 life forever start-time now 从现在就开始检查
ip sla monitor 2
type echo protocol ipIcmpEcho 200.200.200.2
frequency 5
ip sla monitor schedule 2 life forever start-time now
track 11 rtr 1 reachability创建跟踪组11,调用刚才创建的计划1,并且是验证是否可达
track 22 rtr 2 reachability
route-map load permit 10
match ip address isp1
set ip next-hop verify-availability 100.100.100.2 1 track 11 通过ping包验证100.100.100.2是否可达,如果可达下一跳为200.200.200.2
set ip next-hop verify-availability 200.200.200.2 track 22
set ip next-hop 100.100.100.2 200.200.200.2
route-map load permit 20
match ip address isp2
set ip next-hop verify-availability 100.100.100.2 1 track 11
set ip next-hop verify-availability 200.200.200.2 2 track 22
set ip next-hop 200.200.200.2 100.100.100.2
这样不管对方是否是开启CDP或者哪怕不是思科设备也能够自动实现冗余,因为是否可达不再是通过CDP来检查而是通过ICMP来检
最后放上GNS3的拓扑和配置文件,方便大家学习。 放上GNS3拓扑图和配置文件。
多谢分享,回头好好学习下~
虽然看不懂,但是看起来很厉害的样子~-lol- 哇,有够长啊。
谢谢你的分享哦。。 不错不错~~~ 相当精彩,非常不错
match ip address isp2
set ip next-hop verify-availability 100.100.100.2 1 track 11
set ip next-hop verify-availability 200.200.200.2 2 track 22
set ip next-hop 200.200.200.2 100.100.100.2
后面的命令是多余的
route-map load permit 10
match ip address isp1
set interface Serial0/0
set default interface Serial0/1
set default interface Serial0/1这语句非常有用,如果S0/0 DOWN时,就可以走默认出口S0/1,从而实现路由不会中断。个中好处可以自己体会。
这个有点不太明白,如果Serial0/0口down掉,路由表就只剩下Serial0/1一条默认了吧?
set default interface Serial0/1这个句不打也可以呀? 真实环境下如何知道网通和电信的地址段。
页:
[1]