OSPF不规则区域解决办法与路由器认证

  

  

  今天我们会学习两个新的内容,OSPF不规则区域的解决办法,还有路由器的安全策略——认证。我们先来看第一个内容。

一:OSPF不规则区域的解决办法。

  我们前面说过,在OSPF网络中,非骨干区域在物理上必须与骨干区域相连,否则该区域将接受不到其他区域的路由信息。但是,有时候因为各种各样的原因,无法做到在物理上每个非骨干区域都与骨干区域相连接(比如距离太远,或者成本太高。)。比如下图中的Area 3:

                                                                            

OSPF协议中非骨干区域之间的通信必须通过骨干区域中转才能实现吗 ospf非骨干区域不连续_链路

   Area 3没有和Area 0直接相连,而是与Area 2连接在了一起。像Area 3这样的没有和骨干区域直接相连的区域,我们称之为不规则区域。我们可以猜测到,此时不规则区域Area 3,是与其它OSPF区域不相通的。我们可以查看一下Area 3中R7的路由信息。

     

OSPF协议中非骨干区域之间的通信必须通过骨干区域中转才能实现吗 ospf非骨干区域不连续_OSPF_02

  R7此时只有一个本区域网段的路由,并没有其他区域的路由信息。你可以自己ping一下最右边的R3,绝对是ping不通的。

  那么,我们如何能让不规则区域和其他区域相通,实现整个网络的互连呢?毕竟,如果网络不通,那网络本身也就失去了意义。下面介绍三种解决办法:

  1)双向重发布

  在不规则区域与和不规则区域相连接的区域的ABR上做双向重发布。(在上图的网络拓扑中,该ABR为R6)

  首先,在R6上创建两个OSPF进程,比方说进程6和进程100,然后在一个进程里将不规则区域(Area 3)宣告入OSPF网络,在另一个进程里将与不规则区域相连的区域(Area 2)宣告入OSPF网络。最后在R6上做双向重发布即可。下面的具体的操作。

    

OSPF协议中非骨干区域之间的通信必须通过骨干区域中转才能实现吗 ospf非骨干区域不连续_链路_03

    

OSPF协议中非骨干区域之间的通信必须通过骨干区域中转才能实现吗 ospf非骨干区域不连续_OSPF_04

    我们再次查看R7的路由信息,可以看到已经有了其他区域的路由。现在已经是全网ping通的了。

    

OSPF协议中非骨干区域之间的通信必须通过骨干区域中转才能实现吗 ospf非骨干区域不连续_R3_05

   2) 启用tunnel口

  另一种解决不规则区域问题的方法是启用tunnel口,我们可以建立一条隧道,通过该隧道,直接把不规则区域和骨干区域连接起来。在实验该方法之前,先把双向重发布步骤所做的配置都删除掉,将网络恢复到一开始的状态(即ping不通时的状态)。

    

OSPF协议中非骨干区域之间的通信必须通过骨干区域中转才能实现吗 ospf非骨干区域不连续_OSPF_06

  此时R7的数据库里只有本区域的路由信息,没有其他OSPF区域的。下面是启用tunnel口的具体步骤。

  1.在连接不规则区域和骨干区域的那一个区域(该例子中为Area 2)的ABR(R1,R6)上建立一条tunnel。

  在上图的拓扑结构中,R1的f0/1口ip为192.168.5.1,R6的f0/1口的ip为192.168.5.2

  R1的配置为:

    R1(config)#int tunnel 2  //创建并进入tunnel 2口

    R1(config-if)#tunnel source 192.168.5.1  //指定tunnel口的源

    R1(config-if)#tunnel destination  192.168.5.2  //指定tunnel口的宿

    R1(config-if)#ip add 192.168.222.1  255.255.255.0  //指定tunnel口的IP地址

  R6的配置为:

    R6(config)#int tunnel 2  //创建并进入tunnel 2口

    //注意R6上tunnel口的源和宿是和R1的反过来的

    R6(config-if)#tunnel source 192.168.5.2  //指定tunnel口的源

    R6(config-if)#tunnel destination  192.168.5.1  //指定tunnel口的宿

    R6(config-if)#ip add 192.168.222.6  255.255.255.0  //指定tunnel口的IP地址

  这样一来,tunnel就建好了。

  2.将ABR上创建的tunnel口都宣告入骨干区域Area 0,拓展Area 0 区域。

  

OSPF协议中非骨干区域之间的通信必须通过骨干区域中转才能实现吗 ospf非骨干区域不连续_R3_07

  

OSPF协议中非骨干区域之间的通信必须通过骨干区域中转才能实现吗 ospf非骨干区域不连续_R3_08

  做完了1,2步骤,其实就是将Area 0拓展到了如下橙色线包含的区域:

  

OSPF协议中非骨干区域之间的通信必须通过骨干区域中转才能实现吗 ospf非骨干区域不连续_OSPF_09

  现在,再查看一下R7的数据库,就可以看到有其他区域的路由了。可以看到,Tunnel连接的开销非常之大(红框里的数据)

  

OSPF协议中非骨干区域之间的通信必须通过骨干区域中转才能实现吗 ospf非骨干区域不连续_R3_10

 

  3)虚拟链路

  最后一种解决不规则区域的方法是使用虚拟链路技术,通过在连接不规则区域和骨干区域的OSPF区域(上图中为Area 2)中建立一条虚拟链路,将不规则区域和骨干区域连接起来。虚拟链路的建立非常简单,只需用area <area_id> virtual-link <对方路由器id>一条命令即可。(配置之前先删除掉tunnel连接)。因为我们要在Area 2建一条虚拟链路,所以我们需要在R1和R6上配置。R1的配置如下:(R6上做相应的配置,我这里就不弄了)

  

OSPF协议中非骨干区域之间的通信必须通过骨干区域中转才能实现吗 ospf非骨干区域不连续_链路_11

  虚拟链路建立后,就可以看到R7有了其他区域的路由信息,这样一来就全网ping通了。

  

二:路由器的安全策略——认证

  为什么需要对路由协议做认证?我们先来看看以下工作场景:  

  • 你管理你们公司一台路由器,它在北京;
  • 你们天津分公司也有一台路由器,由天津的网络工程师维护;
  • 两个公司要连起来运行OSPF路由协议互通,公司决定拉一条4M专线互联北京和天津公司;
  • 你心里没底,你不知道专线另一端是不是天津的一台合法的设备;
  • 于是你打了一个电话给天津的网络工程师,跟他沟通了一下,决定启用OSPF认证,这样的话,两边的认证一致,就可以正常的发送和接收路由。如果两边认证不一样,就不是合法设备,就无法处理路由。

  基本所有的路由协议默认都没有做认证,如果一台OSPF路由器对端连了一台非法的设备,它配置在同一个网段,启用相同的OSPF区域,是可以很容易破坏现有路由网络的。所以对路由协议做认证的目的,就是确保路由传到了一台合法的设备上,这两台设备上应该都要有相同的认证账号、密码才能通过认证。按照有无加密分,OSPF路由协议可以分为明文和密文两种认证方案;按照范围分,OSPF路由协议可以分为链路认证和区域认证。

  明文认证与密文认证

  OSPF明文认证

  OSPF明文认证是一种传输密码原文的认证方案,它会在OSPF的LSA头部中将Authentication Type字段设置为1,在Authentication Data字段加入认证的密码,然后传输出去。明文认证是没办法避免中间人攻击的,这个密码在传输的过程中如果被其他人抓包,解码出来后是可以很方便看到里面的密码的,因为密码是明文的。OSPF明文认证的过程:

  • Router A:你好,我的认证密码是bossfang
  • Router B:我看看,对~我的认证密码也是bossfang
  • 通过认证

  OSPF密文认证

  OSPF密文认证是一种更安全的方式,它能有效防止中间人攻击,因为它不会直接传输原始密码,而是会先对密码文件使用md5算法做一下hash处理,再将hash值发给对方。OSPF密文认证会将OSPF的LSA头部中Authentication Type字段设置为2,在Authentication Data字段加入hash值。OSPF密文认证的过程:

  • Router A:我的认证密码是bossfang,我怕别人破解啊。先把bossfang用MD5算法处理下,得到MD5值xoxoxo
  • Router B:我也是md5认证,我的认证密码也是bossfang,我也用MD5处理下bossfang,相同的密码和相同的处理算法,所以B的MD5值也是xoxoxo
  • Router A:你好,我的密码md5值是xoxoxo(注意,不发密码bossfang了,发的是MD5值)
  • Router B:啊哈,我的密码md5值也是xoxoxo(B的这个MD5值也是由密码算出来的)
  • 通过认证

  OSPF区域认证与链路认证(端口认证)

  我们约定一个拓扑图,大概是这个样子

R1(s0/0)—–(s0/0)R2(s0/1)——–(s0/1)R3

  现有三个路由器顺序接好并且配置完成,均属于area 0。这时候我们在R1开启区域认证并配置好密码,发现R1与R2邻居关系断开;R2在s0/0接口配置基于链路的认证,加密方式与R1相同,发现邻居关系成功建立。R3可以ping通R1。

  通过以上验证可知,ospf在链路之间只关心密码是否匹配。基于区域的加密方式与基于链路的认证方式其实是一种认证方式,只是基于区域的认证方式是在ospf进程中配置,可以同时批量配置划分在同一区域中的接口的认证方式,而不需要单独到接口下启动而已。

 

  我们以路由器R3为例,看看认证的具体命令。需要注意的一点的配置完后,还需要声明,认证才能生效。

 

链路明文认证具体配置和声明如下:

R3(config-if)#ip ospf authentication-key cisco  //配置,cisco为认证密钥

R3(config-if)#ip ospf authentication        //声明,使配置生效

 

链路密文认证具体配置和声明如下:

R3(config-if)#ip ospf message-digest-key 1 md5 cisco

R3(config-if)#ip ospf authentication message-digest

 

区域明文认证具体配置和声明如下:

R3(config-if)#ip ospf authentication-key cisco

R3(config-router)#area 3 authentication

 

区域密文认证具体配置和声明如下:

R3(config-if)#ip ospf message-digest-key 1 md5 cisco

R3(config-router)#area 3 authentication message-digest

 

 

References:

  明文认证和密文认证:https://www.logcg.com/archives/262.html

  区域认证和链路认证:http://www.hcie.me/222