分享

STP保护——root guard、BPDU guard、loop guard

 tcwl123 2012-03-30
【转】STP保护——root guard、BPDU guard、loop guard
2010-10-26 15:38
转载自 mr_lenson
最终编辑 mr_lenson
STP也可能遭受到各种类型的攻击,所以STP的保护工作也非常重要
对接入端口的保护:Root GuardBPDU Guard
对于接入端口而言,可能临时新连接一台交换机在其下,而这可能会引起STP拓扑不必要的变化。要防止此问题,可以在接入端口激活BPDU GuardRoot Guard来监控是否有BPDU进入。它们的基本操作如下:

1BPDU Guard:在每个或者单个端口上激活;如果接收到任何BPDU,该端口即被屏蔽。用来防止对交换机STP的DOS攻击,需要配置errdisable后可自动恢复。

#errdisable recovery cause bpduguard

#errdisable recovery interval 30 指定errdisable关闭的端口恢复的时间

扩展:spanning-tree portfast bpduguard 命令作用是将所有配置了portfast的端口启用bpduguard

2Root Guard:在每个或接收到优先级更高BPDU的端口上激活;如果启用root guard端口收到优先级更高的BPDU报文则端口会被置为root-inconsistent状态,这种状态类似于listen状态,忽略任何优先级更高的BPDU,这样可以阻止连接在此端口的交换机成为根交换机。无需配置即可自动恢复,但是前提是在3个周期也就是6秒内没有再接收到优先级更高的BPDU报文。
命令:全局或者端口下 spanning-tree rootguard
对中继端口的保护:UDLDLoop Guard
对于中继端口而言,最主要的问题是要避免因为单向(Unidirectional)链路(链路一端失败,可能是因为一端接插问题而引起)的存在而导致交换机端口错误地从阻塞状态转换到转发状态。解决这个问题的办法是:UDLD(两种模式)和Loop Guard,具体操作如下:
1UDLD:使用第二层消息来决定什么时候交换机不再由邻接交换机接收帧,交换机未失败的传输接口置为错误屏蔽状态。配置后可自动恢复。
2UDLD aggressive mode:当接收不到另一交换机消息时,先试图重连(8次),如果仍然没有反应,那么两端都置为错误屏蔽状态。配置后可自动恢复。

3Loop Guard:当接收不到正常的BPDU时,端口不再进行正常的STP收敛,而是进入STP环路冲突(loop-inconsistent)状态。无需配置即可自动恢复。

BPDU保护
BPDU 保护仅用在PortFast模式。它被网络设计者用来加强STP域边界。从而保持与其的活动拓扑。在启用STP PortFast端口之后的设备被禁止影响STP拓扑。对于配置了portfast特性的接口,它不应当接收到BPDU,如果配置了PortFast特性 的接口接收了BPDU,那就表示了无效的配置,可能就会产生桥接环路,通过配置BPDU保护后,配置了PortFast的端口如果收到BPDU将会把端口 状态调整到Err-Disable.如下是一个信息: 
2000 May 12 15:13:32 %SPANTREE-2-RX_PORTFAST:Received BPDU on PortFast enable port. Disabling 2/1 
2000 May 12 15:13:32 %PAGP-5-PORTFROMSTP:Port 2/1 left bridge port 2/1 
如 下图所示,A的优先级为8192,为该vlan的根桥,B的优先级为16384,为备份根桥,B和A之间的链路为Gbit/s链路,C是一个接入交换机, 并在连接到设备D得端口上设置了PortFast.其他的STP参数都是默认值,网桥C上连接到网桥B得端口处于STP阻塞状态。设备D(PC)不参与 STP。正确的BPDU流向,如下左图 

   如果D为一台基于Linux的软件网桥,可以发送BPDU报文,并将自身BID的优先级设置为0,此时,D将成为根桥,故BPDU流向变为右图, A,B间的Gbit/s链路被阻塞,通过C走100Mbit/s链路。此时会超负载出现丢包的情况, BPDU保护的目的就是基于这种情况,防止接入设备对整个网络拓扑的影响。 
   配置过程:
     方法一:全局配置模式
1) 全局配置模式 configure terminal
2) 配置BPDU保护
     (config)#spanning-tree portfast bdpuguard default
3) 进入接口模式 interface 接口
4) 接口使能portfast,BPDU保护才能启用
     (config-if)#spanning-tree portfast
方法二:接口模式
1) 接口模式下 interface 接口
2) 使能BPDU保护
    (config-if)#spanning-tree bpduguard enable
   验证过程:
    show running-configure


BPDU过滤(BPDU Filtering)
通 过使用BPDU过滤功能,将能够防止交换机在启用了PortFast特性的接口上发送BPDU。对于配置了PortFast特性的端口,它通常连接到主机 设备,因为主机不需要参与STP,所有它将丢弃所接收到的BPDU。通过使用BPDU过滤功能,将能够防止向主机设备发送不必要的BPDU。
   交换机支持以每个端口或者整个交换机配置BPDU过滤。
   如果全局配置了BPDU过滤功能,但当某个端口接收到了任何的BPDU,那么交换机将把接口更改回正常的STP操作,也就是它将禁用PortFast和BPDU过滤特性。
   如果在接口上明确配置了BPDU过滤功能,那么交换机将不发送任何的BPDU,并且将把接收到的所有BPDU都丢弃。
   注意,如果在链接到其他交换机的端口上配置了BPDU过滤,那么就有可能导致桥接环路,所以在部署BPDU过滤时要格外小心,一般我们不推荐使用BPDU过滤。
   如果在与启用了BPDU过滤的相同接口上配置了BPDU保护,因为BPDU过滤的优先级高于BPDU保护,所以BPDU保护将不起作用。
配置过程:
     方法一:全局配置模式
1) 全局配置模式 configure terminal
2) 配置BPDU保护
    (config)#spanning-tree portfast bdpufilter default
3) 进入接口模式 interface 接口
4) 接口使能portfast,BPDU保护才能启用
    (config-if)#spanning-tree portfast
方法二:接口模式
1) 接口模式下 interface 接口
2) 使能BPDU保护
    (config-if)#spanning-tree bpduguard enable
   验证过程:
    show running-configure

根保护
传统的802.1D STP没有给网络管理员提供确保交换式第2层网络拓扑安全。如下图,当新接入的
交换机优先级更低,将抢占原有的根网桥。
根保护的目的是确保启用了根保护的端口成为指定端口。通常一个根桥的所有端口均为指定端口。
除非连接到两个或多根网桥的端口。如果网桥在启用根保护的端口上收到一个较好的 STP BPDU。这个
端口进入STP的根不一致状态, 不会有流量通过该端口。
   如下拓扑:
   A 和 B 为分布层 SW,C 为接入层 SW,根为 A。当在 C 下面再接一台 SW时,由于D的优先级或MAC地址可能比其它要低,可能会使D成为Root SW,从而使得从A 到达B的流量不能直接发送到B,而得使用C来转发,这样很不合理(A 和 B 之间为千兆)。为了避免这种情况,可以在C的下联端口上使用Root Guard,以防止该端口成为Root Port,从而防止D成为Root SW,确保A永远为 Root SW。使用Root Guard 后,SW D接入网络后,C的下联D的端口会收到一个更新的BPDU(前提是D的优先级最高)后,C将该端口转为Block状态,直到D不在发送新的BPDU或更改 D的优先级。

当一个根保护端口阻塞一个端口时,控制台将会显示如下消息:
%SPANTREE-2-ROOTGUARDBLOCK: Port 1/1 tried to become non-designated in VLAN 77. Moved to root-inconsistent state 
   注意,在一个端口上起用了根保护,会作用于该端口所属的所有VLAN。不要再一个起用了UplinkFast特性的端口上启用根保护。游乐 UplinkFast,在出现故障时备份端口(处于阻塞状态)会代替根端口。但是,如果也启用了根保护,所有使用UplinkFast特性的备份端口将被 置于根不一致(阻塞)状态,使其无法进入转发状态。
    配置过程:
1) 进入接口模式 interface 接口
2) 启用根保护
    spanning-tree guard root
3) 验证过程
    show running-config interface 接口
    show spanning-tree inconsistentports 
显示端口不一致(阻塞)状态的信息

环路保护
换路保护能够对第2层转发环路(STP环路)提供额外的保护。当冗余拓扑中的STP阻塞端口错误地过渡到转发状态的时候,就将发生桥接环路。
如 下图:交换机A是根交换机。因为交换机B和C之间的链路发生单向链路失效,交换机不能从交换机B接收BPDU。如果没有启用环路保护特性,那么交换机C在 最大寿命计时器到期之后,交换机C上的STP阻塞端口将转换到STP监听状态,并最终会在两倍的转发延迟时间之后转换到转发状态。当交换机C的源阻塞端口 进入到转发状态的时候,交换机B的源指定端口还处于转发状态,这个拓扑中没有阻塞端口,而产生了环路。

如果启用了环路保护特性之后,当最大寿命计时器到器之后,交换机C上的阻塞端口将过渡到“不一致环路”状态,如下图,如果端口处于“不一致环路”状态,它就不能传递任何数据流量,因此,网络也就不能产生桥接环路。“不一致环路”状态等效于阻塞状态。

在 非指定端口上使用 Loop Guard。防止环路产生。避免上于处于 Block 端口的 SW 在Max_age 时间内接收不到对方(邻居)的 BPDU 而将端口状态转为 Listen->Learning->Forward 状态。使用Loop Guard 后,等接收不到对方的BPDU消息后,将端口Block状态转为Loop-inconsistent(环路不一致)状态,从而避免产生环路。 
如果使用Loop Guard,那么Root Guard将会被关闭。两者不能同时启用
配置过程:
     方法一:全局配置模式
1) 全局配置模式 configure terminal
2) 配置环路保护
    (config)#spanning-tree portfast loopguard default
方法二:接口模式
1) 接口模式下 interface 接口
2) 使能环路保护
    (config-if)#spanning-tree guard loop
   验证过程:
show running-configure
show spanning-tree active
show spanning-tree interface 接口 detail
-------------------------------------------------------------------
Port 23 (FastEthernet0/23) of VLAN0001 is forwarding
   Port path cost 19, Port priority 128, Port Identifier 128.23.
   Designated root has priority 32769, address 000b.5f2c.2080
   Designated bridge has priority 32769, address 000b.5f2c.2080
   Designated port id is 128.23, designated path cost 0
   Timers: message age 0, forward delay 0, hold 0
   Number of transitions to forwarding state: 1
   Link type is point-to-point by default
   Loop guard is enabled on the port
   BPDU: sent 2709, received 5


 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多