diff --git "a/27 \345\274\240\350\257\255\345\253\243/20250421-\350\267\257\347\224\261\345\231\250OSPF\345\212\250\346\200\201\350\267\257\347\224\261\351\205\215\347\275\256.md" "b/27 \345\274\240\350\257\255\345\253\243/20250421-\350\267\257\347\224\261\345\231\250OSPF\345\212\250\346\200\201\350\267\257\347\224\261\351\205\215\347\275\256.md" new file mode 100644 index 0000000000000000000000000000000000000000..4021e0aa8f62efabbfe59fdc4aabc69eef5424ea --- /dev/null +++ "b/27 \345\274\240\350\257\255\345\253\243/20250421-\350\267\257\347\224\261\345\231\250OSPF\345\212\250\346\200\201\350\267\257\347\224\261\351\205\215\347\275\256.md" @@ -0,0 +1,292 @@ +# 路由器 OSPF 动态路由 + +## 作用 + +OSPF 是一种基于链路状态的内部网关协议,用于在大型企业网络或互联网服务提供商网络中实现动态路由。OSPF 特别适用于大型企业网络或 ISP 网络,因为它能够有效处理大量的路由信息,并提供灵活的路由策略。OSPF 可以在复杂的网络拓扑中实现高效的路由计算,同时支持分层和分区,使得网络管理更加灵活。 + +## 实验 + +拓扑图: + +![202405141322353](https://oss.isiou.cn/PicGo/202405141322353.png) + +```bash +RT1#show ip interface brief //查看端口的IP配置情况 +``` + + + +步骤: + +1. 配置二层交换机使其与路由相连的端口为 trunk 模式 +2. 配置三层交换的接口使其为 access 模式,并配置 SVI +3. 配置 SVI 地址与掩码 +4. 设置 ospf 并配置广播网段 +5. 配置剩余路由器的网口与 ospf + +> 要点:注意在配置 ospf 时,需要广播的网段有哪些 + +```shell +# Switch3560 配置 +Switch>en +Switch#conf t +Switch(config)#vlan 2 +Switch(config-vlan)#vlan 3 +Switch(config-vlan)#exit +Switch(config)#int f0/1 +Switch(config-if)#switchport mode access +Switch(config-if)#switchport access vlan 2 +Switch(config-if)#exit +Switch(config)#int f0/2 +Switch(config-if)#switchport mode access +Switch(config-if)#switchport access vlan 3 +Switch(config-if)#exit +Switch(config)#ip routing # 启用路由功能 +Switch(config)#interface vlan 2 +Switch(config-if)#ip address 10.10.253.1 255.255.255.0 # 配置 SVI +Switch(config-if)#exit +Switch(config)#interface vlan 3 +Switch(config-if)#ip address 192.168.10.1 255.255.255.0 +Switch(config-if)#exit + +# 以下为OSPF核心配置 +Switch(config)#router ospf 1 # 指定 OSPF 进程号为 1 +Switch(config-router)#network 192.168.10.0 0.0.0.255 area 0 # 0.0.0.255 是通配符掩码 +Switch(config-router)#network 10.10.253.0 0.0.0.255 area 0 + +# Router0 配置 +Router>en +Router#conf t +Router(config)#int f1/0 +Router(config-if)#ip address 192.168.20.1 255.255.255.0 +Router(config-if)#no shutdown +Router(config-if)#exit +Router(config)#int f0/0 +Router(config-if)#no shutdown +Router(config-if)#ip address 10.10.253.2 255.255.255.0 +Router(config-if)#exit +Router(config)#int serial 2/0 +Router(config-if)#ip address 10.10.254.1 255.255.255.0 +Router(config-if)#clock rate 64000 +Router(config-if)#no shutdown +Router(config-if)#exit +# 以下为OSPF核心配置 +Router(config)#router ospf 1 +Router(config-router)#network 192.168.20.0 0.0.0.255 area 0 +Router(config-router)#network 10.10.253.0 0.0.0.255 area 0 +Router(config-router)#network 10.10.254.0 0.0.0.255 area 0 + +# Router1 配置 +Router>en +Router#conf t +Router(config)#int f0/0 +Router(config-if)#no shutdown +Router(config-if)#ip address 192.168.30.1 255.255.255.0 +Router(config-if)#exit +Router(config)#int serial 2/0 +Router(config-if)#no shutdown +Router(config-if)#ip address 10.10.254.2 255.255.255.0 +Router(config-if)#exit +# 以下为OSPF核心配置 +Router(config)#router ospf 1 +Router(config-router)#network 192.168.30.0 0.0.0.255 area 0 +Router(config-router)#network 10.10.254.0 0.0.0.255 area 0 +``` + + + +## 技术原理: + +- 路由器通过路由选择协议建立了一个正确、稳定的路由表后,每当收到IP分组时,会将其沿着一条从源结点到达目的结点的最佳路径进行转发,大致过程如下: + + 1. 首先检查数据分组头中的目的IP地址,并计算出目的网络 + 2. 若表中给出了到达目的网络的下一跳路由器的IP地址,则按给出的路径将该IP分组 + 3. 当下一跳路由器接收到该IP分组后,同样进行类似处理并转发,最终该IP分 + 4. 若目的网络是与路由器的端口直连的,则直接将IP分组转发到路 + 5. 若在路由表中既没有下一跳路由地址,也没有目的端口,则将IP分组 + 6. 若没有设置默认路由或在默认路由中仍没有该目的网络的路由信息,则直接将该IP分组丢弃。 + +- 开放式最短路径优先协议(Open Shortest Path First,即OSPF),是目前网络中应用最广泛的路由协议之一,通过向全网扩散本设备的链路状态信息,使网络中每台设备最终同步一个具有全网链路状态的数据库,然后采用 SPF 算法,以自身为根,计算到达其他网络的最短路径,最终形成全网路由信息。具有以下特点: + + - 采取分层路由的设计,可划分区域,支持大型互联网环境; + - 允许多开发商的设备集成(开放标准); + - 支持可变长掩码(VLSM)和无类别域间路由(CIDR); + - 没有限制路由的最大跳数; + - 内含3个彼此独立的表:①用于跟踪直连的邻居路由器(邻居关系数据库);②用于确定整个网络的拓扑结构(拓扑数据库);③用作路由选择表; + - 路由更新采用组播报文; + +- OSPF基本配置包括:启用并运行OSPF进程,在该进程下配置路由器所属的区域、区域范围和区域内参与OSPF路由的网络地址。 + + - OSPF的配置比RIP要复杂得多,除了基本配置外,OSPF有许多复杂的可选项配置,如配置引入外部路由时默认Cost值、Tag值等;OSPF认证方式;指定邻居路由器;设置被动接口;路由过滤等等。 + +- OSPF区域:由一组相邻的网络和路由器组成,在同一区域内的所有路由器共享一个区域ID。区域ID是指定给特定的路由接口上,路由器上可拥有多个区域ID,而区域0是必不可少的主干区域,同一区域中的所有路由器拥有相同的拓扑表。 + + - 与OSPF进程ID的区别:OSPF进程ID对一系列的OSPF配置命令进行分组,是一个只具有本地意义的值(起始值为1),因此不同的OSPF路由器无须使用相同的进程ID来完成通信。可同时运行多个OSPF进程,用于拓扑数据库的备份。 + +- 不同于RIP配置,命令network的参数由网络地址和通配符掩码组成,该组合用于标识OSPF操作的接口。其中通配符掩码用于与源或目标地址一起来确定匹配的地址范围,0表示精确匹配,1表示任意匹配,它与子网掩码是完全不同的概念。 + +实验设备:Router-PT 2台;Switch_3560 1台;Switch_2960 1台;PC 3台;直通线,交叉线,串口线。 + +## 实验拓扑: + +![20240430220339](https://oss.9ihub.com/test/20240430220339.png) + +## 实验步骤: + +- 新建Cisco PT 拓扑图 +- 为各PC设置IP及网关地址,其中网关地址分别为路由接口的IP地址 +- 对三层交换机Switch1进行相关配置(VLAN、SVI及路由等) +- 接着为Router0和Router1上的以太网接口配置IP地址 +- 在路由器之间的串行接口上配置IP地址,且IP地址必须在同一子网内 +- 在Router0的串口上设置时钟频率(本次实验Router0为DCE类型,如图Router0一端有时钟图标) +- 査看路由器上的直连路由 +- 在Router0和Router1上配置OSPF动态路由 +- 查看路由器上的动态路由 +- 验证不同局域网PC之间的相互通信 + + +```bash +PC设置 +192.168.1.2 //PC0 +192.168.1.3 //PC1 +//子网掩码和网关 +255.255.255.0 +192.168.1.1 + +``` + +```bash +PC设置 +192.168.2.2 //PC2 +//子网掩码和网关 +255.255.255.0 +192.168.2.1 +``` + +```bash +/*=Part1 S3560 VLAN配置 */ +Switch>en +Switch#config t +Switch(config)#vlan 2 //创建VLAN 2 +Switch(config-vlan)#vlan 3 //创建VLAN 3 +Switch(config-vlan)#exit +Switch(config)#inter f0/1 +Switch(config-if)#switchport access vlan 2 //设置端口模式为Access +Switch(config-if)#exit +Switch(config)#inter f0/2 +Switch(config-if)#switchport access vlan 3 //设置端口模式为Access +Switch(config-if)#exit +/*=Part2 SVI路由配置 */ +Switch(config)#ip routing //开启路由功能,默认关闭 +Switch(config)#interface vlan 2 //进入SVI接口模式,接口自动开启 +Switch(config-if)#ip address 192.168.3.1 255.255.255.0 //配置SVI接口IP +Switch(config-if)#exit +Switch(config)#interface vlan 3 +Switch(config-if)#ip address 192.168.1.1 255.255.255.0 +Switch(config-if)#exit +/*=Part3 OSPF动态路由配置 */ +Switch(config)#router ospf 1 //启用OSPF协议,从属OSPF进程ID=1 +//指定通告网络,并归属OSPF区域ID=0 +Switch(config-router)#network 192.168.1.0 0.0.0.255 area 0 +Switch(config-router)#network 192.168.3.0 0.0.0.255 area 0 +Switch(config)#^Z +Switch#show r +Switch#show ip route + +``` + +```bash +/*=Part1 Router0 基本配置 */ +Router>enable +Router#conf t +Router(config)#inter f0/0 //进入第0模块第0端口(快速以太网接口) +Router(config-if)#ip address 192.168.3.2 255.255.255.0 //配置f0/0接口IP +Router(config-if)#no shutdown //开启端口,默认关闭 +Router(config-if)#exit +Router(config)#interface serial 2/0 //进入第2模块第0端口(串行接口) +Router(config-if)#ip address 10.254.10.1 255.255.255.0 //配置s2/0接口IP +Router(config-if)#clock rate 64000 //必须配置时钟才可通信 +Router(config-if)#no shutdown //开启端口,默认关闭 +Router(config-if)#exit +/*=Part2 OSPF动态路由配置 */ +Router(config)#router ospf 1 //启用OSPF协议,从属OSPF进程ID=1 +//指定通告网络,并归属OSPF区域ID=0 +Router(config-router)#network 192.168.3.0 0.0.0.255 area 0 +Router(config-router)#network 10.254.10.0 0.0.0.255 area 0 +Router(config-router)#^Z +Router#show r +Router#show ip route + +``` + +```bash +/*=Part1 Router1 基本配置 */ +Router>enable +Router#conf t +Router(config)#inter f0/0 //进入第0模块第0端口(快速以太网接口) +Router(config-if)#ip address 192.168.2.1 255.255.255.0 //配置f0/0接口IP +Router(config-if)#no shutdown //开启端口,默认关闭 +Router(config-if)#exit +Router(config)#interface serial 2/0 //进入第2模块第0端口(串行接口) +Router(config-if)#ip address 10.254.10.2 255.255.255.0 //配置s2/0接口IP +Router(config-if)#no shutdown //开启端口,默认关闭 +Router(config)#exit +/*=Part2 OSPF动态路由配置 */ +Router(config)#router ospf 1 //启用OSPF协议,从属OSPF进程ID=1 +//指定通告网络,并归属OSPF区域ID=0 +Router(config-router)#network 192.168.2.0 0.0.0.255 area 0 +Router(config-router)#network 10.254.10.0 0.0.0.255 area 0 +Router(config-router)#^Z +Router#show r +Router#show ip route + +``` + +```bash +# 链路测试 +PC0和PC1(命令提示符CMD下) +ping 192.168.1.1 //内网链路通 +ping 10.254.10.1 //外网链路通 +ping 192.168.2.2 //目的网络链路通 +PC2(命令提示符CMD下) +ping 10.254.10.1 //链路通 +ping 192.168.3.1 //链路通 +ping 192.168.1.3 //链路通 +``` + + +还没有配置OSPF的时候的路由表 + +```bash + 10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks + C 10.20.30.0/24 is directly connected, GigabitEthernet0/2 +L 10.20.30.4/32 is directly connected, GigabitEthernet0/2 + 192.168.250.0/24 is variably subnetted, 2 subnets, 2 masks +C 192.168.250.0/24 is directly connected, GigabitEthernet0/0 +L 192.168.250.1/32 is directly connected, GigabitEthernet0/0 +``` + +刚刚配置OSFP时候的路由表 + +```bash + 10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks +C 10.20.30.0/24 is directly connected, GigabitEthernet0/2 +L 10.20.30.4/32 is directly connected, GigabitEthernet0/2 + 192.168.250.0/24 is variably subnetted, 2 subnets, 2 masks +C 192.168.250.0/24 is directly connected, GigabitEthernet0/0 +L 192.168.250.1/32 is directly connected, GigabitEthernet0/0 +O 192.168.251.0/24 [110/2] via 10.20.30.5, 00:00:05, +``` + + +Ping了目标终端时候的路由表 + +```bash + 10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks + C 10.20.30.0/24 is directly connected, GigabitEthernet0/2 +L 10.20.30.4/32 is directly connected, GigabitEthernet0/2 + 192.168.250.0/24 is variably subnetted, 2 subnets, 2 masks +C 192.168.250.0/24 is directly connected, GigabitEthernet0/0 +L 192.168.250.1/32 is directly connected, GigabitEthernet0/0 +O 192.168.251.0/24 [110/2] via 10.20.30.5, 00:02:45, +```