Saturday, May 4, 2013

用route-map进行双ISP接入,完美实现负载负载均衡相互备份和策略路由(原创)


在本人上一篇文章用route-map进行双ISP接入,并实现负载负载均衡相互备份和策略路由里,其中有一点点不是非常完美的地方,当网关路由器接口出现问题可以正常切换,但是如果是ISP出现了问题,则会出现不能切换问题,要解决这个问题,我们需要利用思科ip sla工具才解决,ip sla简单工作原理就是利用某种协议测试对方网络设备的连通性,最常见是icmp协议,如果对方设备响应表示线路正常,路由生效,如果对方设备不响应表示线路不正常,路由失效。

为了保证园区或企业内部连接到Internet网络的高可用性,通常我们会使用双线接入(比如:电信,网通两个ISP提供的网络)。并部署相关的策略,在一条线路失效后,能快速切换到另外一条可用线路。而且在双线都正常使用时,实现负载均衡。根据目前来讲,进行策略路由方法大概有几下几种:
一、根据源地址策略路由
二、根据目的地址策略路由
三、根据源端口策略路由
四、根据目的端口策略路由
在实际工作环境中,特别是网吧,一般采用两条光纤接入,一条接电信光纤,一条接网通光纤,如采用方法一进行策略路由,明显有几个不好的弊端,负载不均衡,有可能导致一条光纤负载大,一条负载小,还会导致访问网站(或游戏)的速度不理想,明明网游服务器在网通,可是数据包却从电信光纤出口出去,导致访问速度下降。
方法三和四都有缺陷。只有方法二是工程中常用的方案,我们需要的是当访问电信网站时从电信光纤接口出去,当访问网通网站时从网通光纤接口出去,如果电信光纤接口出现问题,就从网通光纤出口出去,反之溢然,达到一个备份效果。



实验要求:
一、内网1和内网2要访问电信网络时,走电信出口(S1/0口),实现策略路由,提高网速。
二、内网1和内网2要访问网通网络时,走网通出口(S1/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 isp1

interface Loopback0

ip address 20.20.10.1 255.255.255.0

!

interface Loopback1

ip address 20.20.20.1 255.255.255.0

!         

interface Loopback2

ip address 20.20.30.1 255.255.255.0

!

interface Serial0/0

ip address 100.100.100.2 255.255.255.0

serial restart-delay 0

!

interface Serial0/1

ip address 60.0.0.1 255.255.255.0

serial restart-delay 0

router bgp 1

bgp log-neighbor-changes

network 20.20.10.0 mask 255.255.255.0

network 20.20.20.0 mask 255.255.255.0

network 20.20.30.0 mask 255.255.255.0

network 60.0.0.0 mask 255.255.255.0

network 100.100.100.0 mask 255.255.255.0

neighbor 60.0.0.2 remote-as 2

注:两个ISP之间采用BGP路由,电信BGP自治系统号为1,环回口用来模拟电信的各个网段。



ISP2(模拟电信路由器)配置:
hostname isp2

interface Loopback0

ip address 220.220.1.1 255.255.255.0

!

interface Loopback1

ip address 220.220.2.1 255.255.255.0

!         

interface Loopback2

ip address 220.220.3.1 255.255.255.0

!

interface Serial0/0

ip address 200.200.200.2 255.255.255.0

serial restart-delay 0

!

interface Serial0/1

ip address 60.0.0.2 255.255.255.0

serial restart-delay 0 

router bgp 2

bgp log-neighbor-changes

network 64.0.0.0 mask 255.255.255.0

network 200.200.200.0

network 220.220.1.0

network 220.220.2.0

network 220.220.3.0

neighbor 60.0.0.1 remote-as 1




注:两个ISP之间采用BGP路由,网通BGP自治系统号为2,环回口用来模拟电信的各个网段。



Lan1(内网1)配置:
hostname lan1

interface Ethernet0/0

ip address 192.168.1.2 255.255.255.0

ip route 0.0.0.0 0.0.0.0 192.168.1.1




Lan2(内网2)配置:
hostname lan1

interface Ethernet0/0

ip address 192.168.2.2 255.255.255.0

ip route 0.0.0.0 0.0.0.0 192.168.2.1




网关路由器基本配置:
hostname nat

interface Serial1/0

ip address 100.100.100.1 255.255.255.0

注:连接电信接口
interface Serial1/1

ip address 200.200.200.1 255.255.255.0

注:连接网通接口
interface Ethernet2/0

ip address 192.168.1.1 255.255.255.0

注:连接内网1接口
interface Ethernet2/1

ip address 192.168.2.1 255.255.255.0

注:连接内网2接口
ip route 0.0.0.0 0.0.0.0 100.100.100.2

ip route 0.0.0.0 0.0.0.0 200.200.200.2




下面是关键配置:
ip access-list extended isp1

permit ip any 20.20.10.0 0.0.0.255

permit ip any 20.20.20.0 0.0.0.255

permit ip any 20.20.30.0 0.0.0.255

permit ip any 60.0.0.0 0.0.0.255

permit ip any 100.100.100.0 0.0.0.255

permit ip any 200.200.200.0 0.0.0.255

注:名为ISP1的访问列表有两个作用:
一、把去往电信方向的网段挑选出来,等下NAT会调用,去往电信方向NAT就会转换公网地址为100.100.100.1
二、策略路由时调用,去往电信方向,指出他的下一跳是电信出口。
ip access-list extended isp2

permit ip any 220.220.1.0 0.0.0.255

permit ip any 220.220.2.0 0.0.0.255

permit ip any 220.220.3.0 0.0.0.255

permit ip any 60.0.0.0 0.0.0.255

permit ip any 100.100.100.0 0.0.0.255

permit ip any 200.200.200.0 0.0.0.255




注:名为ISP2的访问列表有两个作用:
一、把去往网通方向的网段挑选出来,等下NAT会调用,去往电信方向NAT就会转换公网地址为200.200.200.1
二、策略路由时调用,去往网通方向,指出他的下一跳是网通出口。

Ip sla配置部分,ip sla主要用来判断去往电信或网通的线路有没有出现问题,ip sla会每隔秒钟去ping一下网关地址,如果发现ping不通,则判断该线路有问题,数据包就会另外一条线路出去,达到一种自动切换的功能。
ip sla 1

icmp-echo 100.100.100.2 source-ip 100.100.100.1

注:用网关路由器S1/0所在接口(电信接口)IP地址去ping其电信网关IP地址

frequency 5

注:ping的时间间隔为5秒钟一次。
ip sla schedule 1 life forever start-time now
注:计划调度时间为从现在开始的每一天。
ip sla 2

icmp-echo 200.200.200.2 source-ip 200.200.200.1

注:用网关路由器S1/1所在接口(网通接口)IP地址去ping其网通网关IP地址

frequency 5

注:ping的时间间隔为5秒钟一次。
ip sla schedule 2 life forever start-time now
注:计划调度时间为从现在开始的每一天。
track 1 rtr 1 reachability
注:追踪去往电信线路的可达性
track 2 rtr 2 reachability
注:追踪去往网通线路的可达性
route-map load permit 10

match ip address isp1

set ip next-hop verify-availability 100.100.100.2 1 track 1

set ip next-hop verify-availability 200.200.200.2 2 track 2
注:策略路由名为load,track 1 匹配去往电信网段的,设置下一跳为电信网关并追踪其可达性,如果可达,这条语句生效,不可达,则不生效,并执行下一语句。
Track 2设置下一跳为网通网关并追踪其可达性,如果可达,这条语句生效,不可达,则不生效,并执行下一语句。注意编号的顺号。
route-map load permit 20

match ip address isp2

set ip next-hop verify-availability 200.200.200.2 1 track 2

set ip next-hop verify-availability 100.100.100.2 2 track 1
注: track 2 匹配去往网通网段的,设置下一跳为网通网关并追踪其可达性,如果可达,这条语句生效,不可达,则不生效,并执行下一语句。
Track 1设置下一跳为电信网关并追踪其可达性,如果可达,这条语句生效,不可达,则不生效,并执行下一语句。


route-map load permit 30

set ip next-hop verify-availability 100.100.100.2 1 track 1

set ip next-hop verify-availability 200.200.200.2 2 track 2 
注:这条语句可以不要,主要意思就是去往非电信和网通的数据包优先从电信接口出去,如果线路有问题,就从网通接口出去。



route-map nat1 permit 10

match ip address isp1

match interface Serial1/0




注:即要匹配去往电信的地址段,也要匹配出口为S1/0口(电信出口)。同时满足这两个条件,就给它做nat转换。



route-map nat11 permit 10

match ip address isp1

match interface Serial1/1




注:即要匹配去往电信的地址段,也要匹配出口为S1/1口(网通出口)。同时满足这两个条件,就给它做nat转换。这条语句主要是做备份用的,当s1/0DOWN掉时,这里就只有s1/1口可以用。



route-map nat2 permit 10

match ip address isp2

match interface Serial1/1




注:即要匹配去往网通的地址段,也要匹配出口为S1/1口(网通出口)。同时满足这两个条件,就给它做nat转换。



route-map nat22 permit 10

match ip address isp2

match interface Serial1/0




注:即要匹配去往网通的地址段,也要匹配出口为S1/0口(电信出口)。同时满足这两个条件,就给它做nat转换。这条语句主要是做备份用的,当s1/1DOWN掉时,这里就只有s1/0口可以用。






route-map isp3 permit 10

match ip address 1

match interface Serial1/0




注:如果要是访问即不是网通,也不是电信网段时, nat转换接口为s1/0(电信接口)。主语句,该语句可以不要。



route-map isp33 permit 10

match ip address 1

match interface Serial1/1




注:如果要是访问即不是网通,也不是电信网段时, nat转换接口为s1/1(网通接口),用来备份,默认是从电信出去,如果电信DOWN掉,这里只有从s1/1地址转换。该语句可以不要。



interface Serial1/0

ip nat outside




interface Serial1/1

ip nat outside




interface Ethernet2/0

ip nat inside

ip policy route-map load

interface Ethernet2/1

ip nat inside

ip policy route-map load




注:在接口上应用策略路由。



ip nat inside source route-map nat1 interface Serial1/0 overload

注:如果是去往电信网段,转换出口为s1/0口(电信接口),正常去往电信时就拿S1/0公网地址进行转换。



ip nat inside source route-map nat11 interface Serial1/1 overload

注:如果是去往电信网段,转换出口为s1/1口(网通接口),作用就是当去往电信网段主接口s1/0 down掉,这时只有拿s1/1接口(网通接口)的公网地址进行转换。



ip nat inside source route-map nat2 interface Serial1/1 overload

注:如果是去往网通网段,转换出口为s1/1口(网通接口)正常去往网通时就拿S0/1公网地址进行转换。



ip nat inside source route-map nat22 interface Serial1/0 overload




注:如果是去往网通网段,转换出口为s1/0口(电信接口),作用就是当去往网通网段主接口s1/1 down掉,这时只有拿s1/0接口(电信接口)的公网地址进行转换。



ip nat inside source route-map isp3 interface Serial1/0 overload

注:如果访问的网段即不是电信,也不是网通,这时默认拿S1/0电信接口的公网地址进行转换。该语句可以不要。



ip nat inside source route-map ips33 interface Serial1/1 overload

注:如果访问的网段即不是电信,也不是网通,而且S1/0电信接口又DOWN掉时,只有拿S1/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 ms

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 100 percent (5/5), round-trip min/avg/max = 8/24/44 ms

lan1#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 [309]

01:25:47: NAT*: s=20.20.20.1, d=100.100.100.1->192.168.1.2 [309]

01:25:47: NAT: s=192.168.1.2->100.100.100.1, d=20.20.20.1 [310]

01:25:47: NAT*: s=20.20.20.1, d=100.100.100.1->192.168.1.2 [310]

01:25:47: NAT: s=192.168.1.2->100.100.100.1, d=20.20.20.1 [311]

01:25:47: NAT*: s=20.20.20.1, d=100.100.100.1->192.168.1.2 [311]

01:25:47: NAT: s=192.168.1.2->100.100.100.1, d=20.20.20.1 [312]

01:25:47: NAT*: s=20.20.20.1, d=100.100.100.1->192.168.1.2 [312]

01:25:47: NAT: s=192.168.1.2->100.100.100.1, d=20.20.20.1 [313]

01:25:47: NAT*: s=20.20.20.1, d=100.100.100.1->192.168.1.2 [313]

nat#

01:25:52: NAT: s=192.168.1.2->100.100.100.1, d=20.20.10.1 [314]

01:25:52: NAT*: s=20.20.10.1, d=100.100.100.1->192.168.1.2 [314]

01:25:52: NAT: s=192.168.1.2->100.100.100.1, d=20.20.10.1 [315]

01:25:52: NAT*: s=20.20.10.1, d=100.100.100.1->192.168.1.2 [315]

01:25:52: NAT: s=192.168.1.2->100.100.100.1, d=20.20.10.1 [316]

01:25:52: NAT*: s=20.20.10.1, d=100.100.100.1->192.168.1.2 [316]

01:25:52: NAT: s=192.168.1.2->100.100.100.1, d=20.20.10.1 [317]

01:25:52: NAT*: s=20.20.10.1, d=100.100.100.1->192.168.1.2 [317]

01:25:52: NAT: s=192.168.1.2->100.100.100.1, d=20.20.10.1 [318]

01:25:52: NAT*: s=20.20.10.1, d=100.100.100.1->192.168.1.2 [318]

nat#

01:25:56: NAT: s=192.168.1.2->100.100.100.1, d=20.20.30.1 [319]

01:25:56: NAT*: s=20.20.30.1, d=100.100.100.1->192.168.1.2 [319]

01:25:56: NAT: s=192.168.1.2->100.100.100.1, d=20.20.30.1 [320]

01:25:56: NAT*: s=20.20.30.1, d=100.100.100.1->192.168.1.2 [320]

01:25:56: NAT: s=192.168.1.2->100.100.100.1, d=20.20.30.1 [321]

01:25:56: NAT*: s=20.20.30.1, d=100.100.100.1->192.168.1.2 [321]

01:25:56: NAT: s=192.168.1.2->100.100.100.1, d=20.20.30.1 [322]

01:25:56: NAT*: s=20.20.30.1, d=100.100.100.1->192.168.1.2 [322]

01:25:56: NAT: s=192.168.1.2->100.100.100.1, d=20.20.30.1 [323]

01:25:56: NAT*: s=20.20.30.1, d=100.100.100.1->192.168.1.2 [323]




可以看出,去往电信网段时,NAT100.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 ms

lan1#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 ms

lan1#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 [324]

01:29:16: NAT*: s=220.220.1.1, d=200.200.200.1->192.168.1.2 [324]

01:29:16: NAT: s=192.168.1.2->200.200.200.1, d=220.220.1.1 [325]

01:29:16: NAT*: s=220.220.1.1, d=200.200.200.1->192.168.1.2 [325]

01:29:16: NAT: s=192.168.1.2->200.200.200.1, d=220.220.1.1 [326]

01:29:16: NAT*: s=220.220.1.1, d=200.200.200.1->192.168.1.2 [326]

01:29:16: NAT: s=192.168.1.2->200.200.200.1, d=220.220.1.1 [327]

01:29:16: NAT*: s=220.220.1.1, d=200.200.200.1->192.168.1.2 [327]

01:29:16: NAT: s=192.168.1.2->200.200.200.1, d=220.220.1.1 [328]

01:29:16: NAT*: s=220.220.1.1, d=200.200.200.1->192.168.1.2 [328]

nat#01:25:56: NAT*: s=20.20.30.1, d=100.100.100.1->192.168.1.2 [323]

01:29:19: NAT: s=192.168.1.2->200.200.200.1, d=220.220.2.1 [329]

01:29:19: NAT*: s=220.220.2.1, d=200.200.200.1->192.168.1.2 [329]

01:29:19: NAT: s=192.168.1.2->200.200.200.1, d=220.220.2.1 [330]

01:29:19: NAT*: s=220.220.2.1, d=200.200.200.1->192.168.1.2 [330]

01:29:19: NAT: s=192.168.1.2->200.200.200.1, d=220.220.2.1 [331]

01:29:19: NAT*: s=220.220.2.1, d=200.200.200.1->192.168.1.2 [331]

01:29:19: NAT: s=192.168.1.2->200.200.200.1, d=220.220.2.1 [332]

01:29:19: NAT*: s=220.220.2.1, d=200.200.200.1->192.168.1.2 [332]

01:29:19: NAT: s=192.168.1.2->200.200.200.1, d=220.220.2.1 [333]

01:29:19: NAT*: s=220.220.2.1, d=200.200.200.1->192.168.1.2 [333]

nat#01:25:56: NAT*: s=20.20.30.1, d=100.100.100.1->192.168.1.2 [323]

01:29:21: NAT: s=192.168.1.2->200.200.200.1, d=220.220.3.1 [334]

01:29:21: NAT*: s=220.220.3.1, d=200.200.200.1->192.168.1.2 [334]

01:29:22: NAT: s=192.168.1.2->200.200.200.1, d=220.220.3.1 [335]

01:29:22: NAT*: s=220.220.3.1, d=200.200.200.1->192.168.1.2 [335]

01:29:22: NAT: s=192.168.1.2->200.200.200.1, d=220.220.3.1 [336]

01:29:22: NAT*: s=220.220.3.1, d=200.200.200.1->192.168.1.2 [336]

01:29:22: NAT: s=192.168.1.2->200.200.200.1, d=220.220.3.1 [337]

01:29:22: NAT*: s=220.220.3.1, d=200.200.200.1->192.168.1.2 [337]

01:29:22: NAT: s=192.168.1.2->200.200.200.1, d=220.220.3.1 [338]

01:29:22: NAT*: s=220.220.3.1, d=200.200.200.1->192.168.1.2 [338]

可以看出,网关是拿网通接口的公网地址200.200.200.1拿进行nat转换的,符合我们的要求。






在网关上看一下NAT转换情况:
01:37:10: NAT: s=192.168.1.2->100.100.100.1, d=6.6.6.6 [354]

01:37:10: NAT*: s=6.6.6.6, d=100.100.100.1->192.168.1.2 [354]

01:37:10: NAT: s=192.168.1.2->100.100.100.1, d=6.6.6.6 [355]

01:37:10: NAT: s=200.200.200.2, d=100.100.100.1->192.168.1.2 [339]

01:37:10: NAT: s=192.168.1.2->100.100.100.1, d=6.6.6.6 [356]

01:37:10: NAT*: s=6.6.6.6, d=100.100.100.1->192.168.1.2 [356]

01:37:10: NAT: s=192.168.1.2->100.100.100.1, d=6.6.6.6 [357]

去往非电信网通网段时,拿电信的公网地址进行转换。



下面我们把isp1路由器的S0/0接口关闭。这里通往电信的线路将不可达。
Isp1(config)#int s0/0

Isp1(config-if)#shutdown



回到NAT路由器上PING电信网关:
nat#ping 100.100.100.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 100.100.100.2, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
发现不通,因为isp1把S0/0口DOWN掉了
回到内网上在去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 ms

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 = 16/44/72 ms

lan1#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

可以连通,因为数据包从网关的S1/1接口出去了,电信线路不通,没有对内网产生影响。



在网关上看一下NAT转换情况:



nat#

01:42:01: NAT: s=192.168.1.2->200.200.200.1, d=20.20.10.1 [374]

01:42:01: NAT*: s=20.20.10.1, d=200.200.200.1->192.168.1.2 [374]

01:42:01: NAT: s=192.168.1.2->200.200.200.1, d=20.20.10.1 [375]

01:42:01: NAT*: s=20.20.10.1, d=200.200.200.1->192.168.1.2 [375]

01:42:01: NAT: s=192.168.1.2->200.200.200.1, d=20.20.10.1 [376]

01:42:01: NAT*: s=20.20.10.1, d=200.200.200.1->192.168.1.2 [376]

01:42:01: NAT: s=192.168.1.2->200.200.200.1, d=20.20.10.1 [377]

01:42:01: NAT*: s=20.20.10.1, d=200.200.200.1->192.168.1.2 [377]

01:42:01: NAT: s=192.168.1.2->200.200.200.1, d=20.20.10.1 [378]

01:42:01: NAT*: s=20.20.10.1, d=200.200.200.1->192.168.1.2 [378]

nat#

01:42:05: NAT: s=192.168.1.2->200.200.200.1, d=20.20.20.1 [379]

01:42:05: NAT*: s=20.20.20.1, d=200.200.200.1->192.168.1.2 [379]

01:42:05: NAT: s=192.168.1.2->200.200.200.1, d=20.20.20.1 [380]

01:42:05: NAT*: s=20.20.20.1, d=200.200.200.1->192.168.1.2 [380]

01:42:05: NAT: s=192.168.1.2->200.200.200.1, d=20.20.20.1 [381]

01:42:05: NAT*: s=20.20.20.1, d=200.200.200.1->192.168.1.2 [381]

01:42:05: NAT: s=192.168.1.2->200.200.200.1, d=20.20.20.1 [382]

01:42:05: NAT*: s=20.20.20.1, d=200.200.200.1->192.168.1.2 [382]

01:42:05: NAT: s=192.168.1.2->200.200.200.1, d=20.20.20.1 [383]

01:42:05: NAT*: s=20.20.20.1, d=200.200.200.1->192.168.1.2 [383]

nat#

01:42:08: NAT: s=192.168.1.2->200.200.200.1, d=20.20.30.1 [384]

01:42:08: NAT*: s=20.20.30.1, d=200.200.200.1->192.168.1.2 [384]

01:42:08: NAT: s=192.168.1.2->200.200.200.1, d=20.20.30.1 [385]

01:42:08: NAT*: s=20.20.30.1, d=200.200.200.1->192.168.1.2 [385]

01:42:08: NAT: s=192.168.1.2->200.200.200.1, d=20.20.30.1 [386]

01:42:08: NAT*: s=20.20.30.1, d=200.200.200.1->192.168.1.2 [386]

01:42:08: NAT: s=192.168.1.2->200.200.200.1, d=20.20.30.1 [387]

01:42:08: NAT*: s=20.20.30.1, d=200.200.200.1->192.168.1.2 [387]

01:42:08: NAT: s=192.168.1.2->200.200.200.1, d=20.20.30.1 [388]

01:42:08: NAT*: s=20.20.30.1, d=200.200.200.1->192.168.1.2 [388]

可以看到,当去往电信网段不通时,这里会拿S1/1网通接口的公网IP200.200.200.1地址来进行NAT转换。
下面回到isp1路由器,把S0/0打开
Isp1(config)#int s0/0

Isp1(config-if)#no shutdown


在网关路由器看一下NAT转换情况



01:46:36: NAT: s=192.168.1.2->100.100.100.1, d=20.20.10.1 [409]

01:46:36: NAT*: s=20.20.10.1, d=100.100.100.1->192.168.1.2 [409]

01:46:36: NAT: s=192.168.1.2->100.100.100.1, d=20.20.10.1 [410]

01:46:36: NAT*: s=20.20.10.1, d=100.100.100.1->192.168.1.2 [410]

01:46:36: NAT: s=192.168.1.2->100.100.100.1, d=20.20.10.1 [411]

01:46:36: NAT*: s=20.20.10.1, d=100.100.100.1->192.168.1.2 [411]

01:46:36: NAT: s=192.168.1.2->100.100.100.1, d=20.20.10.1 [412]

01:46:36: NAT*: s=20.20.10.1, d=100.100.100.1->192.168.1.2 [412]

01:46:36: NAT: s=192.168.1.2->100.100.100.1, d=20.20.10.1 [413]

01:46:36: NAT*: s=20.20.10.1, d=100.100.100.1->192.168.1.2 [413]

nat#

01:46:38: NAT: s=192.168.1.2->100.100.100.1, d=20.20.20.1 [414]

01:46:38: NAT*: s=20.20.20.1, d=100.100.100.1->192.168.1.2 [414]

01:46:38: NAT: s=192.168.1.2->100.100.100.1, d=20.20.20.1 [415]

01:46:38: NAT*: s=20.20.20.1, d=100.100.100.1->192.168.1.2 [415]

01:46:39: NAT: s=192.168.1.2->100.100.100.1, d=20.20.20.1 [416]

01:46:39: NAT*: s=20.20.20.1, d=100.100.100.1->192.168.1.2 [416]

01:46:39: NAT: s=192.168.1.2->100.100.100.1, d=20.20.20.1 [417]

01:46:39: NAT*: s=20.20.20.1, d=100.100.100.1->192.168.1.2 [417]

01:46:39: NAT: s=192.168.1.2->100.100.100.1, d=20.20.20.1 [418]

01:46:39: NAT*: s=20.20.20.1, d=100.100.100.1->192.168.1.2 [418]

nat#

01:46:41: NAT: s=192.168.1.2->100.100.100.1, d=20.20.30.1 [419]

01:46:41: NAT*: s=20.20.30.1, d=100.100.100.1->192.168.1.2 [419]

01:46:41: NAT: s=192.168.1.2->100.100.100.1, d=20.20.30.1 [420]

01:46:41: NAT*: s=20.20.30.1, d=100.100.100.1->192.168.1.2 [420]

01:46:41: NAT: s=192.168.1.2->100.100.100.1, d=20.20.30.1 [421]

01:46:41: NAT*: s=20.20.30.1, d=100.100.100.1->192.168.1.2 [421]

01:46:41: NAT: s=192.168.1.2->100.100.100.1, d=20.20.30.1 [422]

01:46:41: NAT*: s=20.20.30.1, d=100.100.100.1->192.168.1.2 [422]

01:46:41: NAT: s=192.168.1.2->100.100.100.1, d=20.20.30.1 [423]

01:46:41: NAT*: s=20.20.30.1, d=100.100.100.1->192.168.1.2 [423]

可以看出,当去往电信网段正常时,isp1路由器S0/0口打开后,网关路由器又会拿S1/0电信接口的公网IP100.100.100.1地址来进行NAT转换。符合我们的要求。







通过以上我们可以看出,我们已经实现本实验要求:
1、内网1和内网2要访问电信网络时,走电信出口(S1/0口)。
2、内网1和内网2要访问网通网络时,走网通出口(S1/1口)。
3、当电信光纤出现问题时,内网1和内网2走网通出口,当电信光纤恢复正常时,走电信出口,以达到备份的目的。
4、当网通光纤出现问题时,内网1和内网2走电信出口,当电信光纤恢复正常时,走网通出口,以达到备份的目的。



在做双ISP接入实验时,主要要理解nat和策略路由这两个过程,第一要解决公网地址转换时的问题,因为双ISP接入时有两个公网地址,默认情况下只会有一个公网地址生效,解决这个问题需要用到route-map,一般我们在做nat时,我们会拿源地址时行转换。比如:
nat(config)#access-list 1 permit 192.168.1.0

nat(config)#ip nat inside source list 1 interface e0/0 overload

像这样做,会出现只有一个公网地址生效。所以,我们要采用扩展ACL来做,把去往电信或网通的所以网段列表挑选出来,如果是去往电信,就拿电信的公网IP转换。是去往网通,就拿网通的公网IP转换。我们需要做的是收集大量的网通电信网段地址表,网络上可以下载到。
解决了nat地址转换问题后,还要解决一个路由的问题,nat只是转换地址,没有说数据怎样出去。要我们需要策略路由,用route-map强行指定去往电信的数据包走电信接口。去往网通的数据包走网通接口。
例:
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,从而实现路由不会中断。个中好处可以自己体会。

NAT路由器全配置:
nat#sh run
Building configuration...

Current configuration : 3531 bytes
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname nat
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
ip cef
!
!
!
!
no ip domain lookup
!
multilink bundle-name authenticated
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
track 1 rtr 1 reachability
!
track 2 rtr 2 reachability

!
!
!
!
!
interface FastEthernet0/0

no ip address


shutdown


duplex half

!
interface Serial1/0

ip address 100.100.100.1 255.255.255.0


ip nat outside


ip virtual-reassembly


serial restart-delay 0

!
interface Serial1/1

ip address 200.200.200.1 255.255.255.0


ip nat outside


ip virtual-reassembly


serial restart-delay 0

!
interface Serial1/2

no ip address


shutdown


serial restart-delay 0

!
interface Serial1/3

no ip address


shutdown


serial restart-delay 0

!
interface Ethernet2/0

ip address 192.168.1.1 255.255.255.0


ip nat inside


ip virtual-reassembly


ip policy route-map load


duplex half

!
interface Ethernet2/1

ip address 192.168.2.1 255.255.255.0


ip nat inside


ip virtual-reassembly


ip policy route-map load


duplex half

!
interface Ethernet2/2

no ip address


shutdown


duplex half

!
interface Ethernet2/3

no ip address


shutdown


duplex half

!
ip route 0.0.0.0 0.0.0.0 100.100.100.2
ip route 0.0.0.0 0.0.0.0 200.200.200.2
no ip http server
no ip http secure-server
!
!
ip nat inside source route-map ips33 interface Serial1/1 overload
ip nat inside source route-map isp3 interface Serial1/0 overload
ip nat inside source route-map nat1 interface Serial1/0 overload
ip nat inside source route-map nat11 interface Serial1/1 overload
ip nat inside source route-map nat2 interface Serial1/1 overload
ip nat inside source route-map nat22 interface Serial1/0 overload
!
ip access-list extended isp1

permit ip any 20.20.10.0 0.0.0.255


permit ip any 20.20.20.0 0.0.0.255


permit ip any 20.20.30.0 0.0.0.255


permit ip any 60.0.0.0 0.0.0.255


permit ip any 100.100.100.0 0.0.0.255


permit ip any 200.200.200.0 0.0.0.255

ip access-list extended isp2

permit ip any 220.220.1.0 0.0.0.255


permit ip any 220.220.2.0 0.0.0.255


permit ip any 220.220.3.0 0.0.0.255


permit ip any 60.0.0.0 0.0.0.255


permit ip any 100.100.100.0 0.0.0.255


permit ip any 200.200.200.0 0.0.0.255

!
ip sla 1

icmp-echo 100.100.100.2 source-ip 100.100.100.1


frequency 5

ip sla schedule 1 life forever start-time now
ip sla 2

icmp-echo 200.200.200.2 source-ip 200.200.200.1


frequency 5

ip sla schedule 2 life forever start-time now
logging alarm informational
!
!
route-map load permit 10

match ip address isp1


set ip next-hop verify-availability 100.100.100.2 1 track 1


set ip next-hop verify-availability 200.200.200.2 2 track 2

!
route-map load permit 20

match ip address isp2


set ip next-hop verify-availability 200.200.200.2 1 track 2


set ip next-hop verify-availability 100.100.100.2 2 track 1

!
route-map load permit 30

set ip next-hop verify-availability 100.100.100.2 1 track 1


set ip next-hop verify-availability 200.200.200.2 2 track 2

!
route-map nat2 permit 10

match ip address isp2


match interface Serial1/1

!
route-map nat1 permit 10

match ip address isp1


match interface Serial1/0

!
route-map isp3 permit 10

match ip address 1

!
route-map nat11 permit 10

match ip address isp1


match interface Serial1/1

!
route-map nat22 permit 10

match ip address isp2


match interface Serial1/0

!
!
!
!
control-plane
!
!
!
!
!
!
gatekeeper

shutdown

!
!
line con 0

exec-timeout 0 0


logging synchronous


stopbits 1

line aux 0

stopbits 1

line vty 0 4
!
!
end

No comments: