VLAN之间ACL和VACL的区别

最近常常碰到有人问起 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 系列的交换机支持。
 原文地址 [url]http://musheng.org/ghccms/article/2007/0214/article_381.html[/url]
相关文章
相关标签/搜索