صادق شعبانی
کارشناس ارشد سیسکو

آموزش راه اندازی BPDU Guard در سویچ سیسکو

در سری سناریو های سیسکو امروز می خواهیم به آموزش راه اندازی BPDU Guard  بپردازیم. ابتدا سناریو را تشریح می کنیم و روش حل مسئله را باز می کنیم و با هم این سناریو را انجام می دهیم : قبلا" در خصوص فیچر portfast صحبت کرده بودیم ،قبلا" گفته شد که up و down شدن این پورتها ی متصل به کلاینت ، یک تغییر از نوع DIRECT است که باعث ایجاد فاز همگرایی و ارسال TCN می شود و این در حالی بود که از سمت کلاینت ها هیچ bpdu ای دریافت نمی شد

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

و این تغییرات جزئ تغییرات INSIGNIFICANT بود ، حال که از سمت کلاینت ها هیچ BPDU ای دریافت نمی شود پس میتوان از حالت های میانی LISTEN و LEARN چشم پوشی کرد.فیچر PORTFAST دقیقا" همین کار را برای ما انجام می داد ، روی یکسری پورت ها که ما آنها را برای کلاینت ها در نظر گرفته بودیم ، به سوئیچ می گفتیم از این دو وضعیت چشم پوشی و اگر پورت مربوطه UP شد بلافاصله از بلاکینگ وارد وضعیت FORWARDING شود.

اما نکته اینجاست که اگر روی پورتهایی که روی آنها PORTFAST فعال شده ، یک سوئیچ متصل شود ، چون این پورتها وضعیت های میانی را طی نمی کنند ممکن است باعث ایجاد موقتی LOOP شود.جهت جلوگیری از این موضوع ما در کنار فیچر PORTFAST که روی پورتهای ACCESS استفاده می کنیم از فیچر BPDU GUARD هم استفاده می کنیم تا اگر احیانا" روی آن پورتها هر نوع BPDU ای ( خوب یا بد ) دریافت شد بلافاصله آن پورت به وضعیت ERROR-DISABLE برود.

1

در سناریو فوق IOU1 بعنوان سوئیچ روت در نظر گرفته شده است.

IOU1(config)#SPANning-tree VLAN 1 ROOT PRimary 
IOU1(config)#
IOU1#
IOU1#
IOU1#SHOW SPAnning-tree 
VLAN0001
  Spanning tree enabled protocol ieee
  Root ID    Priority    24577
             Address     aabb.cc00.0100
             This bridge is the root
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec

  Bridge ID  Priority    24577  (priority 24576 sys-id-ext 1)
             Address     aabb.cc00.0100
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time 15 

Interface           Role Sts Cost      Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Et0/0               Desg FWD 100       128.1    Shr 
Et0/1               Desg FWD 100       128.2    Shr 

Et1/0               Desg FWD 100       128.33   Shr 
Et1/1               Desg FWD 100       128.34   Shr

فعال کردن فیچر PORTFAST روی پورت هایی که برای کلاینت ها در نظر گرفته شده است.

IOU3(config)#INterface RANge ETHernet 1/0-3
IOU3(config-if-range)#SWItchport MODE ACCess 
IOU3(config-if-range)#SPANning-tree PORTFASt 
%Warning: portfast should only be enabled on ports connected to a single
 host. Connecting hubs, concentrators, switches, bridges, etc... to this
 interface  when portfast is enabled, can cause temporary bridging loops.
 Use with CAUTION

کامند مربوط به فعال کردن BPDUGuard در اینترفیس های مربوطه

IOU3(config-if-range)#SPAnning-tree BPDUGuard ENABle 
IOU3(config-if-range)#

همانطور که دیدیم پس از فعال کردن فیچر PORTFAST به ما یک هشدار مبنی بر اینکه مراقب باشید این پورتها را به سوئیچ و خانواده آن متصل نکنید ، داد.

%Warning: portfast should only be enabled on ports connected to a single
 host. Connecting hubs, concentrators, switches, bridges, etc... to this
 interface  when portfast is enabled, can cause temporary bridging loops.
 Use with CAUTION

ما از کامند DEBUG استفاده می کنیم :

IOU3#DEBug SPANning-tree EVents 
Spanning Tree event debugging is on
IOU3#

توجه شود که در محیط GNS من از IOU های روتر استفاده کرده و تنها SYMBOL آنها را تغییر داده ام.

IOU5(config)#INTerface ETHernet 1/0
IOU5(config-if)#NO SHUtdown 
IOU5(config-if)#
*Dec 21 07:04:14.317: %LINK-3-UPDOWN: Interface Ethernet1/0, changed state to up
*Dec 21 07:04:15.327: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet1/0, changed state to up
IOU5(config-if)#EXIT
IOU5(config)#


IOU6(config)#INTerface ETHernet 1/1
IOU6(config-if)#NO SHUtdown 
IOU6(config-if)#
*Dec 21 07:05:44.724: %LINK-3-UPDOWN: Interface Ethernet1/1, changed state to up
*Dec 21 07:05:45.731: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet1/1, changed state to up
IOU6(config-if)#

شکی نیست که اگر یک PC روی یک پورت PORTFAST روشن شود ، آن پورت از وضعیت بلاک بدون گذر از وضعیت های میانی بلافاصله FORWARD می شود.

IOU3(config)#INTerface ETHernet 1/0
IOU3(config-if)#SHUtdown 
IOU3(config-if)#NO SHUtdown 

*Dec 21 07:08:26.175: set portid: VLAN0001 Et1/0: new port id 8021
*Dec 21 07:08:26.175: STP: VLAN0001 Et1/0 ->jump to forwarding from blocking

بخاطر محدودیت های GNS ، برای شبیه سازی فیچر PORTFAST ، من یک پورت متصل به کلاینت را خاموش و سپس روشن کردم ، همانطور که می بینید این پورت بدون گذر از وضعیت های میانی به وضعیت FORWARD رفت.حال من پورت ETH1/0 از IOU3 را که به کلاینت متصل بود به یک سوئیچ دیگر متصل میکنم

2

به log هایی که داده شد نگاه کنید

IOU3#
*Dec 21 07:15:45.103: %SPANTREE-2-BLOCK_BPDUGUARD: Received BPDU on port Ethernet1/0 with BPDU Guard enabled. Disabling port.
*Dec 21 07:15:45.103: %PM-4-ERR_DISABLE: bpduguard error detected on Et1/0, putting Et1/0 in err-disable state
IOU3#
*Dec 21 07:15:46.107: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet1/0, changed state to down
IOU3#
*Dec 21 07:15:47.103: %LINK-3-UPDOWN: Interface Ethernet1/0, changed state to down
IOU3#

از ظواهر امر پیداست که پورت eth1/0 به وضعیت err-disable state رفته است.می توانیم از کامند زیر برای مشاهده اینترفیس هایی که به وضعیت err-disable state رفته اند استفاده کنیم.

IOU3#show INTerfaces STAtUS ERr-disabled 

Port      Name               Status       Reason
Et1/0                            err-disabled bpduguard
IOU3#

توجه به یک نکته مهم است ، استفاده از کامندی مثل کامند زیر

IOU3#SHOW IP INT BRief 
Ethernet1/0            unassigned      YES unset  down                  down    

تنها به ما می گوید پورت down شده است و اگر اطلاعات بیشتری در این خصوص بخواهیم

IOU3#show interfaces ethernet 1/0
Ethernet1/0 is down, line protocol is down (err-disabled)

می بینیم که این پورت در وضعیت err-disabled است ، حال برای اینکه یک پورت از این وضعیت خارج شود باید یکبار آن پورت را خاموش و سپس روشن کنیم اما باید توجه داشته باشیم که این کار را پس از اینکه ارتباط عامل error-dis را قطع کردیم باید انجام دهیم.یعنی ، نخست ارتباط سوئیچ مزبور باید قطع شود :

3

حالا باید یکبار این پورت را خاموش و سپس روشن کرد

IOU3#show interfaces statUS ERr-disabled 

Port      Name               Status       Reason
Et1/0                            err-disabled bpduguard
IOU3#
IOU3#CONF T

IOU3(config)#INTerface ETHernet 1/0
IOU3(config-if)#SHUTdown 
IOU3(config-if)#NO SHUtdown 
IOU3(config-if)#

*Dec 21 08:34:36.915: %LINK-5-CHANGED: Interface Ethernet1/0, changed state to administratively down
IOU3(config-if)#
*Dec 21 08:34:37.515: set portid: VLAN0001 Et1/0: new port id 8021
*Dec 21 08:34:37.515: STP: VLAN0001 Et1/0 ->jump to forwarding from blocking
IOU3(config-if)#
IOU3(config-if)#EXIT
*Dec 21 08:34:39.503: %LINK-3-UPDOWN: Interface Ethernet1/0, changed state to up
*Dec 21 08:34:40.507: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet1/0, changed state to up
IOU3(config-if)#EXIT
IOU3(config)#EXIT
IOU3#

IOU3#show interfaces statUS ERr-disabled 

IOU3#
IOU3#show interfaces ethernet 1/0       
Ethernet1/0 is up, line protocol is up (connected)   

البته می توان از روش های دیگری هم پورت را از وضعیت ERROR-DIS خارج نمود که در یک CISCO LAB درباره این موضوع صحبت خواهیم کرد.


صادق شعبانی
صادق شعبانی

کارشناس ارشد سیسکو

صادق شعبانی ( هکر قانونمند ، مهندس مایکروسافت ، کارشناس ارشد سیسکو ) : انسانی که کنار میکشه هیچوقت پیروز نمیشه و انسانی که پیروز میشه هیچوقت کنار نمی کشه.

نظرات