上一次的工程實例我們解決了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
(五)顯示配置結果
3550#show run inter fa0/4
Building configuration...
Current configuration : 113 bytes
!
interface FastEthernet0/4
switchport access vlan 66
switchport mode access
mac access-group mac0215 in
end
注意事項
在進行實際測試時發現了一個很有趣的現象,仔細對這個現象進行分析,也進一步加深了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地址不一致有一個時間差,在這個時間差之內那臺主機還是可以訪問網絡的,過了這個時間,就無法訪問網絡了。
原文鏈接:http://net.it168.com/a2011/0302/1161/000001161991.shtml