2011年10月5日 星期三

防止私接Switch的利器 - BPDU GUARD

今天客戶問我一個問題:

為什麼設定了Spanning-tree portfast還有spanning-tree bpduguard enable那個port不能接switch!?

回答這個問題之前,有三個名詞要先了解:
1.spanning-tree: 中文好像翻成生成樹,管它什麼翻譯,這個東西是Switch上的設定,設定上去後,Switch與Switch之間會相互溝通,避免網路迴圈(loop)狀況產生,缺點是剛接上switch的設備會需要30~50秒的時間…溝通…之後網路才會通。

2.portfast: 這是spanning-tree的進階設定,目的就是當確定網路port所連接的設備確定是終端設備,如印表機、PC、Server等時,不需要switch之間的spanning-tree那30~50秒的溝通,可以利用portfast跳過這個溝通時間。

3.BPDU:全面為bridge protocol data unit,為switch之間spanning-tree溝通的協定資料,只要有spanning-tree的環境就會有BPDU存在。

了解這三個名詞之後,再來看spanning-tree的進階設定"BPDUGUARD",我們知道bpdu是switch之間溝通spanning-tree的協定資料,那來防止bpdu的bpduguard就是防止switch之間溝通spanning-tree的保彪,問題是…為什麼要禁止spanning-tree呀??這不是防止loop發生的好機制嗎??

原因是spanning-tree是cisco switch預設的功能,只要開機就有啦!!所以只要把一台switch接到另一個swich就會發生spanning-tree的溝通。這時....BPDU GUARD的功就用產生了,可以用來避免人把swich接到自已的網路環境,因為只要一接上就會有bpdu協定資料出現,這時bpdu guard就會將該port error disable,來避免有人私接swich進網路環境。

聰明的您應該有發現,這有個前提,整個bpdu guard的保護只能保護會發送bpdu的switch,如果對方把spanning-tree關掉,或是非cisco swich,這個安全機制就破功啦@@

雖然如此,這還是一個很好的功能,比如說某天自已忘了,接了一台swich上去,更動了原本的STP架構,這不就糗了!!透過BPDU GUARD就是在避免STP被更動的危險狀況!!

最後…回到原將問題:
為什麼設定了Spanning-tree portfast還有spanning-tree bpduguard enable那個port不能接switch!?


因為spanning-tree bpduguard enable之後,會開啟spanning-tree的bpdu防護機制,避免swich之間有spanning-tree的溝通資料(bpdu),或者說,避免有人私接switch進來,因為當對方一接進來,該port會偵測到bpdu資料,此時已啟用bpdu guard的switch會自動將該port Error Disable。所以更正確一點的說法是,不能接會發送bpdu的switch進來,如果非cisco swich或是已關掉spanning-tree的swich還是可以接進來的。

2011年10月2日 星期日

Cisco 瘦AP加入Controller (Lightweight AP join the Controller)

如何把Thin AP (Lightweight  AP)加入Controller內?


最近常有機會在不同的環境將thin ap 加入controller裡面好讓controller控制,方法很多,到底環境要用什麼樣的方式來加呢?先了解ap如何與controller溝通,再依不同的環境選合適的方式。

Cisco 瘦AP加入Controller的順序依序如下:
1.區域廣播(Local IP Subnet Discovery):
原理:先用廣播的方式,找到環境內的Controller,也就是thin AP與Controller在同一個網段裡,這是最快也最簡單的方式。
方法:只要把AP插上電與網路即可。

2.空中廣播Over The Air Provisioning(OTAP):
原理:當從網路線上廣播找不到controller時,第二步透過空氣中的無線電廣播,找尋有沒有其它ap已經有controller的資訊,有的話就跟著去找到Controller
方法: 把AP放置在已加入controller的thin ap 附近。

3.Locally Stored Controller IP Address:
原理:如果從空氣中找不到其它AP的訊號,第三步就是找尋自已AP內是不是有設定過Controller的資訊?Controller 的IP地址,有的話即透過此IP地址去找Controller
方法:以console線接到ap,從CLI輸入下列指令
lwapp ap controller ip add x.x.x.x
上面指令即是告訴AP controller在哪裡,如果環境沒有dhcp先配方ip的話,需要先設定ip給thin ap,指令如下:
lwapp ap ip address x.x.x.x x.x.x.x

4. DHCP option 43:
原理:如果AP本身沒有設定Controller的IP資訊,接下來即找尋DHCP的option43資訊,是否有設定controller的位址,有的話即套用此IP位址與controller溝通
方法: 以cisco switch為例,設定dhcp 的option如下:
ip dhcp pool wireless
   network 192.168.1.x 255.255.255.0
   dns-server 192.168.1.x
   default-router 192.168.1.254
   option 43 hex f104.c0a8.a202
簡單說明option 43,option43是16進制的IP位址,所以在option43之前需指定hex(16進),而這16進的號碼是由Type + Length + Value 所組成。Type比較簡單,永遠是0xF1,只取F1為開頭。而Length就看有設定多少個IP位址,以IPv4來說,192.168.10.5是一個IP有四段,所以length為4,如果是兩個ip,比如192.168.10.5與192.168.10.6有兩個IP, length為8。最後Value就是把IP位址改成16進。
下面的例子是把192.168.10.5與192.168.10.20這兩個controller ip設定成option 43的格式:
option 43 hex f108c0a80a05c0a80a14

5. DNS Discovery:
原理:最後,DHCP沒設定option 43的話,就是看DNS有沒有指定Controller在哪?有的話即進行與controller的溝通。
方法: 即是在DNS上加入一比Recorder ,如下:
 CISCO-CAPWAP-CONTROLLER.localdomain  10.0.0.1
後面的localdomain為環境的網域名稱,上面紅色的部份是ap會找尋的固定名稱,需要一樣


當跑完上面五個流程都沒找到,就會從頭再來一次,直到找到controller為止,因為…thin AP沒辦法像FAT AP能夠勇敢、單獨的存在著。

所以可以簡單的把Thin AP 加入Controller的方式概分為兩種環境:
1.同一個網段裡: 這是最簡單的,即上面介紹的第一種方式區域廣播,只需要確認ap有電、有網路線即可。
2.不同網段裡:跨網段可以從上面2~4方式選一種,以簡單方便為主。