3.3【OSPF】NP十二班第二天-OSPF邻居状态机及邻居建立2/1
OSPF邻居状态机及邻居建立
【实验验证 】OSPF邻居建立的影响因素
#show ip ospf neighbor
FULL(邻居状态机)/DR(接口状态机)
1、hello时间和dead时间不一致
hello时间和dead时间只能在接口下改;
改hello时间,dead时间肯定会变;而改dead时间,hello时间不会变,但同样影响邻居的建立;
R1(config-if)#ip ospf hello-interal 5
合格的工程师-理解协议去分析它
排错:
(1)ping看直连是否能通?
直连通,没有邻居关系,通过debug方式去查
(2)R1#debug ip ospf packet
#terminal monitor
可以收到hello报文的,没有邻居关系,很可能hello配置错误
(3)......
************************************************************************
2、认证类型和认证数据不一致(OSPF头部)
认证的作用:检查对端的一个有效性,如果把接口宣告进OSPF,对方可能伪冒和你建立邻居关系,防止不受信任的设备和你建立邻居关系,防止非法设备的接入,可以用认证。
(1)接口认证 :
基于接口的,配了认证的接口在发送的OSPF报文中会携带认证;
(2)区域认证:
在区域里面配了认证,所有属于这个区域的接口在发送OSPF报文中都会携带认证;
注意:如果同时配置了接口认证和区域认证,接口认证优先于区域认证;
【实验】OSPF认证配置 20:28
接口认证:
(1)明文认证:
首先,判断认证类型是否是一致的,在此基础上在看认证密码是否一致。
明文认证,不安全,可以通过抓包获取密码学到路由条目;
//抓包分析
(2)密文认证:
Auth Data:(MD5值,128比特位)OSPF报文的哈希值,哈希值一样两端的密钥一样,MD5不可逆:数值一点不一样,加密出来的就不一样 。
Auth Crypto Sequence Number有何用?每一个OSPF报文里面的sequence number是否是一致的?
主要是为了抗重放攻击的:网购需要支付,需要输入密码,支付信息到银行服务器,银行把扣款成功的支付信息发给网站,这样才显示支付成功了。支付的报文通过 SSL加密的。
黑客:把支付报文截获以后重放给服务器:银行服务器会再次扣款,重放个10次8次账户就没钱了。
避免重放攻击:在每一个报文里面有独立的序列号,服务器已经收到了一个序列号的报文,在下一次收到同样序列号的报文,服务器是不做处理的,保护个人账户。
区域的认证配置:
(1)明文配置
区域下开启认证功能;
区域开启认证后,还需要在接口下配置一个密钥;
(2)密文配置
在接口或者区域下面开启了密文/明文认证,不配密码也能开启认证关系
思科里面,区域下开认证功能,接口下也需要配置key才可以,还是需要在接口里面配置key才可以;华为直接在区域下可以配置认证功能;
即,区域下开认证功能,接口下配置密码就行了。
区域里面没有authtication这个认证参数,直接配置MD5就可以
57:24
authtication 证明,认证
区域的认证方式和接口的认证方式不一样,区域的认证方式多了个key值,哈希值不一样,两端哈希值不一样无法建立邻居关系
【实验分析】:
R2上既有MD5/又有区域认证
*************************************************************
3、Router-id冲突
正常情况下是自动选举的,也 可以手动配置;两端设备Router-id冲突,直连的设备是无法建立邻居关系的。在校园网里面,最好对router-id有个规划。
【实验配置】
进程下手工修改Router-id
*************************************************************
4、区域ID不一致
*************************************************************
5、网络类型不一致
并不一定;
一端是广播网 ,另一端是NBMA,是否影响?
Hello报文里面并没有网络类型参数,还是由于hello interval和dead interval不一致造成 的;
广播网: 10s 40s
NBMA: 30s 120s
点到点: 10s 40s
点到多点: 30s 120s(非广播的一种解决方案)
虚链路:(在建立邻居之初时才发hello报文,后续是不发的)
【实验配置】01:18
邻居建立完成以后,并且建立一个邻接的关系。网络类型不一致,如果一端是点到点,另一种 是广播网,仍然可以建立,但是无法正常选路,收不到路由;原因是SPF算法有问题。
*********************************************************************
只配置认证没有K值,哈希值如何计算?
正常情况下,OSPF与K值做哈希得到哈希值;思科里面,如果开启了认证没有设置K值,会有一个默认K,通过默认K去做哈希。
通过一个MD5的值比如:cisco,去和OSPF报文做哈希得到一个哈希值。
K的ID作用?K-ID不参与哈希的计算,密钥的索引号,通过索引找到密钥与OSPF报文进行哈希
A上有10个K,B有2个K,实际上发的时候两端都会发,会把所有的K全部发过去,用每一个K去发送报文,只要有 一个匹配成功就行了
总结:配置MD5认证后,如果 接口下存在多个KEY,建立邻居前会使用最后一次配置的KEY计算HASH,如果建立成功后告所有KEY值,配置的KEY-ID是不参与HASH计算的,只是一个索引值
******************************************************************************
6、掩码不一致会影响邻居建立吗?
不一定
掩码不同直连可以通吗?
肯定可以通的,大网包含小网,IP包头里面没有掩码长度,只有源目的IP
B回包,目的IP是12.1.1.1,可以匹配本地的直连路由12.1.1.2/24,可以通
广播网和非广播网,如果掩码不一致,无法建立邻居关系,因为在这种网络类型下建立邻居关系是要通告二类LSA的,而在二类LSA中是要看掩码字段的,是必须要看掩码长度的
如果两边是点到点、点到多点和虚电路的网络类型不需要检查掩码匹配,则可以建立邻居关系
**************************************************************************
7、接口地址不在同一网段?
串口中的地址借用,封装为PPP,不同网段可以通,自动生成路由
PPP连接的建立:
LCP链路层的协商:
NCP协议层的协商:需要去+协商上层的应用协议,比如IPv4,协商的时候会发送一个IPCP的报文,在报文里面就会携带本端接口的IP地址,可以把地址通告给邻居,邻居收到以后会在本地生成到达对端的直连路由。
Hello报文可以收到,思科里面会去检查源和目的是否在同 一网段,如果不是,会拒收hello报文的。
ip unnumbered loopback 0 无符号的地址借用
show ip os neighbr
华为的设备,不管是地址借用还是地址,在点到点的网络里面都不会去检测源的;思科的设备,接口下配IP都会检测源,如果做地址借用,会检测源,看源地址和自己地址是否在同一网段,如果不在同一网段,会拒收报文。
结论:如果在点到点网络类型中,接口的IP地址使用地址借用的方式是不会执行源检查,如果直接配置IP地址,同样会执行源检查
一端是INIT,另一端没状态:
例如:R1-R2通过串口互连,R1上配置IP地址,R2上使用IP地址借用,R1和R2配置OSPF,结果:R1为空,R2为INIT(R1上收到报文被丢弃掉)
***************************************************************************
8、区域类型不一致
普通区域和特殊区域
E比特位 N/P比特位
E比特位:支持接收和传递外部路由,正常置1;
变成stub,比特位置0;
双方收到报文会 检测E比特位,如果 不一样会拒收hello报文
Option选项中的Ebit表示可以接收和传递外部路由(5类LSA),在特殊区域stub和totally stub中Ebit位需要设置为0.
同时,N/P比特位也是属于区域类型位(nssa和tollay nssa),如果在hello和DBD报文中N/P 置位,Ebit就需要设置0,这两个比特位不能同时被设置。
************************************************************************
9、ACL
通过ACL来过滤一个组播的报文,一端是INIT,另一端是空的;
通过 ACL也会影响邻居的建立:
***********************************************************************
10、PASSIVE接口(OSPF中的passive接口 不收发hello报文)
接口上面既不发也不收OSPF报文
只建立邻居关系是不能交互LSA的,只有建立邻接关系才能交互LSA
1、hello:发现建立和维护邻居关系
2、DBD:数据库描述报文:用于通告LSDB中所有的LSA的摘要信息(菜单:LSA就像菜)
3、LSR:链路状态请求:用于请求具体的LSA信息
4、LSU:链路状态更新:用于通告具体的LSA信息(上菜)
5、LSACK:链路状态确认:用于确认接收到的LSA
在OSPF中有两种 确认机制:
1、隐式确认:这个报文不是用于确认的确有确认的功能
hello(看router-id确认:有确认的机制)、DBD、LSU(用于确认LSR)
2、显式确认:这个报文专门用于确认的(LSACK)
为什么ospf需要有一个确认的机制?
OSPF不是一个可靠的协议,用IP来传的。TCP是一个可靠性协议,TCP中有ACK;OSPF只能根据自身的报文来保证可靠性;
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">