首页 > 代码库 > Cisco之访问控制列表(ACL)
Cisco之访问控制列表(ACL)
访问控制列表(ACL)是应用在路由器接口的指令列表(即规则),这些规则表用来告诉路由器,哪些数据包可以接收,哪些包需要拒绝。其基本原理如下:ACL使用包过滤技术,在路由器上读取OSI七层模型的第三层和第四层包头中的信息,如源地址、目的地址、源端口、目的端口等,根据预先定义的规则,对包进行过滤,从而达到访问控制的目的。
ACL可以分为以下两种基本类型:
标准ACL:检查数据包的源地址,来决定是允许还是拒绝转发数据包,使用1-99之间的数字作为表号。
扩展ACL:既能对数据包的源地址和目标地址进行检查,也能检查特定的协议、端口号及其它的参数。使用100-199之间的数字作为表号。
ACL是一组规则的集合,应用在路由器的某个接口上,因此对路由器的接口而言,ACL有两个方向:
出:已经经过路由器的处理,离开路由器接口的数据包,检查顺序:先查路由表,再查出ACL。
入:已经到达路由器接口的数据包,将要被路由器处理。检查顺序:先检查入ACL,再查询路由表。
匹配规则:
如果匹配第一条规则,则不再继续往下查,路由器将决定是允许或拒绝数据包通过。
如果不匹配第一条规则,则依次往下检查,直到匹配一条规则,如果没有任何规则匹配,路由器默认会丢弃数据包。
由以上规则可见,数据包要么被拒绝,要么被丢弃。如下图:
示例 1:标准访问控制列表
ROUTE(config)#access-list 1 deny 192.168.3.0 0.0.0.255
ROUTE(config)#int f1/0 #应用到入站方向
ROUTE(config-if)#ip access-group 1 in
ROUTE#sh ip access-lists #查看ACL
Standard IP access list 1
10 deny 192.168.3.0, wildcard bits 0.0.0.255
C:\Users\win7>ping 172.16.2.1
正在 Ping 172.16.2.1 具有 32 字节的数据:
来自 192.168.3.254 的回复: 无法访问目标主机。
来自 192.168.3.254 的回复: 无法访问目标主机。
来自 192.168.3.254 的回复: 无法访问目标主机。
来自 192.168.3.254 的回复: 无法访问目标主机。
在接口上取消ACL应用
ROUTE(config-if)#no ip access-group 1 in
C:\Users\win7>ping 172.16.2.1 #取消ACL后,可以ping通
正在 Ping 172.16.2.1 具有 32 字节的数据:
来自 172.16.2.1 的回复: 字节=32 时间=127ms TTL=252
来自 172.16.2.1 的回复: 字节=32 时间=97ms TTL=252
来自 172.16.2.1 的回复: 字节=32 时间=78ms TTL=252
来自 172.16.2.1 的回复: 字节=32 时间=84ms TTL=252
删除ACL:
ROUTE(config)#no access-list 1
仅允许某台主机访问
ROUTE(config)#access-list 2 permit host 192.168.3.2
ROUTE(config)#int f1/0
ROUTE(config-if)#ip access-group 2 in
允许所有:
ROUTE(config)#access-list 2 permit any
或
ROUTE(config)#access-list 2 permit 0.0.0.0 255.255.255.255
示例 2:扩展访问控制列表
sw1(config)#access-list 101 deny tcp any host 172.16.1.1 eq www
sw1(config)#int vlan 2
sw1(config-if)#ip access-group 101 in
sw1#sh access-lists
Extended IP access list 101
10 deny tcp any host 172.16.1.1 eq www (24 matches)
sw1#sh ip int vlan 2
Vlan2 is up, line protocol is up
Internet address is 172.16.2.254/24
Broadcast address is 255.255.255.255
Address determined by setup command
MTU is 1500 bytes
Helper address is not set
Directed broadcast forwarding is disabled
Multicast reserved groups joined: 224.0.0.5 224.0.0.6
Outgoing access list is not set
Inbound access list is 101
...
客户端无法正常访问:
在接口上取消ACL应用,即可正常访问:
sw1(config-if)#int vlan 2
sw1(config-if)#no ip access-group 101 in
示例 3:命名访问控制列表
sw1(config)#ip access-list extended name
sw1(config-ext-nacl)#deny tcp any host 172.16.1.1 eq www
sw1(config)#int vlan 2
sw1(config-if)#ip access-group name in
sw1#sh ip access-lists name
Extended IP access list name
10 deny tcp any host 172.16.1.1 eq www
禁止后,从客户端已无法访问,取消后可正常访问:
sw1(config)#ip access-list extended name
sw1(config-ext-nacl)#no deny tcp any host 172.16.1.1 eq www
sw1(config-ext-nacl)#11 deny tcp 172.16.2.0 0.0.0.255 host 172.16.1.1 eq www
sw1(config-ext-nacl)#12 permit tcp 172.16.1.0 0.0.0.255 host 172.16.1.1 eq www
sw1#sh ip access-lists
Extended IP access list name
11 deny tcp 172.16.2.0 0.0.0.255 host 172.16.1.1 eq www (36 matches)
12 permit tcp 172.16.1.0 0.0.0.255 host 172.16.1.1 eq www
备注:
在路由器的接口上每个方向只能有一个ACL,即每个接口只能有两个ACL,一个出方向ACL,一个入方向ACL。
ACL只对穿越流量起作用,而对于路由器或三层交换机本身产生的流量不起作用。
标准ACL尽可能靠尽目标,扩展ACL尽可能应用在靠近源服务器的位置。
标准和扩展ACL如果要修改,需要删除整个ACL,而命名ACL可以通过增加或删除ACL语句来实现。
本文出自 “一万年太久,只争朝夕” 博客,请务必保留此出处http://zengwj1949.blog.51cto.com/10747365/1922848
Cisco之访问控制列表(ACL)