文章目录
一、OSPF基本配置
①路由器支持OSPF多进程,可以根据业务类型划分不同的进程。进程号是本地概念,不影响与其它路由器之间的报文交换。因此,不同的路由器之间,即使进程号不同也可以进行报文交换。
②要确保每台网络设备有唯一标识的RID,否则会导致邻居不能正常建立、路由信息不正确的问题。
实验拓扑图:
思科
> ①router ospf 1 中的1 为进程号,可以随意指定
> ②RID是唯一标识一台网络设备,可以手动配置,也可以不用手动配置(若没有进行手动配置,则以最大的回环口作为RID,若没有回环口,则以最大的接口作为RID)
> ③0.0.0.255 为反掩码(是由正掩码通过减去255后得到的)
> 若需要更改RID,则需要退出到特权模式下,进行重置OSPF,见R8的配置
R2(config)#router ospf 1--启动OSPF进程,进入OSPF视图
R2(config-router)#router-id 2.2.2.2--指定RID
R2(config-router)#network 192.168.12.0 0.0.0.255 area 0--将网段通告进区域0
R2(config-router)#network 192.168.12.0 0.0.0.255 area 0--将网段通告进区域0
R8(config)#router ospf 1--启动OSPF进程,进入OSPF试图
R8(config-router)#router-id 88.88.88.88--RID将原先的8.8.8.8改为88.88.88.88
% OSPF: Reload or use "clear ip ospf process" command, for this to take effect--日志提示:如果需要更改RID,则需要退到特权模式下进行清除原先的RID
R8(config-router)#end
R8#
*Aug 17 18:12:40.872: %SYS-5-CONFIG_I: Configured from console by console
R8#clear ip ospf process
Reset ALL OSPF processes? [no]: y
R8(config)#do show run | se ospf--用来查看OSPF进程下的全部配置
router ospf 1
router-id 88.88.88.88
network 192.168.18.0 0.0.0.255 area 2
华为
[AR5]ospf 1 router-id 5.5.5.5--启动OSPF进程,进入OSPF试图下,并进行RID的设置
[AR5-ospf-1]area 1--进入到区域1中
[AR5-ospf-1-area-0.0.0.1]network 192.168.45.0 0.0.0.255--将网段进行通告
[AR5]ospf 1 router-id 5.5.5.5
[AR5-ospf-1]dis this--用来查看在该OSPF进程下的所有相关配置
ospf 1 router-id 5.5.5.5
area 0.0.0.1
network 192.168.45.0 0.0.0.255
华三
[R4]ospf 1 router-id 4.4.4.4--启动OSPF进程,进入OSPF试图下,并进行RID的设置
[R4-ospf-1]area 1--进入到区域1中
[R4-ospf-1-area-0.0.0.1]network 192.168.14.0 0.0.0.255--将网段进行通告
[R4-ospf-1-area-0.0.0.1]network 192.168.45.0 0.0.0.255
[R4]ospf 1 router-id 4.4.4.4
[R4-ospf-1]dis this--用来查看在该OSPF进程下的所有相关配置
ospf 1 router-id 4.4.4.4
area 0.0.0.1
network 192.168.14.0 0.0.0.255
network 192.168.45.0 0.0.0.255
二、OSPF路由聚合/路由汇总/汇总路由
注意:不能在接口下进行汇总
区域间–在ABR上进行汇总(ABR:骨干区域和非骨干区域之间的网络设备),可以根据路由表来看需要汇总的路由是否为区域间的,若为区域间则在ABR上进行汇总
思科:
R2(config-router)#area 1 range 10.1.0.0 255.255.0.0–中的area 1为需要准备汇总路由网段的区域(eg:area 1中的Loopback1 :10.1.1.1 区域1
Loopback2 :10.1.2.1 区域1
Loopback3 :10.1.3.1 区域1
所以area 1为该IP地址所存在的区域)
R2(config)#router ospf 1
R2(config-router)#area 1 range 10.1.0.0 255.255.0.0
华为华三:
[R7]ospf 1
[R7-ospf-1]ar 1
[R7-ospf-1-area-0.0.0.1]abr-summary 172.16.0.0 16
区域外–在ASBR上进行汇总(ASBR:骨干区域和外部其他路由协议之间的网络设备)
思科:
R5(config)#router ospf 1
R5(config-router)#summary-address 6.6.0.0 255.255.0.0
华为华三:
[R7]ospf 1
[R7-ospf-1]ar 1
[R7-ospf-1]asbr-summary 6.6.0.0 16
三、OSPF缺省路由/默认路由
分类:
①条件下发–设备需要存在默认路由
②强制下发–设备不需要存在默认路由
- 思科
条件下发默认路由:R3(config-router)#default-information originate
强制下发默认路由:R3(config-router)#default-information originate always
①R4:
R4(config)#ip route 0.0.0.0 0.0.0.0 192.168.34.3--默认路由,下一跳指向R3上的e0/1口的IP地址
②R3:
R3(config)#ip route 0.0.0.0 0.0.0.0 192.168.34.4--默认路由,下一跳指向R4上的e0/0口的IP地址
R3(config)#router ospf 1
R3(config-router)#default-information originate --条件下发
- 华为/华三
条件下发默认路由:[R3-ospf-1]default-route-advertise
强制下发默认路由:[R3-ospf-1]default-route-advertise always
①R4:
[R4]ip route-static 0.0.0.0 0.0.0.0 192.168.34.3
②R3:
[R3]ip route-static 0.0.0.0 0.0.0.0 192.168.34.4
[R3]ospf 1
[R3-ospf-1]default-route-advertise--条件下默认路由
四、解决区域不连续的问题
核心思想:骨干区域与非骨干区域相连,骨干区域与骨干区域相连
实验拓扑图:
①虚链路
- 配置:配置在连接两个不同区域上的相同设备
- 注意点:①特殊区域不能穿越虚链路 ②虚链路是骨干区域的延伸 ③不能穿越多个区域
- 目的:为了解决区域不连续的问题(骨干区域与骨干区域相连,非骨干区域要与骨干区域相连),通过路由表可以清楚看出
效果图的演示:
- 配置命令
思科
虚链路的配置命令
R2(config-router)# area 1 virtual-link 3.3.3.3–中的area 1 为需要配置虚链路的区域,后面的3.3.3.3 为对方的RID
全部配置:
R1:
R1(config)#router ospf 1
R1(config-router)# network 192.168.12.0 0.0.0.255 area 0
R2:
R2(config)#router ospf 1
R2(config-router)# network 192.168.12.0 0.0.0.255 area 0
R2(config-router)# network 192.168.23.0 0.0.0.255 area 1
R2(config-router)# area 1 virtual-link 3.3.3.3--虚链路的配置命令
R3:
R3(config)#router ospf 1
R3(config-router)#router-id 3.3.3.3
R3(config-router)#network 192.168.23.0 0.0.0.255 area 1
R3(config-router)#network 192.168.34.0 0.0.0.255 area 0
R3(config-router)#area 1 virtual-link 2.2.2.2--虚链路的配置命令
R4:
R4(config)#router ospf 1
R4(config-router)#router-id 4.4.4.4
R4(config-router)#network 192.168.34.0 0.0.0.255 area 0
华为
R1:
[R1]ospf 1 router-id 1.1.1.1
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255
R2:
[R2]ospf 1 router-id 2.2.2.2
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]area 1
[R2-ospf-1-area-0.0.0.1]network 192.168.23.0 0.0.0.255
[R2-ospf-1-area-0.0.0.1]vlink-peer 3.3.3.3--虚链路的配置命令
R3:
[R3]ospf 1 router-id 3.3.3.3
[R3-ospf-1]area 0
[R3-ospf-1-area-0.0.0.0]network 192.168.34.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]area 1
[R3-ospf-1-area-0.0.0.1]network 192.168.23.0 0.0.0.255
[R3-ospf-1-area-0.0.0.1]vlink-peer 2.2.2.2--虚链路的配置命令
R4:
[R4]ospf 1 router-id 4.4.4.4
[R4-ospf-1]area 0
[R4-ospf-1-area-0.0.0.0]network 192.168.34.0 0.0.0.255
华三
R1:
[R1]ospf 1 router-id 1.1.1.1
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255
R2:
[R2]ospf 1 router-id 2.2.2.2
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]area 1
[R2-ospf-1-area-0.0.0.1]network 192.168.23.0 0.0.0.255
[R2-ospf-1-area-0.0.0.1]vlink-peer 3.3.3.3--虚链路的配置命令
R3:
[R3]ospf 1 router-id 3.3.3.3
[R3-ospf-1]area 0
[R3-ospf-1-area-0.0.0.0]network 192.168.34.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]area 1
[R3-ospf-1-area-0.0.0.1]network 192.168.23.0 0.0.0.255
[R3-ospf-1-area-0.0.0.1]vlink-peer 2.2.2.2--虚链路的配置命令
R4:
[R4]ospf 1 router-id 4.4.4.4
[R4-ospf-1]area 0
[R4-ospf-1-area-0.0.0.0]network 192.168.34.0 0.0.0.255
②gre隧道(gre tunnel)
- 原理:设置一个tunnel口,将该tunnel口添加进骨干区域里(area 0)
- 前提:隧道源和目的可达
- 注意点:①隧道的开销很大,默认为1000 ②华为华三需要指定tunnel的模式为gre
- 配置命令
- 效果图:
思科
前面的配置跟虚链路的一模一样,只是把配置虚链路的命令改为gre隧道命令
R2:
R2(config)#int tunnel 1--设置一个tunnel口为1
R2(config-if)#ip add 192.168.52.2 255.255.255.0--配置IP地址,这一步你可以把它看成是接口IP地址的配置
R2(config-if)#tunnel destination 192.168.23.3--目的IP地址
R2(config-if)#tunnel source e0/1--源接口
R2(config-if)#ip ospf 1 area 0--将这个tunnel口加入到区域0里
R3:
R3(config)#int tunnel 1--设置一个tunnel口为1
R3(config-if)#tunnel source e0/0
R3(config-if)#tunnel destination 192.168.23.2
R3(config-if)#ip ospf 1 area 0
华为
R2:
[R2]interface Tunnel 1 mode gre --创建Tunnel接口,并进入Tunnel接口视图,配置Tunnel接口的隧道协议为gre
[R2-Tunnel1]source g2/0
[R2-Tunnel1]destination 192.168.23.3
[R2-Tunnel1]ip address 192.168.32.2 255.255.255.0
[R2-Tunnel1]ospf 1 area 0
R3:
[R3]int Tunnel 1 mode gre
[R3-Tunnel1]source g1/0
[R3-Tunnel1]destination 192.168.23.2
[R3-Tunnel1]ip address 192.168.32.3 24
[R3-Tunnel1]ospf 1 area 0--将这个tunnel口加入到区域0里
华三
R2:
[R2]interface Tunnel 1 mode gre --创建Tunnel接口,并进入Tunnel接口视图,配置Tunnel接口的隧道协议为gre
[R2-Tunnel1]source g2/0
[R2-Tunnel1]destination 192.168.23.3
[R2-Tunnel1]ip address 192.168.32.2 255.255.255.0
[R2-Tunnel1]ospf 1 area 0
R3:
[R3]int Tunnel 1 mode gre
[R3-Tunnel1]source g1/0
[R3-Tunnel1]destination 192.168.23.2
[R3-Tunnel1]ip address 192.168.32.3 24
[R3-Tunnel1]ospf 1 area 0--将这个tunnel口加入到区域0里
五、被动接口/静默接口
①思科
R2(config)#router ospf 1
R2(config-router)#passive-interface lo1
②华为华三
[R1]ospf 1
[R1-ospf-1]silent-interface lo1
六、OSPF与BFD联动
思科
①interval(发送) –Transmit interval between BFD packets ②范围:<50-9999> Milliseconds
②min_rx (接收) –Minimum receive interval capability ②范围:<50-9999> Milliseconds
③multiplier(检测次数) – Multiplier value used to compute holddown ②范围: <3~50> value used to multiply the interval
R3(config)#router ospf 1
R3(config-router)#bfd all-interfaces
R3(config)#int e0/0
R3(config-if)#bfd interval 100 min_rx 100 multiplier 3
华为华三:
[R2]int g2/0
[R2-GigabitEthernet2/0]ospf bfd enable --开启BFD特性,建立BFD会话
[R2-GigabitEthernet2/0]bfd min-receive-interval 100--从对端接收BFD报文的最小接收间隔为100
[R2-GigabitEthernet2/0]bfd min-transmit-interval 100--向对端发送BFD报文的最小发送间隔为100
[R2-GigabitEthernet2/0]bfd detect-multiplier 3--本地检测次数为3
- 查看:
思科:R3#show bfd neighbors
华为华三:[R2]display bfd session verbose
七、OSPF报文认证
报文认证需要两边都要认证,不然会报日志:
①明文认证
思科:
R1(config)#int e0/0
R1(config-if)#ip ospf authentication-key 123
R1(config-if)#ip ospf authentication
②MD5认证
思科:
R1(config)#int e0/0
R1(config-if)#ip ospf message-digest-key 1 md5 123--key ID为1,认证方式为MD5,密码为123
R1(config-if)#ip ospf authentication message-digest
③Keychain认证
思科:
R1(config)#key chain 1
R1(config-keychain)#key 1
R1(config-keychain-key)#key-string 123
④HMAC-SHA256认证
华为:
authentication-mode hmac-sha256 key-id key-id { plain plain-text | [ cipher ] cipher-text }
authentication-mode keychain keychain-name