HCIP—ospf综合实验
首先还是要划分IP地址,题目给了172.16.0.0/16网段,结合第五个要求,我们划分的网段之后还要方便我们进行汇总,最佳的情况是一个区域汇总成一条,所以如何合理分配IP地址也是本题的一大重点。
在实际工程中,拿到172.16.0.0/16网段后,比较好的方法是首先基于使用的网络协议来进行划分
从拓扑图里可以得知,我们有一部分是ospf协议,还有一部分使用的是rip协议,所以我们可以首先把给定的网段一分为二,这样做的好处是,我们之后协议之间使用重发布互通的时候可以只import一个网段,以减少LSA更新量
不过在这个实验里,由于RIP区域很小,就把它看成是ospf的一个区域来进行划分即可
这里我们就不考虑广播域了,因为实在是太多了,而且后期要进行汇总
所以我们直接按照区域划分,每个区域给一个网段,然后区域内部再按照给定的网段划分
可以看出,总共有六个区域,所以我们可以将172.16.0.0/16网段的网络位增加三位,划分出8个子网,我们取用其中六个网段,剩下两个网段留作之后拓展的备用网段
我们将172.16.0.0/16一分为八,可以得到以下子网:
172.16.0.0/19 — area1
172.16.32.0/19 — area2
172.16.64.0/19 — area3
172.16.96.0/19 — area4
172.16.128.0/19 — area5
172.16.160.0/19 — rip
(以下两个网段留作备用)
172.16.192.0/19
172.16.224.0/19
之后我们来进行区域之间的划分,在真实的网络环境中,我们一般给用户网段的掩码长度就在24 25 26之间进行选择,因为当一个用户网段里面的主机数达到254的时候实际上已经很卡了,没有必要给很多IP地址,所以我们这里直接划分为/24的掩码长度,从/19到/24可以划分出32个子网
划好用户网段后,还需要划分骨干链路,骨干链路有两种,一种是p2p一种是MA
如果是p2p的骨干,那一个广播域就只需要两个IP地址我们直接划分为/30的IP地址即可,而如果是MA则不一样,结合题目的拓扑图来看,area1和area0的骨干链路都包含MA网络,不难看出我们可以划分/29的网段来满足这两个区域骨干链路的IP需求,而其他的p2p骨干链路我们都划分成/30的网段即可
基于以上逻辑,我们最终的IP地址规划是这个样子的:
172.16.0.0/19 — area0
172.16.0.0/24 — P2P的骨干
172.16.0.0/30
172.16.0.4/30
172.16.0.8/30
172.16.0.12/30
…
172.16.1.0/24 — MA的骨干
172.16.1.0/29
172.16.1.8/29
172.16.1.16/29
…
(以下网段划分给用户)
172.16.2.0/24
…
172.16.31.0/24
172.16.32.0/19 — area1
172.16.32.0/24 — P2P的骨干
172.16.32.0/30
172.16.32.4/30
172.16.32.8/30
…
172.16.33.0/24 — MA的骨干
172.16.33.0/29
172.16.33.8/29
172.16.33.16/29
…
(以下网段划分给用户)
172.16.34.0/24
…
172.16.63.0/24
(以下网段同理)
172.16.64.0/19 — area2
172.16.96.0/19 — area3
172.16.128.0/19 — area4
172.16.160.0/19 — rip
172.16.160.0/20
172.16.176.0/20
基于以上的划分原则,我们进行IP的配置
我们首先把area0的公网部分配通,还是老样子,R3和R4之间就采用34.0.0.0/24这种分法
给R3-R7分配好各自的公网IP后,再在R3/R5/R6/R7上分别创建一条指向R4的缺省,公网部分就做通了
记得检查一下
然后我们就可以开始考虑MGRE环境了,MGRE环境需要一个私网网段
根据我们上面划分的IP,我们给MGRE环境分配一个172.16.1.0/29网段供tunnel链路使用
这里我们就可以搭建MGRE环境了,以R3为中心,R3配置如下:
[r3]int Tunnel 0/0/0
[r3-Tunnel0/0/0]ip add 172.16.1.1 29
[r3-Tunnel0/0/0]tunnel-protocol gre p2mp
[r3-Tunnel0/0/0]source 34.0.0.1
[r3-Tunnel0/0/0]nhrp network-id 100
[r3-Tunnel0/0/0]nhrp entry multicast dynamic
然后在其他分支站点上也加入同一个nhrp域并且找中心注册即可,例如在R5上:
[r5]int Tunnel 0/0/0
[r5-Tunnel0/0/0]ip add 172.16.1.2 29
[r5-Tunnel0/0/0]tunnel-protocol gre p2mp
[r5-Tunnel0/0/0]source Serial 4/0/0
[r5-Tunnel0/0/0]nhrp network-id 100
[r5-Tunnel0/0/0]nhrp entry 172.16.1.1 34.0.0.1 register
R6和R7类似
配置完成之后把R5-R7模拟用户的环回接口也按照上面划分的IP地址进行配置
构建好MGRE环境后我们去R3上检查一下nhrp表:
可以看到R5-R7都已经来注册过了,MGRE就搭建成功了
这样一来area0的IP就配好了,我们基于划分好的IP地址顺势将其他区域都配置完成
配置完所有IP地址后,我们开始启用ospf和rip协议
在R1上:
[r1]ospf 1 router-id 1.1.1.1
[r1-ospf-1]area 1
[r1-ospf-1-area-0.0.0.1]network 172.16.0.0 0.0.255.255
我们直接将划分给区域的网段宣告出去就可以了
在ABR设备上,如R3:
[r3]ospf 1 router-id 3.3.3.3
[r3-ospf-1]area 1
[r3-ospf-1-area-0.0.0.1]network 172.16.32.0 0.0.7.255
[r3-ospf-1-area-0.0.0.1]area 0
[r3-ospf-1-area-0.0.0.0]network 172.16.1.1 0.0.0.0
特别的,在R11的rip进程中宣告,由于我们只能按照主类宣告,所以我们会将ospf进程里的路由也宣告进rip进程里,会有一点点问题,我们待会儿再看
这里注意,我们在R9上只开启area3并且宣告area3中的网段,稍后再进行处理
启动完所有ospf和rip进程后,我们这整个网络一定是存在问题的,我们来挨个排除
首先是MGRE环境,由于tunnel接口默认的接口网络类型是p2p,会导致无法建立多个邻居,因此我们应该修改接口网络类型为p2mp,虽然broadcast也可以建立多个邻居,但是有中心到站点的MGRE环境只有中心发送伪广播,broadcast相较于p2mp需要进行DR/BDR选举,而选举过程中会出现认知不统一的情况,因此使用不需要DR/BDR选举的p2mp
[r3-Tunnel0/0/0]ospf network-type p2mp
其他MGRE环境下的tunnel接口都要修改成p2mp保持一致
修改完成之后我们去查看R3的ospf邻居表:
可以看到都已经进入full状态
之后处理另一个问题,我们要在R12上进行重发布才能保证ospf网络中学习到来自rip的路由信息,在R12上:
[r12-ospf-1]import-route rip
这样一来ospf网络中就有rip的路由信息了
然后来处理area4的问题
area4属于不规则区域,因为R9是非法的ABR所以无法正常工作,我们需要一些手段让R9工作起来
有三种方法处理这种情况,可以使用tunnel隧道,也可以使用虚链路,也可以使用重发布
由于题目要求减少LSA更新量,而减少LSA更新量的一种手段就是特殊区域,而使用虚链路就无法划分特殊区域,因此首先排除这种方法,而tunnel隧道和重发布都可以做到减少LSA数量的效果,而tunnel隧道的方法问题比较多,因此我们选择重发布
我们在R9上做重发布之后,R9成为ASBR设备,area4可以看作变成了一个独立的ospf区域,我们为了进一步减少area4的更新量,可以只做单向重发布,在R10上写一条缺省指向R9,就不需要再学习其他LSA信息了。在R9上配置:
[r9]ospf 2 router-id 9.9.9.9
[r9-ospf-2]area 4
[r9-ospf-2-area-0.0.0.4]network 172.16.128.0 0.0.3.255
[r9]ospf 1
[r9-ospf-1]import-route ospf 2
这样我们去R5上查看,就会发现所有路由信息已经获取到了,R10我们之后再说,先来看第五条要求,也就是ospf的优化
减少LSA的更新量,两种办法,进行路由汇总和划分特殊区域
拿R3举例子,我们只要将非骨干区域的LSA汇总发给骨干区域即可
[r3-ospf-1-area-0.0.0.1]abr-summary 172.16.32.0 255.255.224.0
同理,在R6和R7上也做类似配置
然后我们做域外路由汇总,在ASBR设备上做
例如,在R12上:
[r12-ospf-1]asbr-summary 172.16.160.0 255.255.224.0
R9也算是一个ASBR设备,也要做类似配置
完成之后我们去R5上查看路由表:
可以看到路由表条目少了很多,但是有一条172.16.65.8/29的路由,这是因为我们一开始在rip中宣告的时候把该网段也宣告进rip里了,然后又从rip中导入进来了,但我们不急着解决,我们做好特殊区域之后该问题就会消失
对于area1,我们可以做成完全的末梢区域
配置特殊区域时,要告诉区域中所有的设备,所以我们R1-R3都要做
在R1上:
[r1]ospf
[r1-ospf-1]a 1
[r1-ospf-1-area-0.0.0.1]stub
R2和R3配置类似
这样area1就变成了一个普通的末梢区域,要进一步做成完全末梢区域就在R3上配置:
[r3-ospf-1-area-0.0.0.1]stub no-summary
这样area1就做成完全末梢区域了
而针对area2可以配置完全NSSA区域
[r11-ospf-1-area-0.0.0.2]nssa
[r6-ospf-1-area-0.0.0.2]nssa no-summary
针对area3,也可以配置成完全NSSA区域
配置与area2类似
配置完成后我们再看R5的路由表,可以发现原先那条RIP导入进来的路由没有了,因为导入路由的LSA不是5类而是7类LSA,这条LSA需要经过R6将7类转换成5类继续传递,而这个时候R6会进行校验,因为这条路由通过1类和2类LSA就可以学到,R6就不会再将这条7类LSA转换成5类发送。
至此,我们就只剩下一个遗留问题,就是R10的缺省
我们可以有两种办法,一种是我们可以直接在R10上写一条静态缺省指向R9,但如果area4的结构很复杂的话这样有点麻烦,因此我们采用另一种办法,我们让R9自动下发缺省给area4里的所有设备
[r9-ospf-2]default-route-advertise
这样一来整个内网就能通了
加快收敛实质上就是修改计时器
一般hello时间10秒没必要改短,在该实验中我们可以尝试将MGRE的tunnel接口p2mp类型的30秒改为10秒
[r3-Tunnel0/0/0]ospf timer hello 10
R5-R7类似
然后是保障更新安全,也就是做认证,同时也包括防环
只要做了汇总就一定要防环,因此在ABR和ASBR设备上都应有一条指向汇总网段的空接口,例如在R3上:
[r3]ip route-static 172.16.32.0 255.255.224.0 null 0
同理,R6/R7/R9/R12上都要做空接口
然后访问R4环回,需要做NAT地址转换,在area0的每个边界设备上都要做,例如在R3上:
[r3]acl 2000
[r3-acl-basic-2000]rule permit source 172.16.0.0 0.0.255.255
[r3-Serial4/0/0]nat outbound 2000
同理,R5-R7也要做类似的配置
做完之后就可以正常ping通R4的环回了
实验完成