这个星期看了张sir的EIGRP视频,决定把看到的所有知识点放入一个实验中。于是有了下面的topo,原始topo看于56cto,没有写出作者,自己删除了一些他的需求,添加了张sir视频中的需求

 

 

需求:按照如下拓扑图配置好接口地址和EIGRP 100,并关闭自动汇总
R1启用172.16.0.1/24,172.16.1.1/24,172.16.2.1/24,172.16.3.1/24;
R2启用2.2.2.2/24(外网)
R3启用192.168.0.1/24,192.168.1.1/24,192.168.2.1/24,192.168.3.1/24
R4启用4.4.4.4/24
R5启用5.5.5.5/24

1:在R4做DHCP服务,要求R1和R3的f0/0地址要自动获取

2:R2,R4,R5只能收到R1,R3的一条汇总路

3:R2的S1/1的带宽改为700K,修改R2的S1/0接口的hello-time为20S,R2的Lo不能收发任何EIGRP路由更新

4:必须确保R2的EIGRP在S1/1能使用到最少70K的带宽

5:为了安全起见,R1和R2之间不允许用组播建立邻居且启用EIGRP的MD5认证

6:R1和R3都发布通往回环的默认路由,R2也建立外网的默认路由0.0.0.0.这时候会有三条默认路由,只保留一条。

7:R5为EIGRP stub,只通告直连

8:要求从R2telnet到R5的5.5.5.5环回,登陆进去的时候却是登陆到了R4上

9:要求从R2到R4形成非等价负载均衡

首先,做初始配置:

因为每个都初始,太多,所有只初始R1,其余基本差不多,当然,如果你需要的话,下面会附所有配置步骤文件

R1:

Router>en
Router#conf t
Router(config)#hoStname R1 
R1(config)#no ip domain lookup
R1(config)#line console  0
R1(config-line)#logging synchronous
R1(config-line)#exec-timeout 0 0
R1(config-line)#exit   
R1(config)#int s1/1
R1(config-if)#ip address 12.1.1.2 255.255.255.252
R1(config-if)#no shut
R1(config-if)#int f0/0
R1(config-if)#ip address dhcp
R1(config-if)#no shut
R1(config-if)#int lo 0
R1(config-if)#ip address 172.16.0.1 255.255.255.0
R1(config-if)#ip address 172.16.1.1 255.255.255.0 secondary
R1(config-if)#ip address 172.16.2.1 255.255.255.0 secondary
R1(config-if)#ip address 172.16.3.1 255.255.255.0 secondary
R1(config-if)#exit
R1(config)#router eigrp 100
R1(config-router)#network 12.1.1.0 0.0.0.3
R1(config-router)#network 134.1.1.0 0.0.0.255
R1(config-router)#network 172.16.0.0
R1(config-router)#no auto-summary

R2~R5略

然后第一需求:

1:在R4做DHCP服务,要求R1和R3的f0/0地址要自动获取:

R4(config)#ip dhcp pool promisewell
R4(dhcp-config)#network 134.1.1.0 /24
R4(dhcp-config)#dns-server 202.202.202.202
R4(dhcp-config)#lease 1
R4(dhcp-config)#exit
R4(config)#ip dhcp excluded-address 134.1.1.4
R4(config-if)#exit

R2在刚刚EIGRP通时查看路由表

 

 

R5查看路由表:

 

2:R2,R4,R5只能收到R1,R3的一条汇总路

R1在两个接口做汇总
R1(config)#int s1/1
R1(config-if)#ip summary-address eigrp 100 172.16.0.1 255.255.252.0
R1(config-if)#int f0/0
R1(config-if)#ip summary-address eigrp 100 172.16.0.1 255.255.252.0
R1(config-if)#exit

R3在两个接口做汇总
R3(config)#int f0/0
R3(config-if)#ip summary-address eigrp 100 192.168.0.1 255.255.252.0  
R3(config-if)#int s1/0
R3(config-if)#ip summary-address eigrp 100 192.168.0.1 255.255.252.0
R3(config-if)#exit

这时的R2再次查看路由表

R1和R3的环回地址已经被汇总

同样,查看R5的路由表:

 

3:R2的S1/1的带宽改为700K,我们先看看s1/1的缺省带宽:

修改s1/1的BW的值
R2#conf t
R2(config)#int s1/1
R2(config-if)#bandwidth 700

再次查看s1/1的BW值

 

700 Kbit

这个时候查看R2的路由表,去R5的路径已经不负载,只有一条路由了:

 

修改R2的S1/0接口的hello-time为20S,R2的Lo不能收发任何EIGRP路由更新

修改Hello-time时间,但是,请注意,这里修改了Hello-time时间,
要把hold-time时间也要修改过来,保持3倍的关系
R2(config)#int s1/0
R2(config-if)#ip hello-interval eigrp 100 20
R2(config-if)#ip hold-time eigrp 100 60
R2(config)#router eigrp 100
R2(config-router)#passive-interface loopback 0

4:必须确保R2的EIGRP在S1/1能使用到最少70K的带宽

R2(config-if)#ip bandwidth-percent eigrp 100 10
R2(config-if)#exit

(默认,EIGRP协议本身的流量最多只占用接口的参考带宽的50%。)


5:为了安全,R1和R2之间不允许用组播建立邻居且启用EIGRP的MD5认证

先建立R2的:

建立钥匙串并应用到接口
R2(config)#key chain cisco-r2
R2(config-keychain)#key 1
R2(config-keychain-key)#key-string 123456
R2(config-keychain-key)#exit
R2(config-keychain)#exit
R2(config)#int s1/0
R2(config-if)#ip authentication key-chain eigrp 100 cisco-r2
R2(config-if)#ip authentication mode eigrp 100 md5
R2(config-if)#exit

这时候R1已经有了反应,邻居关系失败了:

 

R1也创建钥匙环:

R1创建钥匙串并应用与接口
R1(config)#key chain cisco-r1
R1(config-keychain)#key 1
R1(config-keychain-key)#key-string 123456
R1(config-keychain-key)#exit
R1(config-keychain)#exit
R1(config)#int s1/1
R1(config-if)#ip authentication key-chain eigrp 100 cisco-r1
R1(config-if)#ip authentication mode eigrp 100 md5

这个时候,R1与R2邻居关系恢复

 

R1和R2之间不用组播建立邻居
R2(config)#router eigrp 100
R2(config-router)#neighbor 12.1.1.2 s1/1(对方的地址)

R1(config)#router eigrp 100
R1(config-router)#neighbor 12.1.1.1 s1/1 (R2的地址)

 

6:R1和R3都发布通往回环的默认路由,R2也建立外网的默认路由0.0.0.0.这时候会有三条默认路由,只保留一条。

先做R3的默认路由

注:EIGRP发布默认路由只有一种方法.不像RIP有三种。

R3发布默认路由
R3(config)#ip default-network 192.168.0.0

R1也建立默认路由
R1(config)#ip default-network 172.16.0.0
但是showR2的路由后发现并没有出现。

 

重新汇总
R1(config)#int s1/1
R1(config-if)#no ip summary-address eigrp 100 172.16.0.1 255.255.252.0
R1(config-if)#ip summary-address eigrp 100 172.16.0.1 255.255.0.0
R1(config-if)#int f0/0
R1(config-if)#no ip summary-address eigrp 100 172.16.0.1 255.255.252.0
R1(config-if)#ip summary-address eigrp 100 172.16.0.1 255.255.0.0
再次查看R2的路由,已经出现。(注:因为default-network只能发布主类路由)

 

R2也建立一条通往外网默认路由                                   
R2(config)#int s1/1
R2(config-if)#ip summary-address eigrp 100 0.0.0.0 0.0.0.0
R2(config-if)#int s1/0
R2(config-if)#ip summary-address eigrp 100 0.0.0.0 0.0.0.0

然后R5show ip ro,竟然3个默认路由

 

这个肯定不是这个网络所要的结果,R5的路由器如果要上外网的2.2.2.2,能通吗?

 

不通,用张sir话讲,太失败了。。。

这个时候在R4上建一个访控
R4(config)#access-list 1 permit 0.0.0.0 0.0.0.0
R4(config)#router eigrp 100
R4(config-router)#default-information in 1

注意,这里建立访控后,需重置一下邻居关系

 

然后查看R5的路由表,并ping 2.2.2.2 测试

已通,并且已经只有一条默认路由,但还需要在R2上做下访控

R2(config)#access-list 1 permit 0.0.0.0 0.0.0.0
R2(config)#router eigrp 100
R2(config-router)#default-information in 1
R2(config-router)#do cle ip eig nei
查看R2路由,也只有一个默认路由了,R5就不用做了

7:R5为EIGRP stub,只通告直连

R5做stub
R5(config)#router eigrp 100
R5(config-router)#eigrp stub connected

注: stub connected (通告直连路由)
         stub summary (通告汇总路由)  在本地做的汇总路由才会传
         stub redistributed (通告重分布的路由)
         stub static (通告静态路由) 
         stub receive-only (只接收不通告)

8:要求从R2telnet到R5的5.5.5.5环回,登陆进去的时候却是登陆到了R4上

这个是用nat,跟EIGRP没关系

R4(config)#int s1/1
R4(config-if)#ip nat inside
R4(config-if)#int f0/0
R4(config-if)#ip nat outside
R4(config-if)#exit
R4(config)#ip nat inside source static 4.4.4.4 5.5.5.5
 

不要忘记打开R4的telnet,否则,nat做成功也没用。
R4(config)#line vty 0 4
R4(config-line)#password 123
测试 ……

 

9:最后,就是EIRGP特有的非等价负载均衡

R2到R5的路由表里虽然只有一条路径,但topo表呢

 

查看R2的topo表,配置variance值,具体可参见理论篇,当然,也可以给我留言
大致为: FD of FS route < FD of best route (Successor)*Varince
R2(config)#router eigrp 100
R2(config-router)#variance 2
R2(config-router)#end
再次查看路由表:

 

O(∩_∩)O~,已经出现

看不等价的比例关系

 

比例有47:80 700K的链路发47个包,1.544M的链路发80个包,用debug测试一下

R2(config)#access-list 100 permit icmp any any
R2#debug ip packet 100

然后ping 5.5.5.5 ping 127次,
在这里,要注意自己R2是否开启cef

负载均衡分为两种:(快速交换fast switching,和处理交换process switching)。

快速交换是开启了cef和ip route-cache       基于目的地的交换
处理交换是没有开cef和ip route-cache       基于数据包的交换。

所以,这里如果要测试,要关闭cef,否则debug不出效果。

最后,提一下EIGRP的一个命令:

EIGRP的有一个缺省命令为
R2(config)#router eigrp 100
R2(config-router)#traffic-share balanced 默认会做负载均衡

如果改为

R2(config-router)#traffic-share min across-interfaces
则会列出所有路径,但不做负载均衡

好了,我能想到的大概就那么多了,但我更想继续在这个实验里完善EIGRP的知识点,如果有朋友能想到的话,欢迎帮忙添加,下面连接,附上R1-R5的所有具体配置,以及GNS3的文件。当然,如果你有需要的话。

 http://down.51cto.com/data/152108