交换机ACL配置
1.ACL定义:
ACL(Access Control List)指访问控制列表,通常用来规划网络中的访问层次.以期达到优化网络流量,加强网络安全的作用.ACL可以通过Web方式或者命令行方式配置,一般推荐使用命令行方式.因为每一张ACL都是由具体的一条条规则组成,命令行配置方式更有助于管理员在配置时理清思路.常用方法是先将命令用写字板输入好,检查无误后再导入交换机,绑定在具体的端口上.
ACL可以绑定在物理端口上,也能绑定在虚拟接口上,如Vlan接口.
ACL配置的命令格式:
在全局配置模式下
: access-list 名称> permit/deny <协议类型> <源IP地址> <源地址掩码> <目的IP地址> <目的地址掩码>
进入接口配置模式,绑定已配置的ACL:
interface vlan 1
ip access-group 名称>
或者:
interface ethernet 1/g24
ip access-group 名称> in 1
2.配置ACL的注意事项:
(1)每个ACL表的末尾都会隐含”deny”语句, 从而丢弃所有不符合规则的包;
(2)源和目的的地址位掩码配置中,“0”代表精确匹配,”1”代表忽略该位.如允许来自192.168.1.0/24网段机器的访问,则其掩码是0.0.0.255;而针对具体主机的掩码,则是0.0.0.0;
(3) 具有严格限制条件的语句应放在访问列表所有语句的最上面;
(4)系统是按照顺序一条条去匹配ACL的规则,当发现匹配的规则后,它将忽略掉后面的语句;而如果发现ACL里所有语句均不匹配,那么默认将丢掉该数据包;
(5).ACL所包含的规则在精不在多;配置具体规则时不光需要考虑该规则是否影响数据包传送,还必须考虑数据包能否返回.
(6)ACL一旦绑定到具体端口上时,即可生效,所以以后每次对该ACL表做的任何更改,也就会立即生效;如果配置错误的规则就会对整个网络访问产生影响;
(7)同一接口可以绑定多个ACL,此时需要给每个ACL设置相应的优先级;
3.下面我们以实例加以说明:
假定客户划分了Vlan 3和Vlan 5两个虚网,IP地址段分别是192.168.3.0/24和192.168.5.0/24,如下面针对Vlan3配置了名为”test”的ACL,使得其他网段的机器只能通过ICMP访问Vlan3.比如只能Ping通Vlan3的机器,但是无法正常访问.
console(config)#access-list test permit icmp any 192.168.3.0 0.0.0.255
console(config)#access-list test permit icmp 192.168.3.0 0.0.0.255 any
console(config)#interface vlan 3
console(config-if-vlan3)#ip access-group test
如果仅仅只能允许Vlan5的机器访问Vlan3:
console(config)#access-list test permit ip 192.168.5.0 0.0.0.255 192.168.3.0 0.0
.0.255(仅仅配置这一条规则,Vlan3和Vlan5是不能通信的)
console(config)#access-list test permit ip 192.168.3.0 0.0.0.255 192.168.5.0 0.0
.0.255(加上这一条规则,允许返回的数据包,这样才能实现Vlan3和Vlan5的通信)
如果客户希望Vlan3与Vlan5能够相互通信,但是不希望双方的机器能够互ping,那么配置时必须注意语句的顺序:
console(config)#access-list test permit ip 192.168.3.0 0.0.0.255 192.168.5.0 0.0.0.255
console(config)#access-list test permit ip 192.168.5.0 0.0.0.255 192.168.3.0 0.0.0.255
console(config)#access-list test deny icmp 192.168.3.0 0.0.0.255 192.168.5.0 0.0.0.255
console(config)#interface vlan 3
console(config-if-vlan3)#ip access-group test
以上的配置结果是:Vlan3与Vlan5能够相互通信,也能相互ping 通,说明第三条语句没有起作用. 具有严格限制条件的语句应放在访问列表所有语句的最上面;调整为以下顺序后,目的就能达到了:
console(config)#access-list test deny icmp 192.168.3.0 0.0.0.255 192.168.5.0 0.0.0.255
console(config)#access-list test permit ip 192.168.3.0 0.0.0.255 192.168.5.0 0.0.0.255
console(config)#access-list test permit ip 192.168.5.0 0.0.0.255 192.168.3.0 0.0.0.255
console(config)#interface vlan 3
console(config-if-vlan3)#ip access-group test
这是因为:系统是按照顺序一条条去匹配ACL的规则,当发现匹配的规则后,它将忽略掉后面的语句;而如果发现ACL里所有语句均不匹配,那么默认将丢掉该数据包.也就是说,每个ACL的末尾都会隐含一"deny all"的规则.这一点在配置时需要非常注意.