一、什么是ACL
ACL是一个有序的语句集,它通过对比报文中的字段值与访问列表参数,来允许和拒绝报文通过某个接口,这种控制可以限制网络数据流和限制某些用户对网络的使用。它最直接的作用就是包过滤,一般在路由器和三层交换机上进行网络安全属性配置。
二、ACL组成
ACL由条件和操作组成。
1>条件:用来匹配数据包中的字段值。
2>操作:条件匹配的时候,采取允许和拒绝两种操作。所有的ACL末尾都隐式的添加了一条拒绝所有的语句。
三、ACL的作用
1>安全控制:允许符合条件的数据包进行转发,不符合条件的语句不进行转发。例如:在一个公司的内部,财务部的数据是比较机密的,它的数据不应该是谁都可以访问的。这个时候需要进行ACL设置,来控制那些数据是可以转发的。从而保证系统安全。
2>流量过滤:这个功能是防止一些不必要的数据包通过路由器。提高网络带宽的利用率
3>数据流量标识:当一个公司有两条以上出口线路的时候,才会用到这个功能,这个功能是为了和路由策略一起实现对流量转发的分工。
四、ACL的工作机制
ACL一般是部署在接口上,分为in或者out。分别对应数据流进入接口实施ACL和数据流出接口实施ACL。
如果在接口上配置的是进入的ACL,那么它的工作流程如下:路由器会查看该接口上是否配置了ACL,如果没有配置,直接查找路由表进行转发,如果配置了且允许通过,则查找路由表进行转发,否则拒绝,发送ICMP信息。
下面是在出站接口上配置的ACL,它的具体工作流程如下:首先查看路由是否存在,如果存在且没有配置ACL,直接进行转发。否则,要查看是否允许转发,如果进行配置允许,则转发,否则拒绝转发,发送ICMP信息。
五、ACL的种类
● 标准IP访问控制列表
● 扩展IP访问控制列表
● MAC访问控制列表
● MAC扩展访问控制列表
●
Expert访问控制列表
● Ipv6访问控制列表
六、ACL的命令格式:
访问控制列表需要一个访问控制列表号:所有的访问控制列表号都在下表中列出:
IP标准ACL | 1-99,1300-19999 |
IP扩展ACL | 100-199,2000-2699 |
MAC扩展ACL | 700-799 |
专家扩展ACL | 2700-2899 |
IPX标准ACL | 800-899 |
IPX扩展ACL | 900-999 |
IPX SAP | 1000-1099 |
同时,还需要注意两个单词,一个是host表示主机的意思,host 192.168.1.1 这时候就不用写成192.168.1.1 0.0.0.0 这样的形式,还有一个是any表示任意网段。同时配置ACL的时候,需要注意ACL放置的位置。
标准ACL配置命令:
(config)#access-list 访问控制列表号 permit|deny host 主机IP地址
(config)#access-list 访问控制列表号 permit|deny 网段 反掩码
(config-if)#ip access-group 访问控制列表号 {in|out}
在配置标准ACL的时候,同样可以基于名称的ACL
(config)#ip access-list standard 名称
(config-std-nacl)#permit|deny 网段 反掩码
扩展ACL:
(config)#access-list 访问控制列表号 permit|deny 协议 原地址网段 掩码 目的地址网段 反掩码 端口号
(config-if)#ip access-group 访问控制列表号 {in|out}
扩展ACL同样可以基于名称配置
(config)#ip access-list extended 名称
(config-ext-nacl)#permit|deny 协议 原地址网段 掩码 目的地址网段 反掩码 端口号
下面列出了常用的端口号,方便进行扩展ACL的配置
下面给出的是tcp的端口号
名称 | 端口号 | 描述 |
bgp | 179 | 边界网关协议 |
cmd | 514 | 远程命令 |
domain | 53 | 域名系统区域传输 |
ftp | 21 | 文件传输协议控制通道 |
ftp-data | 20 | FTP数据通道 |
pop3 | 110 | 邮局协议V3 |
smtp | 25 | 简单邮件传输协议 |
telnet | 23 | Telnet |
www | 80 | www服务 |
名称 | 端口号 | 描述 |
domain | 53 | DNS查询和回复 |
ntp | 123 | 网络时间协议 |
rip | 520 | RIP路由协议 |
snmp | 161 | 简单网络管理协议 |
tftp | 69 | 简单文件传输协议 |
七、实验配置实例
1.标准的ACL
下面是一个标准的ACL配置方案。图中各个主机的和路由器的IP地址在图上已经标注。下面来部署ACL,在左边的路由器上f0/1的接口上部署标准ACL。允许192.168.1.100主机和192.168.3.0网段的主机访问192.168.2.100这个主机。下面是具体的配置命令。
Router(config)#access-list 1 permit host 192.168.1.100
Router(config)#access-list 1 permit 192.168.3.0 0.0.0.255
Router(config)#interface f0/1
Router(config-if)#ip access-group 1 out
完成上述配置之后,即可完成192.168.1.100和192.168.3.0网段对主机192.168.2.100的访问。在这里要注意一下接口上
2.配置扩展的ACL
Switch(vlan)#vlan 2 name 2
Switch(vlan)#vlan 3 name 3
Switch(vlan)#exit
Switch#configure terminal
Switch(config)#interface FastEthernet0/1
Switch(config-if)#exit
Switch(config)#interface FastEthernet0/2
Switch(config-if)#exit
Switch(config)#interface FastEthernet0/2
Switch(config-if)#switchport access vlan 2
Switch(config-if)#exit
Switch(config)#interface FastEthernet0/3
Switch(config-if)#switchport access vlan 3
Switch(config-if)#exit
Switch(config)#interface FastEthernet0/1
Switch(config-if)#switchport mode trunk
Switch(config)#interface vlan 2
Switch(config-if)#ip address 192.168.1.1 255.255.255.0
Switch(config-if)#exit
Switch(config)#interface vlan 3
Switch(config-if)#ip address 192.168.2.1 255.255.255.0
Switch(config-if)#exit
Switch(config)#interface f0/1
Switch(config-if)#no switchport
Switch(config-if)#ip address 192.168.3.1 255.255.255.0
Switch(config)#ip routingSwitch(config)#ip address 0.0.0.0 0.0.0.0 192.168.3.2
在路由器上的配置命令:
Router(config)#interface FastEthernet0/1
Router(config-if)#no shutdown
Router(config-if)#ip address 192.168.3.2 255.255.255.0
Router(config-if)#exitRouter(config)#interface FastEthernet0/0
Router(config-if)#no shutdown
Router(config-if)#ip address 192.168.4.1 255.255.255.0
Router(config-if)#exitRouter(config)#ip router 0.0.0.0 0.0.0.0 192.168.3.1
上述配置完成之后,整个网络可以全部ping通。下面要在路由器上配置ACL
Router(config)#access-list 110 permit tcp host 192.168.1.2 host 192.168.4.2 eq 80
Router(config)#access-list 110 permit tcp 192.168.2.0 0.0.0.255 host 192.168.4.2 eq 21
Router(config)#access-list 110 permit tcp 192.168.2.0 0.0.0.255 host 192.168.4.2 eq 20
Router(config)#interface f0/1
Router(config-if)#ip access-group 110 in
八、注意事项
在配置ACL的时候,要注意ACL的放置位置,一般来说,标准ACL放置的离目的近,扩展ACL放置的离源近。下面,我用一个例子来说明为什么要这么配置:
如果要进行如下配置,允许PC0访问所有资源,除了访问服务器。
根据配置规则,配置标准的ACL,应离目标近,应该把他放置在Router4的f0/0出口上,但是现在如果我们不放在那个出口,换一个放置的位置,比如Router3的f0/0接口上,由于标准ACL只查看源地址,这样会导致PC0不能访问所有的主机和服务器。
如果是扩展ACL的话,尽量放置离源近的地方,比如Router3的f0/0接口上,否则,会浪费网络带宽。