VACL配置说明

 一、VACL 简单介绍: 

VACL又称为VLAN访问映射表,应用于VLAN中的所有通信流。VACL支持基于ETHERTYPE和MAC地址的过滤。与基于CISCO IOS的路由映射表一样,VACL中条目的顺序并非无关紧要。目前, CATALYST6500系列交换机支持多种VACL操作:转发,丢弃,重定向。


二、配置步骤:


1. 指定VLAN访问映射表的名称和序列号: 
vlan access-map map_name [seq#]

2. 配置MATCH子句 
match ip address................................ 
3. 配置ACL操作 
action .................................................... 
4. 将VLAN 访问映射表应用于VLAN 
vlan filter map_map vlan_list list

三、举个例子:

confit t 
access-list 111 permit tcp any any eq ftp 
vlan access-map mm 100 
match ip address 100 
action drop 
exit 
vlan filter mm vlan-list 1

  有些刚接触ACL(Access Control Lists)的朋友听到VACL可能有些陌生,本文将对VACL在Cisco COS和IOS版本的交换机上的使用,进行一个比较全面的描述。
VACL(VLAN ACL)和定时访问列表、动态访问列表、自反访问列表一样都属于ACL扩展应用的一部分,它定义了基于三层以上的信息流量,而所对应的参数则用于两层的VLAN。VACL多是针对硬件中应用,比传统的路由器访问列表处理速度明显快得多。目前,Cisco 6000(Policy Feature Card,策略特性卡,如图1)、3750、3650、3550和2950G系列的交换机都支持VACL。

基于COS VACL的配置
VACL与普通的ACL相同,列表也是按照顺序进行匹配的。ACL号相同的所有ACL形成一个组,在判断一个数据帧时,使用同一组中的条目从上到下逐一进行判断,一遇到满足的条目就终止对该数据帧的判断。基本的配置方法如下:
1.配置ACL
Set security acl ip {acl_name} {permit |deny |redirect mod/port} {protocol} {sourceaddress mask} [op] [srcport] {dest mask} [op] [destport] [before editbuffer_index |modify editbuffer_index] [log]


Set security acl ip命令后面指定IP ACL的名字,后面是协议的说明和采取的措施。Permit|deny分别对应为:Permit是允许通过,deny是丢弃包。如果加上Redirect选项就代表不使用CAM(Content Addressable Memory),而把流量发送到交换机上一个指定的mod/port对应的端口上。对于COS的交换机来说,ACL直到被提交之前都首先写入一个特殊的缓冲区,并不作为交换机当前运行的条目,before和modify参数是指将配置的acl条目放到某条列表之前或者修改其参数。
2.写入到TCAM
在配置完ACL之后,它只在编辑缓冲区里面,我们必须通过commit security acl命令将配置写入到TCAM(ternary content addressable memory)。完整的命令参数如下:
commit security acl {name | all }
name 选项为只提交指定的名称列表(可以使用show security acl ip name editbuffer 查看编辑缓冲区内未被提交到内容的控制条目),all选项指提交所有未写入的VACL。
3.映射到VLAN
VACL与ACL都需要在提交之后把它们对应到作用对象上,如interface vlan1///ip access-group 101 out:这两句将access-list 101应用到vlan1接口的out方向。其中101是ACL号,和相应的ACL进行关联。out是对路由器该接口上哪个方向的包进行过滤,可以有in和out两种选择。COS VACL的配置同上面的道理一样,具体体现在:一个VLAN只能有一个VACL映射对其起作用,但一个VACL可以同时被多个VLAN同时调用。命令参数如下:
Set security acl map acl_name vlan

基于IOS VACL的配置
对于中小企业和校园网的用户来说,3750、3550和2950的交换机的数量相对较多,前面基于COS系统的VACL的配置并不具备普遍性。那么,我们将着重讲解基于IOS系统的交换机上VACL配置的方法。
配置不同的访问列表
1.基于编号的访问列表
标准IP访问控制列表:一个标准IP访问控制列表匹配IP包中的源地址或源地址中的一部分,可对匹配的数据包采取“拒绝”或“允许”两个操作。编号范围为1~99的访问控制列表是标准IP访问控制列表。命令格式:
router(config)#access-list [list number][permit | deny | remark][host/any][source address][wildcard-mask][log]
list number表示编号范围:1~99;permit/deny用来表示满足访问表项的报文是允许通过接口,还是要过滤掉;source address源地址;host/any表示为主机匹配地址,host表示一种精确的匹配,其屏蔽码为0.0.0.0,any表示任何主机。
扩展访问列表:扩展访问列表主要增加报文过滤能力,一个扩展的IP访问表允许用户根据内容过滤报文的源和目的地址的协议、端口以及特定报文字段。协议项定义了需要被过滤的协议,例如IP、TCP、UDP、ICMP等,协议选项是区别标准访问列表的特征之一。除此之外, 扩展的列表标号从100~199、2000~2699。语法如下:
router(config)#access-list Access-List-Number [ permit | deny ] [ Protocol | Protocol-Number ] source source-wildcard [ Source-Port ] destination destination-wildcard [ Destination-Port ] [ established ]
2.基于名称的访问列表
基于名称的访问列表遵守和编号IP访问控制列表一样的逻辑,名字可以更加容易地记住访问控制列表的功能,命名的列表允许使用超过99个标准控制列表和100个扩展控制列表。优于编号的控制列表的特点是可以删除特定的一条语句,而编号访问控制列表只能删除整个访问控制。语法如下:
router(config)#ip access-list {standard | extended} name
ip access-list {standard | extended} name表示要进入的name所指定的列表配置模式,所有的permit和deny操作都是进入到这个模式下进行配置的。
创建VLAN映射
VACL主要区别于标准ACL的作用方式,就是将已经创建好的ACL映射到一个VLAN上。创建映射分为三步:
(global) vlan access-map name [number]
(vlan-map) match ip address {aclname | aclnumber}
(vlan-map) action {drop | forward}
第一步vlan access-map后面的名字定义的时候最好有针对性或者提示性,而后续设置的子句都使用number选项。如果在这里进行了分组的设置,每一个子句都要经过匹配检测,直到没有发现匹配语句才丢弃分组。
执行完第一步实际上是进入了访问映射的配置模式。match ip address后面的参数是您在前面配置ACL的名称或编号。
第三步,交换机根据匹配ACL确定的匹配,action命令后面的参数才是代表流量是允许(forward)还是丢弃(drop)。
应用到交换机
之前的配置完成以后,最后需要用vlan filter命令把访问列表应用到交换机。格式如下:
(global) vlan filter mapname vlan-list list
Mapname参数对应的是vlan access-map命令创建的映射名称,list是vlan的序号。都配置完成以后可以利用show命令进行检查:
show ip access-lists [number | name]
show vlan access-map [mapname]
show vlan filter [access-map name | vlan vlan-id]
show ip interface type number

我们常说的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 10 //定义一个vlan access map,取名为test1  (10为序号,一般从10开始)
Switch(config-vlan-access)# match ip address 101 // 设置匹配规则为acl 101
Switch(config-vlan-access)# action forward // 匹配后,设置数据流转发(forward)或是 丢弃(drep)
Switch(config)# vlan access-map test2 10 //定义一个vlan access map,取名为test2  (10为序号,一般从10开始)
Switch(config-vlan-access)# match ip address 102 // 设置匹配规则为acl 102
Switch(config-vlan-access)# action forward // 匹配后,设置数据流转发(forward)或是 丢弃(drep)

第二步:应用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系列的交换机支持。

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系列的交换机支持。

VLAN访问控制列表(VACL)的配置方法
同普通的访问控制列表不同,VACL是用在VLAN内对数据进行过滤的,而前者是用在第三层接口对出入的数据包进行过滤,例如:在同一个VLAN内部,我们可能不允许其他主机对另一台主机进行访问,此时我们可以使用VLAN来实现,其配置方法如下:
1.创建VACL(是以映射表方式配置的)
Switch(config)#vlan access-map map-name [seq-number]
2.配置匹配条件
Switch(config-access-map)#match ip address {acl-num | acl-name}
3.定义行为
Switch(config-access-map)#action {drop | forward | redirect type mode/num}
4.应用VACL到VLAN
Switch(config)#vlan filter map-name vlan-list vlan-list
5.例如:在VLAN 2内禁止主机192.168.0.1访问VLAN内的其他主机
Switch(config)#access-list 101 permit ip host 192.168.0.1 192.168.0.0 0.0.0.255
Switch(config)#vlan access-map denyhost1 10
Switch(config-access-map)#match ip address 101
Switch(config-access-map)#action drop
Switch(config-access-map)#vlan access-map denyhost1 20
Switch(config-access-map)#action forward
Switch(config-access-map)#exit
Switch(config)#vlan filter denyhost1 vlan-list 2
同普通访问列表一样,VACL后面也有一条默认拒绝的语句,所以必须配置允许其他数据流(第五,六语句)

你可能感兴趣的:(配置说明,VACL)