ACL 访问控制列表

什么是ACL? 
        访问控制列表简称为ACL,访问控制列表使用包过滤技术,在路由器上读取 进行过滤, 从而达到访问控制的目的。 该技术初期仅在路由器上支持, 近些年来已经扩展到 三层交换机,部分最新的二层交换机也开始提供 ACL 的支持了。

        第三层及第四层包头中的信息如源地址,目的地址,源端口,目的端口等,根据预先定义好的规则对包进行过滤,从而达到访问控制的目的。该技术初期仅在路由器上支持,近些年来已经扩展到三层交换机,部分最新的二层交换机也开始提供ACL的支持了。

        许多其他配置任务中都需要使用访问控制列表,如网络地址转换(Network Address Translation,NAT)、按需拨号路由(Dial on Demand Routing,DDR)、路由重分布(Routing Redistribution)、策略路由(Policy-Based Routing,PBR)等很多场合都需要访问控制列表。


列表格式
---- 标准型IP访问列表的格式如下:
  ---- access-list[list number][permit|deny][source address]
  ---- [address][wildcard mask][log]
  ---- 下面解释一下标准型IP访问列表的关键字和参数。首先,在access和list这2个关键字之间必须有一个连字符"-";其次,list number的范围在0~99之间,这表明该access-list语句是一个普通的标准型IP访问列表语句。因为对于Cisco IOS,在0~99之间的数字指示出该访问列表和IP协议有关,所以list number参数具有双重功能: (1)定义访问列表的操作协议; (2)通知IOS在处理access-list语句时,把相同的list number参数作为同一实体对待。正如本文在后面所讨论的,扩展型IP访问列表也是通过list number(范围是100~199之间的数字)而表现其特点的。因此,当运用访问列表时,还需要补充如下重要的规则: 在需要创建访问列表的时候,需要选择适当的list number参数。
允许拒绝
---- 在标准型IP访问列表中,使用permit语句可以使得和访问列表项目匹配的数据包通过接口,而deny语句可以在接口过滤掉和访问列表项目匹配的数据包。source address代表主机的IP地址,利用不同掩码的组合可以指定主机。
  ---- 为了更好地了解IP地址和通配符掩码的作用,这里举一个例子。假设您的公司有一个分支机构,其IP地址为C类的192.46.28.0。在您的公司,每个分支机构都需要通过总部的路由器访问Internet。要实现这点,您就可以使用一个通配符掩码 0.0.0.255。因为C类IP地址的最后一组数字代表主机,把它们都置1即允许总部访问网络上的每一台主机。因此,您的标准型IP访问列表中的access-list语句如下:
  ---- access-list 1 permit 192.46.28.0 0.0.0.255
  ---- 注意,通配符掩码是子网掩码的补充。因此,如果您是网络高手,您可以先确定子网掩码,然后把它转换成可应用的通配符掩码。这里,又可以补充一条访问列表的规则5。
指定地址
---- 如果您想要指定一个特定的主机,可以增加一个通配符掩码0.0.0.0。例如,为了让来自IP地址为192.46.27.7的数据包通过,可以使用下列语句:
  ---- Access-list 1 permit 192.46.27.7 0.0.0.0
  ---- 在Cisco的访问列表中,用户除了使用上述的通配符掩码0.0.0.0来指定特定的主机外,还可以使用"host"这一关键字。例如,为了让来自IP地址为192.46.27.7的数据包可以通过,您可以使用下列语句:
  ---- Access-list 1 permit host 192.46.27.7
  ---- 除了可以利用关键字"host"来代表通配符掩码0.0.0.0外,关键字"any"可以作为源地址的缩写,并代表通配符掩码0.0.0.0 255.255.255.255。例如,如果希望拒绝来自IP地址为192.46.27.8的站点的数据包,可以在访问列表中增加以下语句:
  ---- Access-list 1 deny host 192.46.27.8
  ---- Access-list 1 permit any
  ---- 注意上述2条访问列表语句的次序。第1条语句把来自源地址为192.46.27.8的数据包过滤掉,第2条语句则允许来自任何源地址的数据包通过访问列表作用的接口。如果改变上述语句的次序,那么访问列表将不能够阻止来自源地址为192.46.27.8的数据包通过接口。因为访问列表是按从上到下的次序执行语句的。这样,如果第1条语句是:
  ---- Access-list 1 permit any
  ---- 的话,那么来自任何源地址的数据包都会通过接口。
拒绝列表
---- 在默认情况下,除非明确规定允许通过,访问列表总是阻止或拒绝一切数据包的通过,即实际上在每个访问列表的最后,都隐含有一条"deny any"的语句。假设我们使用了前面创建的标准IP访问列表,从路由器的角度来看,这条语句的实际内容如下:
  ---- access-list 1 deny host 192.46.27.8
  ---- access-list 1 permit any
  ---- access-list 1 deny any
  ---- 在上述例子里面,由于访问列表中第2条语句明确允许任何数据包都通过,所以隐含的拒绝语句不起作用,但实际情况并不总是如此。例如,如果希望来自源地址为192.46.27.8和192.46.27.12的数据包通过路由器的接口,同时阻止其他一切数据包通过,则访问列表的代码如下:
  ---- access-list 1 permit host 192.46.27.8
  ---- access-list 1 permit host 192.46.27.12
  ---- 注意,所有的访问列表会自动在最后包括deny any语句。
  ---- 顺便讨论一下标准型IP访问列表的参数"log",它起日志的作用。一旦访问列表作用于某个接口,那么包括关键字"log"的语句将记录那些满足访问列表中"permit"和"deny"条件的数据包。第一个通过接口并且和访问列表语句匹配的数据包将立即产生一个日志信息。后续的数据包根据记录日志的方式,或者在控制台上显示日志,或者在内存中记录日志。通过Cisco IOS的控制台命令可以选择记录日志方式。


(1) “ACL 的最后一条语句都是隐式拒绝语句” 是什么意思?
每个 ACL 的末尾都会自动插入一条隐含的 deny 语句,虽然ACL中看不到这条语句,它仍其作用。隐含的 deny 语句会阻止所有流量,以防不受欢迎的流量意外进入网络。
(2) 配置ACL后为什么没有生效?
在创建访问控制列表之后,必须将其应用到某个接口才可开始生效。ACL 控制的对象是进出接口的流量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值