理解並演示:全局與接口的BPDUGuard功能是有重大區別的
關鍵提示:
1、理解BPDU Guard的意義(BPDU Guard在全局配置與接口配置上的區別)
2、通過實驗取證全局與接口上BPDU Guard的區別
理解BPDU Guard的意義(BPDU Guard在全局配置與接口配置上的區別)
BPDU Guard(BPDU保護),簡單的講它的意義就是一個不該接收BPDU的端口,比如被啓動了portfast的端口,一旦收到BPDU報文,那麼BPDU保護功能將會立即關閉該端口,並將端口狀態置爲error-disabled狀態。BPDU Guard的配置分爲全局型的配置和接口級的配置,注意這兩種配置將帶來一些不同的效果。
全局配置BPDU Guard
全局配置BPDU Guard將使用spanning-tree portfast bpduguard default的全局配置命令,能過命令不難看出,全局配置BPDU Guard功能是必須依附於portfast而存在的,因爲一個被規劃爲portfast的端口默認情況下是不應該連二層接橋接類設備,一般用戶連接桌面機和服務器,那麼這樣的端口是不應該接收BPDU報文的,如果在全局配置了BPDUGuard功能,當portfast端口一旦收到BPDU報文,那麼該端口將被關閉並轉入error-disabled狀態。
在接口上的BPDU Guard配置
在接口模式下配置BPDU Guard是通過spanning-tree bpduguard enable接口配置命令來完成,注意在接口模式下啓動BPDU Guard功能,不需要依賴portfast而存在,換言之,在接口模式下啓動BPDU Guard功能時,無論該接口是一個什麼接口,是否是portfast接口這些都不重要,只要管理員認爲該接口不應該接收BPDU報文,那麼就可以在接口上配置BPDUGuard功能,一旦這個接口被啓動BPDUGuard功能後,它接收到BPDU報文,那麼那麼該端口將被關閉並轉入error-disabled狀態。
注意:一旦某個端口被轉入error-disabled狀態,必須通過管理員手工重啓並恢復該接口!
如果在某些時候,出現這樣一個題目:某臺交換機由於某種原因在一些連接桌面機或者服務器的接口上是沒有啓動portfast功能的,此時需要一種保護機制,當這些端口一旦收到 BPDU報文就將被關閉被轉入error-disabled狀態,請問應該使用一種什麼配置?回答是在接口上通過spanning-treebpduguard enable來完成。因爲接口上的BPDU保護是不需要依賴於portfast功能的。
演示:BPDU Guard在全局與接口上的配置
演示目標:
ü 測試全局模式下BPDU Guard的功能
ü 測試接口模式下BPDU Guard的功能並區別全局配置
演示環境:如圖所示
演示背景:爲了更好的測試BPDU Guard的效果,就必須存在一臺能發送BPDU的設備,爲了測試方便,筆者在如圖所示的環境中將S2和S3引入作爲發送BPDU的設備,爲了讀者全程的看到BPDU Guard檢測行爲的完整效果,建議實驗人員首先將交換機S2和S3相應端口的交換功能關閉(no switchport),這樣在初始狀態由於交換功能被關閉就不再發送BPDU,然後在S1對BPDU Guard配置完成後,再到S2或者S3上逐個端口下啓動交換機功能(switchport),使其產生BDPU報文的發送來檢測S1的BPDU Guard功能。
演示步驟:
第一步:在S2的e0/0-3的接口範圍和S3的e1/0上關閉交換功能,先不讓其發送BPDU報文,具體配置如下:
關閉交換機S2的E0/0-3的交換功能:
S2(config)#interface range e0/0-3 * 進入S2的E0/0-3的接口範圍
S2(config-if-range)#no switchport * 關閉交換功能,暫時就會在該接口上發送BPDU報文
S2(config-if-range)#no shutdown * 確保端口被激活
S2(config-if-range)#exit
關閉交換機S3的E0/0的交換功能:
S3(config)#interface e1/0 * 進入S3的E0/0的接口
S3(config-if)#no switchport * 關閉交換功能,暫時就會在該接口上發送BPDU報文
S3(config-if)#no shutdown * 確保端口被激活
S3(config-if)#exit
第二步:現在首先來測試全局模式下BPDU Graud的效果,注意全局模式下的BPDU Graud是需要依賴於portfast存在的,所以應該先將交換機S1的所有端口配置爲接入模式,並在所有端口上啓動portfast功能,具體配置如下:
將交換機S1的所有端口規劃到接入模式並啓動portfast端口:
S1(config)#interface range e0/0-3 * 接入模塊0的e0/0-3的接口範圍
S1(config-if-range)#switchport mode access * 將該接口範圍配置爲接入模式
S1(config-if-range)#no shutdown * 激活該接口範圍
S1(config-if-range)#exit
S1(config)#interface range e1/0-3 * 接入模塊1的e1/0-3的接口範圍
S1(config-if-range)#switchport mode access * 將該接口範圍配置爲接入模式
S1(config-if-range)#no shutdown * 激活該接口範圍
S1(config-if-range)#exit
S1(config)#spanning-tree portfast default * 將所有接入端口配置爲portfast接口
%Warning: this command enables portfast by default onall interfaces. You *這部分是系統給出啓動portfast後,注意防環的提示
should nowdisable portfast explicitly on switched ports leading to hubs,
switches andbridges as they may create temporary bridging loops.
當完成上述的配置後,可以通過在交換機S1上執行show spanning-tree如圖所示,可以看出當前的portfast配置生效,因爲該交換機的所有端口都是Edge(邊緣端口),從某種意義上講,這裏的邊緣端口就是portfast。
在交換機S1上通過全局命令配置BPDUGuard功能:
S1(config)#spanning-treeportfast bpduguard default *在所有portfast端口上啓動BPDU Guard
在全局啓用BPDU Guard必須要依賴於portfast存在!接下來開始檢測S1全局BPDU Guard功能的效果,在交換機S2的e0/0開啓交換功能,當交換機功能開啓時,交換機S2將會向S1發送BPDU報文,這樣就可以觸發交換機S1上配置的BPDUGruad功能。
在交換機S2的e0/0開啓交換機功能:
S2(config)#intee0/0
S2(config-if)#switchport *開啓交換功能,此時發始像S1發送BPDU
當交換機S2的E0/0接口的交換功能開啓時,再次切換到交換機S1的控制檯,很快就可以看到如下所示的系統提示,內容的大致意思是:交換機S1的e0/0被啓動了BPDU保護功能,但是此時它正在接收BPDU報文,所以該端口正在被禁用,狀態被轉爲error-disabled,E0/0端口被關閉。
%SPANTREE-2-BLOCK_BPDUGUARD: Received BPDU on portEthernet0/0 with BPDU Guard enabled. Disabling port.
%PM-4-ERR_DISABLE: bpduguard error detected on Et0/0,putting Et0/0 in err-disable state
%LINEPROTO-5-UPDOWN: Line protocol on InterfaceEthernet0/0, changed state to down
%LINK-3-UPDOWN: Interface Ethernet0/0, changed state todown
此時管理員可以通過在交換機S1上執行show inte e0/0查看接口的狀態,如圖所示,E0/0的物理狀態和線路屬性狀態被關閉,而且被轉爲error-disabled。如果需要解除E0/0的error-disabled就需要管理手工恢復並激活該端口。這就是BPDU Guard全局的作用。此時用戶可以通過在S1上執行showspanning-tree summary totals來查看生成樹的參數,如圖所示,指示在portfast接口上已經啓動了BPDU保護功能。
第三步:現在來測試在接口上BPDU Gruad的效果,首先進入S1的E1/0接口,將該接口從portfast功能中脫離出來,因爲接口級的BPDU Gruad不需要依賴portfast功能,具體配置如下所示:
首先將S1的E1/0接口從portfast功能中脫離出來:
S1(config)#intee1/0
S1(config-if)#spanning-treeportfast disable * 禁用該接口的portfast功能
S1(config-if)#exit
在完成上面禁用E1/0的portfast功能後,可以通過show spanning-tree interface e1/0查看當前端口已經回退到常規的生成樹端口類型中,如圖所示。
此時在交換機S3上的e1/0接口上通過switchport來開啓交換機功能,讓S3的E1/0發送BPDU報文,由於目前暫時還沒有在S1的E1/0接口上啓動BPDUGurad功能,並且該端口也不再屬於portfast端口,所以它S1上全局的BPDU Gurad配置不會限制S1的E1/0,所以在這種情況下,S1的E1/0即便是收到BPDU報文,也不會關閉端口,具體如圖所示。確定S1的E1/0端口工作正常後,請再次在S3上的E1/0上關閉交換機功能(no switchport),爲後面的測試做準備。
在S1的E1/0接口上啓動BPDU保護功能:
S1(config)#intee1/0
S1(config-if)#spanning-treebpduguard enable * 在接口上啓動BPDU Gruad功能
S1(config-if)#exit
現在開始來測試S1的E1/0接口上的BPDU Gruad效果,請在S3的E1/0接口上啓動交換功能(switchport),其目的是爲了讓S1的E1/0發送BPDU報文,由於S1的E1/0接口上啓動了BPDU保護功能,所以在交換機S1的控制檯上系統會給出如下提示,此時可以在交換機S1上通過show intee1/0查看該接口的狀態,如圖所示,該接口被關閉並轉入error-disabled狀態。
交換機S1的E1/0被關閉並轉入error-disabled狀態:
%LINEPROTO-5-UPDOWN: Line protocol onInterface Ethernet1/0, changed state to down
%LINEPROTO-5-UPDOWN: Line protocol onInterface Ethernet1/0, changed state to up
%SPANTREE-2-BLOCK_BPDUGUARD: ReceivedBPDU on port Et1/0 with BPDU Guard enabled. Disabling port.
%PM-4-ERR_DISABLE: bpduguard errordetected on Et1/0, putting Et1/0 in err-disable state
%LINEPROTO-5-UPDOWN: Line protocol onInterface Ethernet1/0, changed state to down
%LINK-3-UPDOWN: Interface Ethernet1/0,changed state to down
注意:通過在全局和接口實施BPDU保護功能,可看出全局的BPDU保護必須依賴於portfast存在,而接口的BPDU保護可以獨立於portfast在任意類型的端口上進行申明。