Cisco IOS可以配置很多类型的ACL,下面是最常见也就是最常用的ACL类型;

  • 标准ACL

  • 扩展ACL

  • 命令的IP ACL

  • 锁和秘钥(动态ACL

  • 自反ACLReflexive ACL

  • Established ACL

  • 使用时间范围的时间 ACL     (Time-Based ACL)

  • 分布式时 ACL

  • Turbo ACL

  • 限速ACLrACL

  • 设备保护ACL I ACL

  • 过境ACL Transit ACL

  • 分类ACL Classification     ACL

  • 使用ACL调试流量


1.标准ACL

标准ACL是最基本的ACL类型,它将配置在列表中的IP地址和数据包的源IP地址进行比较,以此来监控流量。标准ACL只能通过源IP地址指定需要放行和阻塞的流量。

用数字的标准ACL语法格式如下。

   access-list access-list-number {deny |permit } source {source-wildcard} [log]

注:命令语句中用大括号{}标识的部门是必选项,用中括号[]标识的部分是可选项;

当一个数据包与某个ACL条目发生匹配的时候,使用关键字log可以生成一个信息日志消息。设备会把所有和该ACL相匹配的数据包以日志的形式发送给Console接口、缓存或系统日志服务器。这个消息中包含了ACL编号、数据包处理结果的通告消息(被允许还是拒绝)、源地址、以及数据包的数量。

标准ACL编号的取值范围都在1~99之间,也可以取扩展范围1300~1999间的任意值;


用数字定义的标准ACL示例

         Router(config)#access-list 1 permit192.168.1.0 0.0.0.0

         Router(config)#access-list 1 permit139.65.0.0 0.0.255.255

         (Note:implicit deny)

/源的反掩码的设置如果为0.0.0.0/255.255.255.255,那么可以用关键字any来代替。全0位的反掩码也有省略写法,如10.1.1.10.0.0.0 也可写为host 10.1.1.1

在定义ACL以后,要把它应用到接口上(入方向或出方向)

      Router(config)#interface<interface-name>

          Router(config)#ip access-group{access-list-number | name } {in | out}

案例:

下面是使用标准 ACL的例子,该ACL过滤了所有源地址不是10.1.1.0/24的流量。这个例子除了一条permit语句之外,其后还有一个隐含的拒绝语句,这个隐含拒绝会阻塞其他所有流量。

     1.定义一个标准的ACL

             Router(config)#access-list 1permit 10.1.1.0 0.0.0.255

          2.将其应用到接口上面

             Router(config)#interface Serial 0

             Router(config)#ip access-group 1in

2.扩展ACL

扩展ACL在过滤流量的时候可以更加具体的对流量进行定义,它可以基于源地址、目的地址、指定协议、端口和标记(flag)对流量实施过滤,针对各类协议定义,扩展访问列表的编号范围在100~199之间,也可以取扩展值2000~2699间的任意值。扩展ACL的语句格式如下所示:

  • 定义一个扩展的IP ACL

Access-list access-list-number[dynamic dynamic-name [timeoutminutes ]] {deny | permit } protocol source source-wildcard destinationdestination-wildcard [precedence precedence ] [tos tos ] [log | log-input ][time-range time-range-name] [fragments]


  • 定义一个扩展的TCP ACL

Access-list access-list-number[dynamic dynamic-name [timeoutminutes ]] {deny | permit } tcp source source-wildcard [operator [port ]]destination destination-wildcard [operator [port] ] [established ] [precedenceprecedence ] [tos tos ] [log | log-input ] [time-range time-rage-name ][fragments]


  • 定义一个扩展的 UDP ACL

Access-list access-list-number[dynamic dynamic-name [timeoutminutes ]] {deny | permit } udp  sourcesource-wildcard [operator [port ]] destination destination-wildcard [operator[port] ] [established ] [precedence precedence ] [tos tos ] [log | log-input ][time-range time-rage-name ] [fragments]


  • 定义一个扩展的ICMP(用户数据报协议)ACL

Access-list access-list-number[dynamic dynamic-name [timeoutminutes ]] {deny | permit } icmp source source-wildcard destinationdestination-wildcard

[icmp-type ] [icmp-code] | icmp-message [precedenceprecedence ] [tos tos] [log |log-input ] [time-range time-range-name][fragments]


  • 定义一个扩展的IGMP(internet组管理协议)ACL

Access-list access-list-number [dynamic dynamic-name[timeout minites ]] {deny | permit } igmp source source-wildcard destinationdestination-wildcard [igmp-type]

[precedence precedence ] [tos tos ] [log | log-input ][time-range time-range-name] [fragments]


案例:

1.定义一个扩展ACL

Router(config)#access-list 101 permit tcp any host172.16.1.1 eq smtp

Router(config)#access-list 101 permit tcp any any eq domain

Router(config)#access-list 101 permit udp any any eq domain

Router(config)#access-list 101 permit icmp any any echo

Router(config)#access-list 101 permit icmp any any  echo-reply

2.将其应用在接口上面

Router(config)#interface Serial0

Router(config)#ip access-group 101 in


3.命名的IP ACL

Cisco IOS增加了可以使用名称来命名的ACL功能。这项功能可以应用在标准ACL和扩展ACL上面,也就是用一个名字代替数字来给ACL命名,所有其他参数都保存不变。这是在常规ACL基础上面添加的特性。定义命名的ACL可以使用下面的语法结构。

Router(confug)#ip access-list {standard | extended}access-list-name

下面例子中的ACL被命名为myacl,这个列表匹配所有来之网络192.16.1.10/24及来之主机172.65.1.1的流量。

1.命名的标准ACL

Ip access-list standard myacl

Permit 192.168.1.0 0.0.0.255

Permit host 172.65.1.1

(Note:implicit deny)


2.命名扩展的ACL

Ip access-list extended myacl

Permit tcp any host 172.16.1.1 eq smtp

Permit tcp any eq domain

Permit udp any eq domain

Permit icmp any any

(Note:implicit deny)