上一次的工程執行個體我們解決了CISCO3550交換機的某個端口下面如果隻連接配接了一台主機時的端口安全設定方法,即隻有指定的主機才能通路網絡,其它的主機(以MAC位址為唯一辨別)是無法通過CISCO的這個端口通路網絡,這種措施雖然有效,但是卻有一定的局限性,具體表現為CISCO3550交換機的很多端口下面是連接配接有交換機,而且還是普通的二層交換機,這也就相當于一個端口下面有多台主機通過,針對這種情況如何實作隻有指定的MAC位址的主機才能通過呢,最初我們還是想通過端口安全的相關指令來實作,但是發現效果不理想,隻是實作了限制連接配接主機數量的操作,如下所示:
一、限制連接配接主機的數量
我們通過一系列的實驗終于得到了一個結論,即如果CISCO3550的端口下面連接配接了一台二層交換機,以前我們使用采用的端口安全措施就不怎麼有效了,無法實作隻有指定的主機的MAC位址才能通過,最多隻能限制端口中通過的MAC位址數量的上限,比如我們最大允許5台主機通過CISCO3550交換機的第4端口,操作步驟如下:
3550#conf t
Enter configuration commands one per line. End with CNTL/Z.
3550(config)#inter fa0/4
3550(config-if)#switchport port-security
3550(config-if)#switchport port-security maximum 5
檢視端口4的目前配置如下
3550#show run inter fa0/4
Building configuration...
Current configuration : 146 bytes
!
interface FastEthernet0/4
switchport access vlan 66
switchport mode access
switchport port-security
switchport port-security maximum 5
end
這樣的設定也是屬于端口安全的一種,隻不過以上的操作是通過限制通過的主機數量來保護端口的帶寬,這在我們的工作實際中倒是也是這樣的需要,比如我們開通了一個機關的網際網路使用者,采用包月制,這樣就需要限制這個機關同時上網的主機數量,比如不能超過25台,就可以通過設定這樣設定“maximum”的值為“25”來實作。這種措施是有效的,但是距離我們的要求還有一定的距離,我們還是想實作即使是CISCO3550端口下面連接配接了一台普遍的二層交換機,也可以達到隻有指定的MAC位址的主機(若幹台主機)才可以通路網絡的目的。為了實作這種目标,我們轉換了思路,探索通過基于MAC位址的ACL(通路控制清單),結果發現這種方法是行之有效的,如下所示:
二、基于MAC位址的ACL來實作
下面的操作,網絡結構是相同的,隻不過思想更換為通過ACL來實作,我們以前設定的ACL多是基于IP位址,對于基于MAC的ACL設定較少,其實這兩類ACL的設定思路是一緻的,步驟如下。
(一)定義一個MAC位址通路控制清單并且命名該清單名為mac0215
#Switch(config)mac access-list extended mac0215
(二)定義MAC位址為1232.1251.2126的主機可以通路任意主機
#Switch(config) permit host 1232.1251.2126 any
#Switch(config) permit any host 1232.1251.2126
(三)進入配置具體端口模式
#Switch(config)interface fa0/4
(四)在該端口上應用名為mac0215的通路清單
#Switch(config)mac access-group mac0215 in
(五)顯示配置結果
Current configuration : 113 bytes
mac access-group mac0215 in
注意事項
在進行實際測試時發現了一個很有趣的現象,仔細對這個現象進行分析,也進一步加深了CISCO交換機工作原理的了解。我們寫好了基于MAC的ACL,如何來做測試,有兩套方案,一套是将cisco3550交換機第四端口上連接配接一台主機,将其MAC位址修改為1232.1251.2126,該主機可以正常通路網絡(利用帶t參數的ping指令來測試),更改為主機的MAC位址為其它值後ping指令顯示的結果馬上就中斷了,說明基于MAC的ACL是有效的。但是我們還通過另外一套方案進行了測試,即保持主機的MAC位址不變,通過修改ACL中permit的MAC的值來測試(如先no掉permit host 1232.1251.2126 any ,再寫入一條permit host 1232.1251.2127 any),這時就不是馬上不通了,而是會是一個10分鐘左右的時延。
為什麼會出現這個現象,因為交換機中MAC表有一個老化時間,由于我們這次是采取的在ACL中修改MAC值來指定,那麼ACL中的值與實際交換機檢測到端口所連接配接的主機MAC位址不一緻有一個時間差,在這個時間差之内那台主機還是可以通路網絡的,過了這個時間,就無法通路網絡了。