雏鹰部落

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2737|回复: 8

[讨论/求助] 双ISP接入,实现负载负载均衡相互备份和策略路由(SLA+PBR)

[复制链接]
发表于 2012-10-10 15:27:30 | 显示全部楼层 |阅读模式
首先感谢JEFF及时为我解答,我把完整的实验内容发上来,方便大家参考学习,这个实验在实际工程中是非常常见的。

为了保证园区或企业内部连接到Internet网络的高可用性,通常我们会使用双线接入(比如:电信,网通两个ISP提供的网络)。并部署相关的策略,在一条线路失效后,能快速切换到另外一条可用线路。而且在双线都正常使用时,实现负载均衡。根据目前来讲,进行策略路由方法大概有几下几种:

一、根据源地址策略路由

二、根据目的地址策略路由

三、根据源端口策略路由

四、根据目的端口策略路由

在实际工作环境中,特别是网吧,一般采用两条光纤接入,一条接电信光纤,一条接网通光纤,如采用方法一进行策略路由,明显有几个不好的弊端,负载不均衡,有可能导致一条光纤负载大,一条负载小,还会导致访问网站(或游戏)的速度不理想,明明网游服务器在网通,可是数据包却从电信光纤出口出去,导致访问速度下降。

方法三和四都有缺陷。只有方法二是工程中常用的方案,我们需要的是当访问电信网站时从电信光纤接口出去,当访问网通网站时从网通光纤接口出去,如果电信光纤接口出现问题,就从网通光纤出口出去,反之溢然,达到一个备份效果。

先看拓扑图

实验要求:

一、内网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 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 60.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 Serial0/0

ip address 100.100.100.1 255.255.255.0

注:连接电信接口

interface Serial0/1

ip address 200.200.200.1 255.255.255.0

注:连接网通接口

interface Ethernet1/0

ip address 192.168.1.1 255.255.255.0

注:连接内网1接口

interface Ethernet1/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。

二、策略路由时调用,去往网通方向,指出他的下一跳是网通出口。


route-map load permit 10

match ip address isp1

set interface Serial0/0

set default interface Serial0/1


注:策略路由名为load,匹配去往电信网段的,设置出口为S0/0口(电信出口),如果S0/0 DOWN掉,设置默认出口为S0/1口(网通出口)。


route-map load permit 20

match ip address isp2

set interface Serial0/1

set default interface Serial0/0


注:如果没有匹配10,则往下匹配20,匹配去往网通网段的地址,设置出口为S0/1口(网通出口),如果S0/1 DOWN掉,设置默认出口为S0/0口(电信出口)。


route-map nat1 permit 10

match ip address isp1

match interface Serial0/0


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


route-map nat11 permit 10

match ip address isp1

match interface Serial0/1


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


route-map nat2 permit 10

match ip address isp2

match interface Serial0/1


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


route-map nat22 permit 10

match ip address isp2

match interface Serial0/0


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



route-map isp3 permit 10

match ip address 1

match interface Serial0/0


注:如果要是访问即不是网通,也不是电信网段时, nat转换接口为s0/0(电信接口)。


route-map isp33 permit 10

match ip address 1

match interface Serial0/1


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


interface Serial0/0

ip nat outside


interface Serial0/1

ip nat outside


interface Ethernet1/0

ip nat inside

ip policy route-map load

interface Ethernet1/1

ip nat inside

ip 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 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]


可以看出,去往电信网段时,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 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转换的,符合我们的要求。


下面在内网上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 ms

6.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 [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]

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


下面我们把网关的S0/0接口(电信接口)关闭。

nat(config)#int s0/0

nat(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 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

可以连通,没有受到网关S0/0关闭,产生影响。


在网关上看一下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]

可以看到,当去往电信网段时,S0/0口关闭后,这里会拿S0/1网通接口的公网IP200.200.200.1地址来进行NAT转换。

下面回到网关上,把S0/0打开,再看一下转换情况:

nat(config)#int s0/0

nat(config-if)#no shutdown


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]

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

01:49:00: IP: route map load, item 10, permit

01:49:00: IP: s=192.168.1.2 (Ethernet1/0), d=20.20.10.1 (Serial0/0), len 100, policy routed

01:49:00: IP: Ethernet1/0 to Serial0/0 100.100.100.2

01:49:00: IP: s=192.168.1.2 (Ethernet1/0), d=20.20.10.1, len 100, policy match

01:49:00: IP: route map load, item 10, permit

01:49:00: IP: s=192.168.1.2 (Ethernet1/0), d=20.20.10.1 (Serial0/0), len 100, policy routed

01:49:00: IP: Ethernet1/0 to Serial0/0 100.100.100.2

01:49:00: IP: s=192.168.1.2 (Ethernet1/0), d=20.20.10.1, len 100, policy match

01:49:00: IP: route map load, item 10, permit

01:49:00: IP: s=192.168.1.2 (Ethernet1/0), d=20.20.10.1 (Serial0/0), len 100, policy routed

01:49:00: IP: Ethernet1/0 to Serial0/0 100.100.100.2

01:49:00: IP: s=192.168.1.2 (Ethernet1/0), d=20.20.10.1, len 100, policy match

01:49:00: IP: route map load, item 10, permit

01:49:00: IP: s=192.168.1.2 (Ethernet1/0), d=20.

nat#20.10.1 (Serial0/0), len 100, policy routed

01:49:00: IP: Ethernet1/0 to Serial0/0 100.100.100.2

01:49:00: IP: s=192.168.1.2 (Ethernet1/0), d=20.20.10.1, len 100, policy match

01:49:00: IP: route map load, item 10, permit

01:49:00: IP: s=192.168.1.2 (Ethernet1/0), d=20.20.10.1 (Serial0/0), len 100, policy routed

01: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 match

01:49:07: IP: route map load, item 20, permit

01:49:07: IP: s=192.168.1.2 (Ethernet1/0), d=220.220.1.1 (Serial0/1), len 100, policy routed

01:49:07: IP: Ethernet1/0 to Serial0/1 200.200.200.2

01:49:07: IP: s=192.168.1.2 (Ethernet1/0), d=220.220.1.1, len 100, policy match

01:49:07: IP: route map load, item 20, permit

01:49:07: IP: s=192.168.1.2 (Ethernet1/0), d=220.220.1.1 (Serial0/1), len 100, policy routed

01:49:07: IP: Ethernet1/0 to Serial0/1 200.200.200.2

01:49:07: IP: s=192.168.1.2 (Ethernet1/0), d=220.220.1.1, len 100, policy match

01:49:07: IP: route map load, item 20, permit

01:49:07: IP: s=192.168.1.2 (Ethernet1/0), d=220.220.1.1 (Serial0/1), len 100, policy routed

01:49:07: IP: Ethernet1/0 to Serial0/1 200.200.200.2

01:49:07: IP: s=192.168.1.2 (Ethernet1/0), d=220.220.1.1, len 100, policy match

01:49:07: IP: route map load, item 20, permit

01:49:07: IP: s=192.168.1.2 (Ethernet1/0)

nat#, d=220.220.1.1 (Serial0/1), len 100, policy routed

01:49:07: IP: Ethernet1/0 to Serial0/1 200.200.200.2

01:49:07: IP: s=192.168.1.2 (Ethernet1/0), d=220.220.1.1, len 100, policy match

01:49:07: IP: route map load, item 20, permit

01:49:07: IP: s=192.168.1.2 (Ethernet1/0), d=220.220.1.1 (Serial0/1), len 100, policy routed

01: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.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 : 2658 bytes

!

version 12.2

service timestamps debug uptime

service timestamps log uptime

no service password-encryption

!

hostname nat

!

!

ip subnet-zero

!

!

!

!

!

!

interface Serial0/0

ip address 100.100.100.1 255.255.255.0

ip nat outside

no fair-queue

serial restart-delay 0

!

interface Serial0/1

ip address 200.200.200.1 255.255.255.0

ip nat outside

serial restart-delay 0

!

interface Serial0/2

no ip address

shutdown

serial restart-delay 0

!

interface Serial0/3

no ip address

shutdown

serial restart-delay 0

!

interface Ethernet1/0

ip address 192.168.1.1 255.255.255.0

ip nat inside

ip policy route-map load

half-duplex

!

interface Ethernet1/1

ip address 192.168.2.1 255.255.255.0

ip nat inside

ip policy route-map load

half-duplex

!

interface Ethernet1/2

no ip address

shutdown

half-duplex

!

interface Ethernet1/3

no ip address

shutdown

half-duplex

!

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

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

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

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

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

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

ip classless

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 http server

!

!

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

access-list 1 permit any

route-map load permit 10

match ip address isp1

set interface Serial0/0

set default interface Serial0/1

!

route-map load permit 20

match ip address isp2

set interface Serial0/1

set default interface Serial0/0

!

route-map nat2 permit 10

match ip address isp2

match interface Serial0/1

!

route-map nat1 permit 10

match ip address isp1

match interface Serial0/0

!

route-map isp3 permit 10

match ip address 1

match interface Serial0/0

!

route-map isp33 permit 10

match ip address 1

match interface Serial0/1

!

route-map nat11 permit 10

match ip address isp1

match interface Serial0/1

!

route-map nat22 permit 10

match ip address isp2

match interface Serial0/0

!

!

line con 0

exec-timeout 0 0

logging synchronous

line aux 0

line 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.2  source-interface s1/0检查的类型为ICMP ECHO包,检查的地址为100.100.100.2 ,即从S1/0口对100.100.100.2 发ECHO包,看是否有应答
frequency 5  5秒钟发一次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的拓扑和配置文件,方便大家学习。

 楼主| 发表于 2012-10-10 15:29:09 | 显示全部楼层
放上GNS3拓扑图和配置文件。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
发表于 2012-10-10 15:31:57 | 显示全部楼层
多谢分享,回头好好学习下~
发表于 2012-10-10 15:49:04 | 显示全部楼层
虽然看不懂,但是看起来很厉害的样子~
发表于 2012-10-10 16:22:18 | 显示全部楼层
哇,有够长啊。
谢谢你的分享哦。。
发表于 2012-10-11 08:58:19 | 显示全部楼层
不错不错~~~
发表于 2012-10-11 23:33:15 | 显示全部楼层
相当精彩,非常不错

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

后面的命令是多余的

发表于 2012-11-23 10:45:19 | 显示全部楼层
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这个句不打也可以呀?
发表于 2013-8-1 11:47:44 | 显示全部楼层
真实环境下如何知道网通和电信的地址段。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|熊猫同学技术论坛|小黑屋| 网络工程师论坛 ( 沪ICP备09076391 )

GMT+8, 2024-5-20 15:47 , Processed in 0.079679 second(s), 19 queries , Gzip On.

快速回复 返回顶部 返回列表