最近常常碰到有人問起
Cisco
交換機上如何實現
VLAN
之間的訪問控制,通常我都會告訴對方,在三層交換機上直接把
ACL
應用到相應
VLAN
的虛端口就
OK
了,其實我本身也沒有機會去真正實踐過。眼下正巧有個項目涉及到這方面的需求,因而對如何實現
VLAN
之間的訪問控制仔細研究了一番,這才發現
VLAN
訪問控制列表(VACL)和
VLAN
之間的訪問控制列表其實在實現方式上是有很大不一樣的,雖然從字面上看二者差很少。
咱們常說的
VLAN
之間的訪問控制,它的實現方式是將
ACL
直接應用到
VLAN
的虛端口上,與應用到物理端口的
ACL
實現方式是同樣的。而
VLAN
訪問控制(
VACL
),也稱爲
VLAN
訪問映射表,它的實現方式與前者徹底不一樣。它應用於
VLAN
中的全部通訊流,支持基於
ETHERTYPE
和
MAC
地址的過濾,能夠防止未經受權的數據流進入
VLAN
。目前支持的
VACL
操做有三種:轉發
(forward)
,丟棄
(drop)
,重定向
(redirect)
。
VACL不多用到,在配置
時要注意如下幾點:
1)
最後一條隱藏規則是
deny ip any any
,與
ACL
相同。
2)
VACL
沒有
inbound
和
outbound
之分,區別於
ACL
。
3)
若
ACL
列表中是
permit
,而
VACL
中爲
drop
,則數據流執行
drop
。
4)
VACL
規則應用在
NAT
以前。
5)
一個
VACL
能夠用於多個
VLAN
中;但一個
VLAN
只能與一個
VACL
關聯。
6)
VACL
只有在
VLAN
的端口被激活後纔會啓用,不然狀態爲
inactive
。
下面,我以
Cisco3550
交換機做爲實例來詳細描述一下二者之間不一樣的實現方式。
網絡拓撲圖
網絡基本狀況是劃分了三個
vlan
:
vlan10
、
vlan20
和
vlan30
,
vlan
虛端口的
IP
地址分別爲
192.168.10.1/24
、
192.168.20.1/24
和
192.168.30.1/24
。
訪問控制要求:
vlan10
和
vlan20
之間不能訪問,但都能訪問
vlan30
。
(一)
經過
VLAN
之間
ACL
方式實現
********
配置
VLAN ********
Switch(config)# vlan 10 //
建立
vlan 10
Switch(config-vlan)# vlan 20
Switch(config-vlan)# vlan 30
Switch(config-vlan)# int vlan 10
Switch(config-if)# ip address 192.168.10.1 255.255.255.0 //
配置
vlan10
虛端口
IP
Switch(config-if)# int vlan 20
Switch(config-if)# ip address 192.168.20.1 255.255.255.0
Switch(config-if)# int vlan 30
Switch(config-if)# ip address 192.168.30.1 255.255.255.0
********
配置
ACL ********
Switch(config)# access-list 101 permit ip 192.168.10.0 0.0.0.255 192.168.30.0 0.0.0.255
Switch(config)# access-list 102 permit ip 192.168.20.0 0.0.0.255 192.168.30.0 0.0.0.255
********
應用
ACL
至
VLAN
端口
********
Switch(config)# int vlan 10
Switch(config-if)# ip access-group 101 in
Switch(config)# int vlan 20
Switch(config-if)# ip access-group 102 in
********
完畢
********
(二)
經過
VACL
方式實現
********
配置
VLAN ********
(同上)
********
配置
ACL ********
Switch(config)# access-list 101 permit ip 192.168.10.0 0.0.0.255 192.168.30.0 0.0.0.255
Switch(config)# access-list 101 permit ip 192.168.30.0 0.0.0.255 192.168.10.0 0.0.0.255
(不一樣之處:由於
VACL
對數據流沒有
inbound
和
outbound
之分,因此要把容許經過某
vlan
的
IP
數據流都
permit
才行。
VLAN10
容許與
VLAN30
通信,而數據流又是雙向的,因此要在
ACL
中增長
VLAN30
的網段)
Switch(config)# access-list 102 permit ip 192.168.20.0 0.0.0.255 192.168.30.0 0.0.0.255
Switch(config)# access-list 102 permit ip 192.168.30.0 0.0.0.255 192.168.20.0 0.0.0.255
********
配置
VACL ********
第一步:配置
vlan access map
Switch(config)# vlan access-map test1 //
定義一個
vlan access map
,取名爲
test1
Switch(config-vlan-access)# match ip address 101 //
設置匹配規則爲
acl 101
Switch(config-vlan-access)# action forward //
匹配後,設置數據流轉發(
forward
)
Switch(config)# vlan access-map test2 //
定義一個
vlan access map
,取名爲
test2
Switch(config-vlan-access)# match ip address 102 //
設置匹配規則爲
acl 102
Switch(config-vlan-access)# action forward //
匹配後,設置數據流轉發(forward)
第二步:應用
VACL
Switch(config)# vlan filter test1 vlan-list 10 //
將上面配置的
test1
應用到
vlan10
中
Switch(config)# vlan filter test2 vlan-list 20 //
將上面配置的
test1
應用到
vlan20
中
********
完畢
********
以上就是關於
VLAN
之間
ACL
和
VACL
的簡單配置實例。我我的認爲通常狀況下,經過
VLAN
之間
ACL
實現訪問控制比較方便,可是當
VLAN
的端口比較分散時,採用
VACL
相對而言就要簡單不少。不過使用
VACL
的前提是交換機支持此功能,目前可能只有
Cisco 3550
、
4500
和
6500
系列的交換機支持。
|
|