jjzjj

eNSP实验三:OSPF路由协议

缔宇diyu 2024-01-13 原文

文章目录


一 实验介绍、目的及拓扑图

1.1 实验介绍

开放式最短路径优先OSPF(Open Shortest Path First)是IETF组织开发的一个基于链路状态的内部网关协议(Interior Gateway Protocol)。目前针对IPv4协议使用的是OSPF Version 2(RFC2328);OSPF作为基于链路状态的协议,OSPF具有以下优点:

• OSPF采用组播形式收发报文,这样可以减少对其它不运行OSPF路由器的影响。

• OSPF支持无类型域间选路(CIDR)。

• OSPF支持对等价路由进行负载分担。

• OSPF支持报文认证。

由于OSPF具有以上优势,使得OSPF作为优秀的内部网关协议被快速接收并广泛使用。

1.2 实验目的

  • 通过OSPF动态路由协议,来实现这些网络之间的互联互通。

掌握OSPF的基本配置命令

掌握如何查看OSPF的运行状态

掌握如何通过cost控制OSPF的选路

掌握OSPF发布默认路由的方法

掌握OSPF认证配置方法

1.3 组网图

拓扑图就是按照前面第一个实验的图,可按照前文配置物理接口和LoopBack接口的IP地址。

或者 使用 undo ip route-static all 命令删除前实验配置的静态路由。

二 实验步骤

2.1 设备基础配置

设备命名、物理及逻辑接口的ip地址略去。

也可以在第一个实验基础上 使用 undo ip route-static all 命令可以删除前文第一个实验配置的静态路由。这样可以减小工作量。

# 查看AR1的路由表

可以看出是没有Loopback接口的相关路由,即loopback接口之间是ping不通的。

# ping Loopback接口

2.2 OSPF基本配置

# 创建OSPF进程

[AR1]ospf 1 router-id  10.0.1.1  # 创建进程,并将逻辑接口设为设备id号

创建OSPF进程是配置与OSPF协议有关参数的首要步骤。

  • OSPF支持多进程,在同一台设备上可以运行多个不同的OSPF进程,它们之间互不影响,彼此独立。不同OSPF进程之间的路由交互相当于不同路由协议之间的路由交互。可以在创建OSPF进程时指定进程号,若不指定,默认进程号为“1”。

  • router-id:用于手工指定设备的ID号,一般设为逻辑接口地址。如果没有通过命令指定ID号,系统会从当前接口的IP地址中自动选取一个作为设备的ID号。

# 创建OSPF区域并使能相应的接口

[AR1-ospf-1]area 0

area:命令用来创建OSPF区域,并进入OSPF区域视图。

[AR1-ospf-1-area-0.0.0.0]network 10.0.12.1 0.0.0.255 
[AR1-ospf-1-area-0.0.0.0]network 10.0.13.1 0.0.0.255 
[AR1-ospf-1-area-0.0.0.0]network 10.0.1.1 0.0.0.0   # Loopback逻辑接口

此时三个接口都被使能,同时属于区域0

network network-address wildcard-mask:用来指定运行OSPF协议的接口和接口所属的区域。

network-address为接口所在的网段地址。

wildcard-mask:通用符掩码、反掩码。

满足下面两个条件,OSPF协议才能在接口上运行:

  • 接口的IP地址掩码长度≥network命令中的掩码长度。OSPF使用反掩码,例如0.0.0.255表示掩码长度24位。

  • 接口的IP地址必须在network命令指定的网段范围之内。

[AR2]ospf router-id 10.0.1.2    # 默认进程1
[AR2-ospf-1]area 0
[AR2-ospf-1-area-0.0.0.0]network 10.0.12.2 0.0.0.255 
[AR2-ospf-1-area-0.0.0.0]network 10.0.23.2 0.0.0.255 
[AR2-ospf-1-area-0.0.0.0]network 10.0.1.2 0.0.0.0 

当network命令配置的wildcard-mask为全0时,如果接口的IP地址与network-address配置的IP地址相同,则此接口也会运行OSPF协议。

[AR3]ospf 1 router-id 10.0.1.3
[AR3-ospf-1]area 0
[AR3-ospf-1-area-0.0.0.0]network 10.0.13.3 0.0.0.255  
[AR3-ospf-1-area-0.0.0.0]network 10.0.23.3 0.0.0.255 
[AR3-ospf-1-area-0.0.0.0]network 10.0.1.3 0.0.0.0

2.3 查看OSPF状态

# 查看OSPF邻居

[AR1]display ospf peer 

	 OSPF Process 1 with Router ID 10.0.1.1
		 Neighbors 

 Area 0.0.0.0 interface 10.0.12.1(GigabitEthernet0/0/0)'s neighbors
 Router ID: 10.0.1.2         Address: 10.0.12.2       
   State: Full  Mode:Nbr is  Master  Priority: 1
   DR: 10.0.12.2  BDR: 10.0.12.1  MTU: 0    
   Dead timer due in 39  sec 
   Retrans timer interval: 0 
   Neighbor is up for 00:02:19     
   Authentication Sequence: [ 0 ] 

		 Neighbors 

 Area 0.0.0.0 interface 10.0.13.1(GigabitEthernet0/0/1)'s neighbors
 Router ID: 10.0.1.3         Address: 10.0.13.3       
   State: Full  Mode:Nbr is  Master  Priority: 1
   DR: 10.0.13.3  BDR: 10.0.13.1  MTU: 0    
   Dead timer due in 34  sec 
   Retrans timer interval: 5 
   Neighbor is up for 00:01:47     
   Authentication Sequence: [ 0 ] 

display ospf peer:命令用来显示OSPF中各区域邻居的信息。包括邻居所属的区域、邻居Router ID、邻居状态、DR和BDR路由器等信息。

  • OSPF Process 1 with Router ID 1.1.1.1∶ 本地OSPF进程号为1与本端OSPF Router lD为1.1.1.1
  • Router ID:邻居OSPF路由器ID
  • Address:邻居接口地址
  • GR State:使能OSPF GR功能后显示GR的状态(GR为优化功能),默认为Normal
  • State:邻居状态,正常情况下LSDB同步完成之后,稳定停留状态为Full
  • Mode:用于标识本台设备在链路状态信息交互过程中的角色是Master还是Slave
  • Priority:用于标识邻居路由器的优先级(该优先级用于后续DR角色选举)
  • DR:指定路由器
  • BDR:备份指定路由器
  • MTU:邻居接口的MTU值
  • Retrans timer interval:重传LSA的时间间隔,单位为秒
  • Authentication Sequence:认证序列号

# 查看IP路由表中由OSPF学习到的路由

[AR1]display ip routing-table protocol ospf 
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : OSPF
         Destinations : 3        Routes : 4        

OSPF routing table status : <Active>
         Destinations : 3        Routes : 4

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

       10.0.1.2/32  OSPF    10   1           D   10.0.12.2       GigabitEthernet0/0/0
       10.0.1.3/32  OSPF    10   1           D   10.0.13.3       GigabitEthernet0/0/1
      10.0.23.0/24  OSPF    10   2           D   10.0.12.2       GigabitEthernet0/0/0
                    OSPF    10   2           D   10.0.13.3       GigabitEthernet0/0/1

OSPF routing table status : <Inactive>
         Destinations : 0        Routes : 0

2.4 配置OSPF认证(以加密方式)

OSPF认证分为两种:

  • 区域认证:在OSPF区域视图下配置,对本区域的所有接口下的报文进行认证。

  • 接口认证:在接口视图下配置,对本接口的所有报文进行认证。

# 在R1上配置接口认证

[AR1]interface GigabitEthernet 0/0/0  # 与AR2的接口
[AR1- GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher huawei # 配置密码为 huawei,且用加密的方式
[AR1]interface GigabitEthernet 0/0/1  # 与AR3的接口
[AR1- GigabitEthernet0/0/1]ospf authentication-mode md5 1 cipher huawei # 配置密码为 huawei,且用加密的方式
[AR1-GigabitEthernet0/0/1]display this
[V200R003C00]
#
interface GigabitEthernet0/0/1
 ip address 10.0.13.1 255.255.255.0 
 ospf authentication-mode md5 1 cipher %$%$>V0V$=pU#M(N8f&=lKS>s]MA%$%$  # 加密后的密码
#
return

由于cipher是密文口令类型,所以查看配置时以密文方式显示口令。

# 再次查看当前的邻居状态

[AR1]display ospf peer brief 

	 OSPF Process 1 with Router ID 10.0.1.1
		  Peer Statistic Information
 ----------------------------------------------------------------------------
 Area Id          Interface                        Neighbor id      State    
 ----------------------------------------------------------------------------

由于其他路由器还未配置认证,所以认证不通过,无邻居。
配置认证的密码要相同。

# 配置R2上的接口认证

[AR2]interface GigabitEthernet 0/0/0  # 与AR1的接口
[AR2- GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher huawei # 配置密码为 huawei,且用加密的方式
[AR2]interface GigabitEthernet 0/0/1  # 与AR3的接口
[AR2- GigabitEthernet0/0/1]ospf authentication-mode md5 1 cipher huawei # 配置密码为 huawei,且用加密的方式
[AR2-GigabitEthernet0/0/1]display this
[V200R003C00]
#
interface GigabitEthernet0/0/1
 ip address 10.0.23.2 255.255.255.0 
 ospf authentication-mode md5 1 cipher %$%$x.y0~cMjg*HujNVEtZc3saW1%$%$
#
return

# 查看R2的邻居状态

[AR2]display ospf peer brief

	 OSPF Process 1 with Router ID 10.0.1.2
		  Peer Statistic Information
 ----------------------------------------------------------------------------
 Area Id          Interface                        Neighbor id      State    
 0.0.0.0          GigabitEthernet0/0/0             10.0.1.1         Full        
 ----------------------------------------------------------------------------

此时R2已经可以和R1建立起正常的邻居关系。

# 在R3上配置区域认证

[AR3]ospf # 默认进程 1,已创建好则进入。
[AR3-ospf-1]area 0
[AR3-ospf-1-area-0.0.0.0]authentication-mode md5 1 cipher huawei

# 查看R3上的邻居状态

[AR3]display ospf peer brief 

	 OSPF Process 1 with Router ID 10.0.1.3
		  Peer Statistic Information
 ----------------------------------------------------------------------------
 Area Id          Interface                        Neighbor id      State    
 0.0.0.0          GigabitEthernet0/0/0             10.0.1.1         Full        
 0.0.0.0          GigabitEthernet0/0/1             10.0.1.2         Full        
 ----------------------------------------------------------------------------

此时R3已经和R1与R2建立邻接关系。

说明OSPF接口认证与区域认证产生的效果都是在设备的OSPF接口上实现OSPF报文认证。

别忘了所有设备 save 保存

2.5 宣告默认路由

假设R1为所有网络的出口,所以在R1上向OSPF宣告默认路由

# 在R1上宣告默认路由

[AR1]ospf
[AR1-ospf-1]default-route-advertise always

default-route-advertise:命令用来将默认路由通告到普通OSPF区域,如果没有配置always参数,本机路由表中必须有激活的非本OSPF默认路由时才向其他路由器发布默认路由。本例中,本地路由表中没有默认路由,所以需要增加always参数。

# 查看R2与R3上的IP路由表

[AR2]display ip routing-table 

R2与R3上已经学习到相应的默认路由。

[AR3]display ip routing-table 
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
         Destinations : 15       Routes : 16       

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

        0.0.0.0/0   O_ASE   150  1           D   10.0.13.1       GigabitEthernet0/0/0  # 默认路由
       10.0.1.1/32  OSPF    10   1           D   10.0.13.1       GigabitEthernet0/0/0
       10.0.1.2/32  OSPF    10   1           D   10.0.23.2       GigabitEthernet0/0/1
…………………………………… # 略去 

2.6 修改cost值改变ospf路由路径

通过修改R1相应接口的Cost值,使得R1的 LoopBack0 接口通过 R1->R3->R2 的路径访问R2的 LoopBack0 接口

# 从R1的路由表可知,R1通过R1->R2的路径访问R2的LoopBack0接口的路由开销为1,从R1->R3->R2的路由开销为2,故只要使R1->R2的路由开销大于2即可。

[AR1]interface GigabitEthernet 0/0/0   # 与AR2的接口
[AR1- GigabitEthernet0/0/0]ospf cost 10  # 开销值设为 10

# 查看R1的路由表

[AR1-GigabitEthernet0/0/0]display ip routing-table 

如图,此时R1访问R2的 LoopBack0 接口的下一跳为R3的 GigabitEthernet0/0/1 接口

# 通过Tracert命令验证

[AR1]tracert -a 10.0.1.1 10.0.1.2

 traceroute to  10.0.1.2(10.0.1.2), max hops: 30 ,packet length: 40,press CTRL_C
 to break 

 1 10.0.13.3 30 ms  10 ms  20 ms 

 2 10.0.23.2 30 ms  30 ms  20 ms 

由此可看出,ospf 路由路径已改变,R1是通过路径 R1->R3->R2 的路径访问 R2。

三 总结

删除OSPF时,要注意需要先将OSPF认证删除,接口认证的就依次进入认证过的接口进行删除,区域认证的进入区域删除即可。

# 接口认证删除
[AR1-GigabitEthernet0/0/0]undo ospf authentication-mode   
# 区域认证删除
[AR2-ospf-1-area-0.0.0.0]undo authentication-mode   

有关eNSP实验三:OSPF路由协议的更多相关文章

  1. ruby-on-rails - Rails 3 中的多个路由文件 - 2

    Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题

  2. ruby - rails 3 redirect_to 将参数传递给命名路由 - 2

    我没有找到太多关于如何执行此操作的信息,尽管有很多关于如何使用像这样的redirect_to将参数传递给重定向的建议:action=>'something',:controller=>'something'在我的应用程序中,我在路由文件中有以下内容match'profile'=>'User#show'我的表演Action是这样的defshow@user=User.find(params[:user])@title=@user.first_nameend重定向发生在同一个用户Controller中,就像这样defregister@title="Registration"@user=Use

  3. ruby-on-rails - Rails 3,嵌套资源,没有路由匹配 [PUT] - 2

    我真的为这个而疯狂。我一直在搜索答案并尝试我找到的所有内容,包括相关问题和stackoverflow上的答案,但仍然无法正常工作。我正在使用嵌套资源,但无法使表单正常工作。我总是遇到错误,例如没有路线匹配[PUT]"/galleries/1/photos"表格在这里:/galleries/1/photos/1/edit路线.rbresources:galleriesdoresources:photosendresources:galleriesresources:photos照片Controller.rbdefnew@gallery=Gallery.find(params[:galle

  4. CAN协议的学习与理解 - 2

    最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总

  5. ruby-on-rails - Rails - 从命名路由中提取 HTTP 动词 - 2

    Rails中有没有一种方法可以提取与路由关联的HTTP动词?例如,给定这样的路线:将“users”匹配到:“users#show”,通过:[:get,:post]我能实现这样的目标吗?users_path.respond_to?(:get)(显然#respond_to不是正确的方法)我最接近的是通过执行以下操作,但它似乎并不令人满意。Rails.application.routes.routes.named_routes["users"].constraints[:request_method]#=>/^GET$/对于上下文,我有一个设置cookie然后执行redirect_to:ba

  6. ruby-on-rails - 如何在 Rails 中设置路由的默认格式? - 2

    路由有如下代码:resources:orders,only:[:create],defaults:{format:'json'}resources:users,only:[:create,:update],defaults:{format:'json'}resources:delivery_types,only:[:index],defaults:{format:'json'}resources:time_corrections,only:[:index],defaults:{format:'json'}是否可以使用1个字符串为所有资源设置默认格式,每行不带“默认值”散列?谢谢。

  7. ruby - cucumber 的路由问题 - 2

    我正在使用rails3和cucumber,除了这个小问题,一切都很顺利GivenIamonthe"editautomobile"pageNoroutematches{:controller=>"automobiles",:action=>"edit"}(ActionController::RoutingError)现在路径在paths.rb中设置为edit_automobile_path在routes.rb中我有汽车作为资源,我搭建了它所以请告诉我我遗漏了什么,清楚地定义了路线并且匹配,因为我运行了rake路线并看到了路线。请指出正确的方向 最佳答案

  8. ruby - Rails 路由 : Giving default values for path helpers - 2

    有什么方法可以为url/path助手提供默认值吗?我有一个可选范围环绕我的所有路线:#config/routes.rbFoo::Application.routes.drawdoscope"(:current_brand)",:constraints=>{:current_brand=>/(foo)|(bar)/}do#...allotherroutesgohereendend我希望用户能够使用这些URL访问网站:/foo/some-place/bar/some-place/some-place为了方便起见,我在我的ApplicationController中设置了一个@current

  9. ruby-on-rails - 将 Rails 路由助手作为类方法添加到类中 - 2

    我如何将像“root_path”这样的Rails路由助手作为类方法添加到像my_model.rb这样的类中?所以我的课是这样的:ClassMyModeldefself.fooreturnself.root_pathendendMyModel.foo以上不起作用,因为ClassMyModel不响应root_path这是我所知道的:我可以使用includeRails.application.routes.url_helpers,但这只会将模块的方法添加为实例方法我试过扩展Rails.application.routes.url_helpers但它没用请随时给我上课:)

  10. ruby-on-rails - 获取 ActionController::RoutingError(当尝试使用 AngularJS 将数据发布到 Rails 服务器时,没有路由匹配 [OPTIONS] "/users" - 2

    尝试从我的AngularJS端将数据发布到Rails服务器时出现问题。服务器错误:ActionController::RoutingError(Noroutematches[OPTIONS]"/users"):actionpack(4.1.9)lib/action_dispatch/middleware/debug_exceptions.rb:21:in`call'actionpack(4.1.9)lib/action_dispatch/middleware/show_exceptions.rb:30:in`call'railties(4.1.9)lib/rails/rack/logg

随机推荐