CCNA2.0笔记_ACL

要点:
  1、按顺序执行,一旦某条语句匹配,后续语句不再处理.
  2、默认ACL 结尾语句是deny any,所以你要记住的是在ACL 里至少要有1 条permit 语句.
  3、记得创建了ACL 后要把它应用在需要过滤的接口上.
  4、每个接口,每个方向,每种协议,你只能设置1 个ACL(每个接口只能有一个 acl in 和一个 acl out).
  5、你不可能从ACL 从除去1 行,除去1 行意味你将除去整个ACL,命名访问列表(named access lists)例外.
  6、ACL 是用于过滤经过router 的数据包,它并不会过滤router 本身所产生的数据包.
  7、尽可能的把IP 标准ACL 放置在离目标地址近的地方;尽可能的把IP 扩展ACL 放置在离源地址近的地方。

ACL的工作原理
  •读取第三层及第四层包头中的信息
  •根据预先定义好的规则对包进行过滤

  

 

ACL的两大主要功能:
  •流量控制
  •匹配感兴趣流量

ACL的类型:
  •标准访问控制列表
   –只能根据 源地址 做过滤
   –针对整个协议采取相关动作(允许或禁止)
  

  •扩展访问控制列表
   –能根据 源、目的地地址、端口号 等等进行过滤
   –能允许或拒绝 特定 的协议
  

  •入站及出站
  

  需要把ACL应用到接口上,而且还要定义过滤的方向:
  1.in ACL(进方向ACL):先路由,再处理
  当访问列表被应用到从接口输入的包时,那些包在被路由到输出接口之前要经过访问列表的处理。不能路由任何被拒绝的包,因为在路由之前这些包就会被丢弃掉。
  2.out ACL(出方向ACL):先处理,再路由
  当访问列表被应用到从接口输出的包时,那些包首先被路由到输出接口,然后在进入该接口的输出队列之前经过访问列表的处理。

  •access-list
  

  •通配符掩码
  通配符和访问列表一起用来指定一台主机、一个网络、一个网络或几个网络内的某个范围
  由0到255的4个8位位组组成的。0代表必须精确匹配,255代表任意,比如:172.16.30.0 0.0.0.255,它表示前3个8位位组必须精确匹配,后1个8位位组可以为任意值;

  如果你想指定172.16.8.0 到172.16.15.0,则通配符掩码为0.0.7.255 (15-8=7)
  表示192.168.1.0-192.168.1.31用通配符掩码网段表示为 192.168.1.0 0.0.0.31

  
  

  •通配符缩写
  

  •标准访问控制列表的配置:

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

  •编号选择1 – 99 以及 1300~1999之间的数字作为表号。
  •通配符若无,默认0.0.0.0 (精确匹配)
  •执行“no access-list access-list-number” 将会删除整个ACL列表

ip access-group access-list-number { in | out }

  •在接口中应用
  •应用时关联入或出站方向
  •默认用于出站

  标准ACL尽可能用在靠近目的地址的地方

//允许172.17.31.222通过,其他主机禁止
access-list 1 permit host 172.17.31.222   //可以省去输入host命令

//禁止172.17.31.222通过,其他主机允许
access-list 1 deny host 172.17.31.222   //可以省去输入host命令
access-list 1 permit any

//允许172.17.31.0/24通过,其他主机禁止
access-list 1 permit 172.17.31.0 0.0.0.255

//禁止172.17.31.0/24通过,其他主机允许
access-list 1 deny 172.17.31.0 0.0.0.255
access-list 1 permit any

   举例:
  
  要求:销售部不允许访问金融部,但允许访问市场部和Internet:

(config)#access-list 10 deny 172.16.40.0 0.0.0.255
(config)#access-list 10 permit any
(config)#interface E1
(config-if)#ip access-group 10 out      //尽量把标准ACL放在离目标近的地方,所以应用在E1口,方向为out.

  
  禁止172.16.4.0/24网段中除172.16.4.13这台服务器访问172.16.3.0/24的计算机

(config)#access-list 1 permit host 172.16.4.13    //允许172.16.4.13的数据包通过
(config)#int e 0     //进入E0端口(因为标准ACL尽量放在离目标地址近的地方)
(config-if)#ip access-group 1 out     //应用到接口E0的出方向

  禁止172.16.4.13对172.16.3.0/24网段的访问,而172.16.4.0/24中的其他计算机可以正常访问。

(config)#access-list 1 deny host 172.16.4.13    //禁止172.16.4.13的数据包通过
(config)#access-list 1 permit any     //允许其他所有计算机数据包通过
(config)#int e 0    //进入E0端口
(config-if)#ip access-group 1 out    //将ACL1宣告,同理可以进入E1端口后使用ip access-group 1 in来完成宣告

  •扩展访问控制列表的配置:

access-list access-list-number {permit | deny} protocol source source-wildcard [operator port] destination destination-wildcard [operator port]

//中文: access-list ACL号 [permit|deny] [协议] [定义源主机范围][定义源端口][ 定义目的主机范围] [定义目的端口]

  •编号选择100 – 199 以及 2000~2699之间的数字作为表号。
  •执行“no access-list access-list-number” 将会删除整个ACL列表

ip access-group access-list-number { in | out }

  •在接口中应用 
  •应用时关联入或出站方向

[operator port]
  

  扩展ACL尽可能用在靠近源地址的地方 

  举例:
  
  禁止172.16.3.0的计算机访问172.16.4.0的计算机,惟独可以访问172.16.4.13上的WEB服务

(config)#access-list 101 permit tcp any host 172.16.4.13 eq www   //设置ACL101,容许源地址为任意IP,目的地址为主机172.16.4.13的80端口即web服务
(config)#int e 0    //进入E0端口(因为扩展ACL尽量放在离源地址近的地方)
(config-if)#ip access-group 101 in    //应用到接口E0的入方向

  拒绝来自172.16.3.0去往172.16.4.0的FTP流量,允许其他所有流量

(config)#access-list 101 deny tcp 172.16.3.0  0.0.0.255 172.16.4.0 0.0.0.255 eq 21
(config)#access-list 101 permit ip any any
(config)#int e 0
(config-if)#ip access-group 101 in

  拒绝来自172.16.3.5去往172.16.4.13的所有流量,允许其他所有流量

(config)#access-list 101 deny ip host 172.16.3.5 host 172.16.4.13
(config)#access-list 101 permit ip any any
(config)#int e 0
(config-if)#ip access-group 101 in

  

(config)#access-list 101 permit tcp host 192.168.33.3 host 172.22.242.23 eq www
(config)#access-list 101 deny tcp any host 172.22.242.23 eq www
(config)#access-list 101 permit ip any any
(config)#interface FastEthernet0/0
(config-if)ip access-group 101 in

  •命名访问控制列表:

  不论是标准ACL还是扩展ACL都存在一个弊端:当配置好ACL规则后,希望对某条进行修改或删除只能将整条ACL信息都删除。可以用基于名称的访问控制列表来解决这个问题。

  标准命名ACL命令:

(config)#ip access-list standard name 
(config-std-nacl)#{permit /deny} source-ip source-wildcard
(config-if)#ip access-group standard name { in | out }

  •在接口中应用 
  •应用时关联入或出站方向

  

  建立标准ACL命名为test:允许10.1.1.101和103通过,其他主机禁止

(config)#ip access-list standard test
(config-std-nacl)#permit host 10.1.1.101
(config-std-nacl)#permit host 10.1.1.103
(config)#int fa0/0
(config-if)#ip access-group test out    //接口应用(靠近目标,出方向)

  当需要将"permit host 10.1.1.103"删除时,非命名ACL只能删除整个ACL信息。正是因为使用了基于名称的访问控制列表,我们进入ip access-list standard test后,可使用"no permit host 10.1.1.103"删除.

  命名扩展ACL命令:

(config)#ip access-list extended name 
(config-ext-nacl)#{permit /deny} protocol [source-ip source-wildcard destination-ip destination-wildcard] [operator port]
ip access-group extended name { in | out }

  •在接口中应用 
  •应用时关联入或出站方向  

  仅允许10.1.1.0网段的主机访问主机209.165.202.196的web服务

(config)#ip access-list extended web_only
(config-ext-nacl)#permit tcp 10.1.1.0 0.0.0.255 host 209.165.202.196 eq www

  仅允许10.1.1.101访问所有主机80端口,其他所有主机禁止

(config)#ip access-list extended test01
(config-ext-nacl)#permit tcp host 10.1.1.101 any eq www

  禁止所有主机访问209.165.202.197主机的23、26口,但允许访问其他端口

(config)#ip access-list extended test02
(config-ext-nacl)#deny tcp any host 209.165.202.197 eq 23
(config-ext-nacl)#deny tcp any host 209.165.202.197 eq 26
(config-ext-nacl)#permit tcp any any

  接口应用(靠近源,入方向)

(config)#int fa1/0
(config-if)#ip access-group web_only in

  命名ACL还有一个优点就是可以调整语句的顺序:
  每新增一条语句,顺序号默认加10

  例:

Router#show ip access-lists     //显示ACL
Extended IP access list test
10 deny tcp any host 209.165.202.197 eq telnet
20 permit tcp any any

  如果要在前面插入:

Router#conf terminal
Router(config)#ip access-list extended test
Router(config-ext-nacl)#5 deny tcp any host 209.165.202.197 eq 8080

  结果:
  Router#show ip access-lists
  Extended IP access list test
  5 deny tcp any host 209.165.202.197 eq 8080
  10 deny tcp any host 209.165.202.197 eq telnet
  20 permit tcp any any

  如果要在中间插入:

Router#conf terminal
Router(config)#ip access-list extended test
Router(config-ext-nacl)#15 deny tcp any host 209.165.202.197 eq 7070

  结果:
  Router#show ip access-lists
  Extended IP access list test
  5 deny tcp any host 209.165.202.197 eq 8080
  10 deny tcp any host 209.165.202.197 eq telnet
  15 deny tcp any host 209.165.202.197 eq 7070
  20 permit tcp any any

  ------------------------------------------------------------------------------------------------------------

  补充: 
  可使用IP 标准ACL 来控制VTY 线路的访问.步骤如下:
  1.创建个IP 标准ACL 来允许某些主机可以telnet
  2.使用access-class 命令来应用ACL 到VTY 线路上
  配置如下: 

Router(config)#access-list 50 permit 172.16.10.3    //仅允许172.16.10.3访问
Router(config)#line vty 0 4     //进入VTY 线路模式
Router(config-line)#access-class 50 in    //应用ACL,方向为in

 一些验证ACL 的命令:
  1.show access-list:显示router 上配置了的所有的ACL 信息,但是不显示哪个接口应用了哪个 ACL 的信息
  2.show access-list [number]:显示具体第几号ACL 信息,也不显示哪个接口应用了这个ACL
  3.show ip access-list:只显示IP 访问列表信息
  4.show ip interface:显示所有接口的信息和配置的ACL 信息
  5.show ip interface [接口号]:显示具体某个接口的信息和配置的ACL 信息
  

 

posted @ 2015-07-16 10:19  airoot  阅读(654)  评论(0编辑  收藏  举报