首页 > 代码库 > 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)