演示并取证:理解思科的邻居发现协议(CDP)

演示并取证:理解思科的邻居发现协议(CDP)


  思科发现协议(Cisco DiscoveryProtocolCDP)是一个处于OSI七层模型中数据链路层的协议。CDP 用来获取相邻设备的协议地址及发现这些设备的平台,可为路由器的使用提供相关接口信息,是一种独立媒体协议。它运行在所有思科制造的设备上,包括路由器、交换机或其它网络设备,因为它是思科的私有协议,所以那些非思科的设备不能使用CDP协议。

   CDP协议分为CDPv1CDPv2两个版本。Cisco路由器12.03T或以上的IOS版本支持CDPv2,在10.312.03T版本的IOSCDPv1默认是开启的。当Cisco设备启动时,CDP协议便自动地开始检测其他运行CDP协议的邻居设备。通过CDP协议,用户能得到相关联的路由器名、路由器端口信息、IOS 版本信息、IOS平台信息、硬件版本信息及相关的链路信息,从而描述出整个网络的拓扑情况。如9.31所示,CDP协议将自己设备的MAC地址作为源地址,通过一个固定的目标MAC01000CCCCCCC的多播MAC地址发送自身设备的厂商IDIOS平台信息、硬件版本、端口信息、设备名称等信息给邻居设备。


注意:CDP是一个独立的二层协议,所以它可以独立于三层使用。换言之,就是在没有网络层连通的情况下,CDP也可以正常的工作。


演示:思科网络设备上CDP的配置


演示目标:思科CDP协议的启动与关闭,使用它完成邻居发现。

演示环境:如下9.32所示。

演示背景:在不配置第三层地址的情况下,

演示步骤:在上述演示环境中的交换机S1、S2、路由器R1上启动CDP协议(默认它就是启动的),不要为三台网络设备配置任何三层IP信息,然后查看CDP的运行状态,邻居状态,并取证CDP协议的数据帧,最后禁用CDP协议。


第一步:思科的设备默认情况下是启动CDP邻居发现协议,只要在网络设备上激活物理接口,它便开始工作,关于启动网络设备的物理接口配置如下:



CDP工作前提是所有网络设备的物理接口被激活:

S1(config)#interfacefastEthernet 0/1

S1(config-if)#noshutdown

S2(config)#interfacefastEthernet 0/1

S2(config-if)#noshutdown

R1(config)#interface e1/0

R1(config-if)#no shutdown

R1(config)#interface e1/1

R1(config-if)#no shutdown



第二步当完成上述配置后路由器R1上立即出现如下图9.33所示的提示消息,指示CDP发现双工不匹配现象,出现这种现象的原因是路由器的以太网接口是10MB半双工的接口,交换机是100MB快速以太网全双工接口,由于它们连接后,物理接口被激活,这个现实被CDP协议发现,所以给出如下提示,关于这种解释的证据可参看如下图9.34所示的关于路由器与交换机上发出在CDP协议数据帧的双工模式部分。注意,虽然CDP报告双工不匹配,但是对它们之间的正常通信并没有过多影响,所以可以通过在路由器或者交换机的全局模式下执行no cdp run来禁用CDP协议,设备就不会再报告双工不匹配的提示了,但是现在还不能禁用,因为还需要完成CDP其它的相关实验,我们将在演示的最后一步来禁用CDP协议。


  第三步:现在到路由器R1上通过指令show cdp neighbor来查看CDP的邻居状态,如下图9.35所示,路由器R1通过CDP协议成功的发现了邻居交换机S1和S2,其中每个字段的意义如下所示:

nDevice ID:设备ID指示邻居设备的主机名。

nLocal Intrfce本地接口指示邻居设备连接当前设备的接口。

nHoldtme保持时间指示在CDP邻居表中的邻居表项,能在表中的存活的时间,默认情况下,它是CDP间隔发送时间的3倍;但事实上,只要两个相邻设备的物理线路没有问题,相应的表项就不会消失,因为邻居设备的CDP消息每间隔60秒就会发送一次。

nCapability:指示连接的设备类型与支持的功能,R表示路由器;S表示交换机;I表示具备IGMP功能。

nPlatform:指示连接设备的具体型号,在该演示环境中指示路由器R1连接的是两台3640

nPort ID:指示邻居设备使用它本地的具体哪个接口与自己相连。

第四步:从上的过程可以看出,路由器R1与交换机S1和S2都没有配置第三层的IP地址,它们的CDP协议完全能正常运行,那是因为思科的CDP协议是一个独立于网络层的二层协议,该协议的一个初衷就是在网络层通信失败后,仍然可以发现邻居设备及相关的硬件参数。可以通过在路由器R1上执行show cdp 指令查看CDP协议的全局信息,如下图9.36所示,指示CDP的发送间隔为60秒;保持时间为180秒,正在使用CDP的2号版本。如果需要查看邻居更详细的信息,可在路由器R1上执行show cdp neighbor detail指令来查看邻居的详细信息,它比showcdp neighbor显示的信息更详细,其中包括了设备IOS软件的版本、VTP管理域、CDP版本、双工模式,如下图9.37所示。

第五步:现在来取证一个CDP协议的数据帧如下图9.38所示,从该数据帧中包括了固定的目标组播MAC地址,源MAC为CDP消息的发送设备的MAC地址。还包括了该设备的其它硬件与IOS软件信息。

第六步:在交换机S1上查看CDP的邻居信息,如下9.39所示,交换机S1只能看到它的直连邻居路由器R1,不能看到路由器R1后面的交换机S2CDP邻居信息,因为CDP协议只能发现直连邻居设备,不能实现传递性,所以在应用CDP时必须注意这一点。

第七步:当不需要运行CDP协议时,可以禁用网络设备上的CDP协议,禁用CDP协议分为两个层面的禁用;一是全局禁用,二是禁用某个网络接口的CDP功能;当全局禁用CDP时,网络设备所有接口的CDP功能将被禁用,如果是禁用某个网络接口的CDP功能,那么CDP只在该接口上禁用,其它没有禁用的CDP接口不受影响,关于该协议的禁用如下所示:


进行全局CDP功能的禁用:

R1(config)#no cdp run

在某个接口上禁用CDP功能:

R1(config)#interface e1/0

R1(config-if)#no cdp enable


你可能感兴趣的:(演示并取证:理解思科的邻居发现协议(CDP))