访问控制列表

 ACL(Access Control List,访问控制列表)

         技术从来都是一把双刃剑,网络应用与互联网的普及在大幅提高企业的生产经营效率的同时,也带来了诸如数据的安全性,员工利用互联网做与工作不相干事等负面影响。如何将一个网络有效的管理起来,尽可能的降低网络所带来的负面影响就成了摆在网络管理员面前的一个重要课题。(听起来是不是防火墙干的事?实际上是的,早期的防火墙是包过滤防火墙实际上就是利用ACL技术实现的,但这种防火墙有很大的局限性所以短暂的流行后就被后来的基于会话状态的防火墙替了;基于会话状态防火墙能识别会话并进行更加智能的ACL配置;扯远了~)

         使用网络层的访问限制控制技术――访问控制列表(下文简称ACL)。可以在一定程度上解决网络安全问题。那么,什么是ACL呢?ACL是种什么样的技术,它能做什么,又存在一些什么样的局限性呢?

 ACL的基本原理、功能与局限性

         网络中常说的ACL是Cisco IOS所提供的一种访问控制技术,初期仅在路由器上支持,近些年来已经扩展到三层交换机(在三层交换上配置ACL可以将策略应用到vlan上),部分最新的二层交换机如2950之类也开始提供ACL的支持,只不过支持的特性不是那么完善而已。

         在其它厂商的路由器或多层交换机上也提供类似的技术,不过名称和配置方式都可能有细微的差别。本文所有的配置实例均基于 Cisco IOS的ACL进行编写。

 基本原理:

         ACL使用包过滤技术,在路由器上读取第三层及第四层包头中的信息如源地址、目的地址、源端口、目的端口等,根据预先定义好的规则对包进行过滤,从而达到访问控制的目的。

 功能

         网络中的节点资源节点和用户节点两大类,其中资源节点提供服务或数据,用户节点访问资源节点所提供的服务与数据。ACL的主要功能就是一方面保护资源节点,阻止非法用户对资源节点的访问,另一方面限制特定的用户节点所能具备的访问权限。

 配置ACL的基本原则:

         在实施ACL的过程中,应当遵循如下两个基本原则:

  • 最小特权原则:只给受控对象完成任务所必须的最小的权限
  • 最靠近受控对象原则:所有的网络层访问权限控制

 局限性:

         由于ACL是使用包过滤技术来实现的,过滤的依据又仅仅只是第三层和第四层包头中的部分信息,这种技术具有一些固有的局限性,如无法识别到具体的人,无法识别到应用内部的权限级别等。因此,要达到end to end的权限控制目的,需要和系统级及应用级的访问权限控制结合使用(现在有很多应用防火墙来解决更高层的问题)

         ACL的工作流程

         当路由器的进入方向的接口收到一个分组的时候,首先检查它是否是可路由的,如果不可路由(比如并非是发往本路由的分组),则直接丢弃。如果可路由。

         接下来判断进入方向的接口是否配置了ACL,如果没有配置进入方向的ACL,则直接查询路由表,然后根据路由表中找到的端口准备往外转发;如果配置了进入方向的ACL则检查指令组是否允许该分组通过,不允许则丢弃,允许则查询路由表,选择外出接口准备往外转发,从这里可以看出入站的ACL检查是在查询路由表之前执行的。

         外出接口选择好之后,再检查外出接口上有没有配置ACL,如果配置了ACL则检查ACL指令组是否允许,没有配置ACL则直接转发。

 "ACL指令组"是逐条执行的,在逐条执行的过程中,只要发现有一条匹配,则使用那一条规定动作确定允许或拒绝(比如执行第一条的时候就匹配了,那么就使用第一条规定的动作允许或拒绝,后面的语句就不会被执行了),如果所有指令都不匹配,默认的动作是拒绝。

这里用用一张图,帮助更好的理解整个过程:

考古笔记14:访问控制列表ACL详解(真的很详细)_标准ACL

考古笔记14:访问控制列表ACL详解(真的很详细)_扩展ACL_02

考古笔记14:访问控制列表ACL详解(真的很详细)_访问控制列表_03

上面这三张图是我网上找到的,很清楚地描述了ACL的工作过程;忘记是哪里找来的了,不过还是感谢下原创此图的大佬。

标准与扩展ACL

标准访问控制列表只针对源地址进行过滤,标准访问控制列表建议配在接近于目标的位置,因为如果配置在接近于源的目标的位置,那么发出来的报文就会立刻被deny掉了,而且数据包不仅发送不到目标位置,甚至连接近于源的目标位置以外的其他的路由器也发送不到了,都不可以访问了。所以标准访问控制列表一定要放在接近于目标的位置。

扩展访问控制列表建议配置在接近于源的位置,如果配置在接近于目标位置或其他位置的路由器上面,因为产生的结构都是一样的,所以会浪费大量的带宽,而如果配置在接近于源的的目标位置就不会出现这种情况,所以,扩展访问控制列表一定要配置在接近于源的目标位置。

标准ACL: access-list-number编号1~99之间的整数,只针对源地址进行过滤。

扩展ACL: access-list-number编号100~199之间的整数,可以同时使用源地址和目标地址作为过滤条件,还可以针对不同的协议、协议的特征、端口号、时间范围等过滤。可以更加细微的控制通信量。

访问控制列表流量记录

网络管理员就是要能够合理的管理公司的网络,俗话说知己知彼方能百战百胜,有效的记录ACL流量信息可以第一时间的了解网络流量和病*毒的传播方式。如何保存访问控制列表的流量信息,方法就是在扩展ACL规则最后加上LOG命令。

小提示:如果在扩展ACL最后加上log-input,则不仅会保存流量信息,还会将数据包通过的端口信息也进行保存。使用LOG记录了满足访问控制列表规则的数据流量就可以完整的查询公司网络哪个地方流量大,哪个地方有病*毒了。简单的一句命令就完成了很多专业工具才能完成的工作。

版本差异

Cisco不同的IOS版本ACL所能使用的命令或者配置方式是有差别的;有个简单的判断方法,如果使用"show access-lists"看不到每个条目前面的行号,就说明当前路由器的IOS版本不支持新的(更加方便好用)的配置方法;主要差异有:

         ——通过行号删除acl条目

          Cisco IOS 12.0以后的版本支持

         ——为acl设定名称(标准命名ACL)

         标准命名ACL与Cisco IOS 11.2以后的版本支持

         ACL配置步骤

        ——创建ACL

        ——在接口下调用

        无论标准和扩展都一样

         配置ACL的注意事项:

         (1)每个ACL表的末尾都会隐含”deny”语句, 从而丢弃所有不符合规则的包;

         (2)源和目的的地址位掩码配置中,“0”代表精确匹配,”1”代表忽略该位.如允许来自192.168.1.0/24网段机器的访问,则其掩码是0.0.0.255;而针对具体主机的掩码,则是0.0.0.0;

         (3) 具有严格限制条件的语句应放在访问列表所有语句的最上面;

         (4)系统是按照顺序一条条去匹配ACL的规则,当发现匹配的规则后,它将忽略掉后面的语句;而如果发现ACL里所有语句均不匹配,那么默认将丢掉该数据包;

         (5).ACL所包含的规则在精不在多;配置具体规则时不光需要考虑该规则是否影响数据包传送,还必须考虑数据包能否返回;

         (6)ACL一旦绑定到具体端口上时,即可生效,所以以后每次对该ACL表做的任何更改,也就会立即生效;如果配置错误的规则就会对整个网络访问产生影响;

         (7)同一接口可以绑定多个ACL,此时需要给每个ACL设置相应的优先级;

         (8)系统是按照顺序一条条去匹配ACL的规则,当发现匹配的规则后,它将忽略掉后面的语句;而如果发现ACL里所有语句均不匹配,那么默认将丢掉该数据包.也就是说,每个ACL的末尾都会隐含一"deny all"的规则.这一点在配置时需要非常注意,并且顺序很重要、顺序很重要、顺序很重要.


动手实验

一 基础连通行设定

原理部分讲完,接下来我们开始实践部分;首先完成下图所示拓扑的基本设定。

考古笔记14:访问控制列表ACL详解(真的很详细)_访问控制列表_04

这部分的配置非常简单,如果不是很清楚可以翻翻看前面的文章。

我这里就直接给出配置的结果;过程就省略了:

考古笔记14:访问控制列表ACL详解(真的很详细)_扩展ACL_05

二 配置目标1-标准访问控制列表

考古笔记14:访问控制列表ACL详解(真的很详细)_网络安全_06

在正式配置前我们先熟悉下ACL的配置命令:

SW1(config)#ip access-list ?
  extended    Extended Access List
  log-update  Control access list log updates
  logging     Control access list logging
  resequence  Resequence Access List
  standard    Standard Access List

SW1(config)#ip access-list standard ?
  <1-99>       Standard IP access-list number
  <1300-1999>  Standard IP access-list number (expanded range)
  WORD         Access-list name


SW1(config)#ip access-list extended ?
  <100-199>    Extended IP access-list number
  <2000-2699>  Extended IP access-list number (expanded range)
  WORD         Access-list name

SW1(config)#

SW1(config)#ip access-list standard deny-pc1-to-pc4
SW1(config-std-nacl)#?
Standard Access List configuration commands:
  <1-2147483647>  Sequence Number
  default         Set a command to its defaults
  deny            Specify packets to reject
  exit            Exit from access-list configuration mode
  no              Negate a command or set its defaults
  permit          Specify packets to forward
  remark          Access list entry comment

SW1(config-std-nacl)#deny ?
  Hostname or A.B.C.D  Address to match
  any                  Any source host
  host                 A single host address

SW1(config-std-nacl)#deny host 192.168.10.1 ?
  log  Log matches against this entry
  <cr>

SW1(config-std-nacl)#deny host 192.168.10.1
SW1(config-std-nacl)#permit ?
  Hostname or A.B.C.D  Address to match
  any                  Any source host
  host                 A single host address

SW1(config-std-nacl)#permit any ?
  log  Log matches against this entry
  <cr>

SW1(config-std-nacl)#permit any
SW1(config-std-nacl)#exit
SW1(config)#

>>我的版本支持Access-list Name

有些版本的IOS可能不支持直接定义Access-list Name;灵活变通即可。

标准ACL配置

##定义Access-List
SW1(config)#ip access-list standard deny-pc1-to-pc4
SW1(config-std-nacl)#deny host 192.168.10.1
SW1(config-std-nacl)#permit any
SW1(config-std-nacl)#exit
SW1(config)#

##定义需要到的位置和方向
##我们这里应用到vlan 40的入方向(这里有个坑可以仔细想一想)
入-vlan 10-出              入-vlan 40-出
##是不是认为只有定义在vlan 40的入方向才能既保证效果也不影响pc1访问其他设备
SW1(config)#inter vlan 40
SW1(config-if)#ip access-group deny-pc1-to-pc4 in
SW1(config-if)#exit
SW1(config)#end
SW1#wr


##查看Access-List
SW1#show access-lists
Standard IP access list deny-pc1-to-pc4
    10 deny   192.168.10.1
    20 permit any 
SW1#

测试pc1 ping pc4

PC-1> ping 192.168.40.1
192.168.40.1 icmp_seq=1 timeout
192.168.40.1 icmp_seq=2 timeout
84 bytes from 192.168.40.1 icmp_seq=3 ttl=63 time=30.533 ms
84 bytes from 192.168.40.1 icmp_seq=4 ttl=63 time=31.084 ms
84 bytes from 192.168.40.1 icmp_seq=5 ttl=63 time=29.864 ms

PC-1>


##重启下交换机,再测试
PC-1> ping 192.168.40.1
192.168.40.1 icmp_seq=1 timeout
84 bytes from 192.168.40.1 icmp_seq=2 ttl=63 time=30.043 ms
84 bytes from 192.168.40.1 icmp_seq=3 ttl=63 time=30.197 ms
84 bytes from 192.168.40.1 icmp_seq=4 ttl=63 time=30.263 ms
84 bytes from 192.168.40.1 icmp_seq=5 ttl=63 time=30.022 ms

PC-1>
还是可以访问,这就奇怪了吧!!!

##PC4测试ping PC1
PC-4> ping 192.168.10.1
84 bytes from 192.168.10.1 icmp_seq=1 ttl=63 time=30.384 ms
84 bytes from 192.168.10.1 icmp_seq=2 ttl=63 time=30.507 ms
84 bytes from 192.168.10.1 icmp_seq=3 ttl=63 time=29.720 ms
84 bytes from 192.168.10.1 icmp_seq=4 ttl=63 time=30.078 ms
84 bytes from 192.168.10.1 icmp_seq=5 ttl=63 time=31.067 ms

PC-4>

还是可以访问,这就奇怪了吧!!!

SW1#show access-lists
Standard IP access list deny-pc1-to-pc4
    10 deny   192.168.10.1
    20 permit any (5 matches)
SW1#

##在vlan 40的出方向加上限制
SW1(config)#inter vlan 40
SW1(config-if)#ip access-group deny-pc1-to-pc4 out
SW1(config-if)#exit
SW1(config)#end
SW1#wr
##可以看到通讯被限制了
PC-1> ping 192.168.40.1
*192.168.10.254 icmp_seq=1 ttl=255 time=14.963 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.10.254 icmp_seq=2 ttl=255 time=15.001 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.10.254 icmp_seq=3 ttl=255 time=14.942 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.10.254 icmp_seq=4 ttl=255 time=15.095 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.10.254 icmp_seq=5 ttl=255 time=15.208 ms (ICMP type:3, code:13, Communication administratively prohibited)

PC-1>

##删除在vlan 40的入方向限制
SW1(config)#inter vlan 40
SW1(config-if)#no ip access-group deny-pc1-to-pc4 in
SW1(config-if)#exit
SW1(config)#end
SW1#wr

PC-1> ping 192.168.40.1
*192.168.10.254 icmp_seq=1 ttl=255 time=29.917 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.10.254 icmp_seq=2 ttl=255 time=15.080 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.10.254 icmp_seq=3 ttl=255 time=15.177 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.10.254 icmp_seq=4 ttl=255 time=15.391 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.10.254 icmp_seq=5 ttl=255 time=14.932 ms (ICMP type:3, code:13, Communication administratively prohibited)

PC-1>
##PC4测试ping PC1
PC-4> ping 192.168.10.1
192.168.10.1 icmp_seq=1 timeout
192.168.10.1 icmp_seq=2 timeout
192.168.10.1 icmp_seq=3 timeout
192.168.10.1 icmp_seq=4 timeout
192.168.10.1 icmp_seq=5 timeout

PC-4>

这样就不对了,限制范围被扩大。

TIPs:标准ACL不支持插入或删除一行操作,可以将现有ACL拷贝到记事本里修改,然后粘贴到命令行中


实验做到这里是时候总结下问题了:

1、应用到vlan的ACL的in和out有什么区别?怎么理解?

2、标准ACL中定义的地址是目标地址还是源地址?

只要弄清楚这两两个问题,那么我想大家对ACL的理解就可以更进一步了。 首先,我们先看第二个问题,这个比较好解释:

创建标准ACL语法:

Router(config)#access-list 1~99 { permit | deny } 源网段地址或网段

若源地址为主机,则在地址前面需要加“host”;若源地址为网段,则要在网段地址后面加反掩码,如/24的反掩码就是0.0.0.255。

这里大家应该就很清楚回答问题2了;对照我们实验中的设定

SW1(config-std-nacl)#deny host 192.168.10.1

实际上这个192.168.10.1代表的是源地址;也就是说,

a.如果这个地址出现在数据包的源地址栏,数据包将会被阻止;

b.如果这个地址出现在数据包的目标地址栏,数据包将不会被阻止。

然后,我们看下第一个问题;我们需要先把ACL应用的对象(对路由器来说就是端口,对交换机来说就是vlan,对应在我们的实验目标就是vlan 40)是一个闸门;

in和out就是对应的的详细解释可以理解为:

  1. in:我是vlan 40,数据从我这里(in)出去;(来自内部)
  2. out:我是vlan 40,数据从外面(out)进来;(来自外部) 这里有点绕,大家多想想哈!!为了理解我们画个图:

考古笔记14:访问控制列表ACL详解(真的很详细)_扩展ACL_07


过程的分析

考古笔记14:访问控制列表ACL详解(真的很详细)_标准ACL_08


考古笔记14:访问控制列表ACL详解(真的很详细)_访问控制列表_09

考古笔记14:访问控制列表ACL详解(真的很详细)_网络安全_10


所以通过上面的实验我们可以看到标准的ACL似乎已经无法满足我们独特的需求;这时我们需要实验扩展的ACL。


三 配置目标2-扩展的访问控制列表

拓扑还是这样的拓扑

考古笔记14:访问控制列表ACL详解(真的很详细)_网络安全_11

在正式配置前我们还是先熟悉下扩展ACL的配置命令:

SW1(config)#ip access-list extended ?
  <100-199>    Extended IP access-list number
  <2000-2699>  Extended IP access-list number (expanded range)
  WORD         Access-list name

SW1(config)#ip access-list extended exdeny-pc1-to-pc4 ?
  <cr>

SW1(config)#ip access-list extended exdeny-pc1-to-pc4
SW1(config-ext-nacl)#?
Ext Access List configuration commands:
  <1-2147483647>  Sequence Number
  default         Set a command to its defaults
  deny            Specify packets to reject
  dynamic         Specify a DYNAMIC list of PERMITs or DENYs
  evaluate        Evaluate an access list
  exit            Exit from access-list configuration mode
  no              Negate a command or set its defaults
  permit          Specify packets to forward
  remark          Access list entry comment

SW1(config-ext-nacl)#deny ?
  <0-255>  An IP protocol number
  ahp      Authentication Header Protocol
  eigrp    Cisco's EIGRP routing protocol
  esp      Encapsulation Security Payload
  gre      Cisco's GRE tunneling
  icmp     Internet Control Message Protocol
  igmp     Internet Gateway Message Protocol
  ip       Any Internet Protocol
  ipinip   IP in IP tunneling
  nos      KA9Q NOS compatible IP over IP tunneling
  ospf     OSPF routing protocol
  pcp      Payload Compression Protocol
  pim      Protocol Independent Multicast
  tcp      Transmission Control Protocol
  udp      User Datagram Protocol

SW1(config-ext-nacl)#
Router(config)#access-list access-list-number {deny|permit|remark} protocol source source-wildcard [operator operand] [port port-name or name] destination destination-wildcard [operator operand] [port port-name or name] [established]
 
/*
* "access-list-number"是扩展ACL编号,范围从100-199。
*
* {deny|permit|remark} 是这条ACL条目执行的操作,拒绝|允许|注释,
* 其中的"remark"是添加注释,相当于程序设计中的注释语句。
*
* "protocol"代表协议,可以用具体的协议名称代替,比如TCP、UDP、ICMP、IP等。
*
* "source source-wildcard",表示源地址以及通配符掩码。
*
* "destination destination-wildcard",表示目的地址以及通配符掩码。
*
* "[port port-name or name]"表示端口号或名称,输入telnet和23的效果是一样的。
*
* "[established]"在后面的"扩展ACL中的established"中介绍。
*/


扩展的ACL配置

首先我们删除之前的ACL定义和in /out设定

SW1#show run
……
!
interface Vlan40
 ip address 192.168.40.254 255.255.255.0
 ip access-group deny-pc1-to-pc4 in
!
……

SW1#show access-lists
Standard IP access list deny-pc1-to-pc4
    10 deny   192.168.10.1 (20 matches)
    20 permit any (25 matches)
SW1#


SW1#conf t
SW1(config)#inter vlan 40
SW1(config-if)#no ip access-group deny-pc1-to-pc4 in
SW1(config-if)#exit
SW1(config)#no ip access-list st
SW1(config)#no ip access-list standard deny-pc1-to-pc4
SW1(config)#end
SW1#wr
Building configuration...
[OK]
SW1#

此时务必确认下pc1-pc4以及pc4-pc1互相都能ping通。

1.定义ACL

##定义ACL
SW1#conf t
SW1(config)#ip access-list extended exdeny-pc1-to-pc4
SW1(config-ext-nacl)#deny icmp host 192.168.10.1 host 192.168.40.1
SW1(config-ext-nacl)#permit ip any any
SW1(config-ext-nacl)#exit
SW1(config)#

2.定义需要到的位置和方向

##定义需要到的位置和方向
##这次我们应用到vlan 40的入方向
SW1(config)#inter vlan 40
SW1(config-if)#ip access-group exdeny-pc1-to-pc4 in
SW1(config-if)#exit
SW1(config)#end
SW1#wr

3.测试PC-1和PC-4的连通性

##测试pc1 ping pc4
PC-1> ping 192.168.40.1
192.168.40.1 icmp_seq=1 timeout
192.168.40.1 icmp_seq=2 timeout
84 bytes from 192.168.40.1 icmp_seq=3 ttl=63 time=30.533 ms
84 bytes from 192.168.40.1 icmp_seq=4 ttl=63 time=31.084 ms
84 bytes from 192.168.40.1 icmp_seq=5 ttl=63 time=29.864 ms
PC-1>

##PC4测试ping PC1
PC-4> ping 192.168.10.1
84 bytes from 192.168.10.1 icmp_seq=1 ttl=63 time=30.384 ms
84 bytes from 192.168.10.1 icmp_seq=2 ttl=63 time=30.507 ms
84 bytes from 192.168.10.1 icmp_seq=3 ttl=63 time=29.720 ms
84 bytes from 192.168.10.1 icmp_seq=4 ttl=63 time=30.078 ms
84 bytes from 192.168.10.1 icmp_seq=5 ttl=63 time=31.067 ms
PC-4>

仔细想想整个ICMP的通讯过程;是不是发现还是方向问题我们这样的话我们依旧限定的是in方向源地址是192.168.10.1的包只是这次加了协议限定为ICMP而已;所以不影响两者的通讯。


4.修改限制方向

##在vlan 40的in方向删除限制并在out方向加上限制
SW1(config)#inter vlan 40
SW1(config-if)#no ip access-group exdeny-pc1-to-pc4 in
SW1(config-if)#ip access-group exdeny-pc1-to-pc4 out
SW1(config-if)#exit
SW1(config)#end
SW1#wr

5.再次测试PC-1和PC-4的连通性

##测试pc1 ping pc4
PC-1> ping 192.168.40.1
*192.168.10.254 icmp_seq=1 ttl=255 time=15.002 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.10.254 icmp_seq=2 ttl=255 time=15.471 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.10.254 icmp_seq=3 ttl=255 time=61.282 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.10.254 icmp_seq=4 ttl=255 time=15.201 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.10.254 icmp_seq=5 ttl=255 time=14.814 ms (ICMP type:3, code:13, Communication administratively prohibited)

PC-1>



##PC4测试ping PC1
PC-4> ping 192.168.10.1
192.168.10.1 icmp_seq=1 timeout
192.168.10.1 icmp_seq=2 timeout
192.168.10.1 icmp_seq=3 timeout
192.168.10.1 icmp_seq=4 timeout
192.168.10.1 icmp_seq=5 timeout

PC-4>

可以看到这样还是不对,限制范围还是被扩大;我们的目的还是没有达到呢。

整理下icmp的通讯过程,这其实也是合理的;但是我们的目标没有实现;继续想办法。走到现在只有一个问题:pc4在ping pc1的的过程中,pc的回应包被丢弃了。

但是大家仔细想一想这种场景的要求对于包过滤机制的ACL需要更进一步的拆包匹配关键值。

6.调整配置参数

SW1(config-ext-nacl)#deny icmp host 192.168.10.12 host 192.168.40.1 ?
  <0-255>                      ICMP message type
  administratively-prohibited  Administratively prohibited
  alternate-address            Alternate address
  conversion-error             Datagram conversion
  dod-host-prohibited          Host prohibited
  dod-net-prohibited           Net prohibited
  dscp                         Match packets with given dscp value
  echo                         Echo (ping)
  echo-reply                   Echo reply
  fragments                    Check non-initial fragments
  general-parameter-problem    Parameter problem
  host-isolated                Host isolated
  host-precedence-unreachable  Host unreachable for precedence
  host-redirect                Host redirect
  host-tos-redirect            Host redirect for TOS
  host-tos-unreachable         Host unreachable for TOS
  host-unknown                 Host unknown
  host-unreachable             Host unreachable
  information-reply            Information replies
  information-request          Information requests
  log                          Log matches against this entry
  log-input                    Log matches against this entry, including input
                               interface
  mask-reply                   Mask replies
  mask-request                 Mask requests
  mobile-redirect              Mobile host redirect
  net-redirect                 Network redirect
  net-tos-redirect             Net redirect for TOS
  net-tos-unreachable          Network unreachable for TOS
  net-unreachable              Net unreachable
  network-unknown              Network unknown
  no-room-for-option           Parameter required but no room
  option                       Match packets with given IP Options value
  option-missing               Parameter required but not present
  packet-too-big               Fragmentation needed and DF set
  parameter-problem            All parameter problems
  port-unreachable             Port unreachable
  precedence                   Match packets with given precedence value
  precedence-unreachable       Precedence cutoff
  protocol-unreachable         Protocol unreachable
  reassembly-timeout           Reassembly timeout
  redirect                     All redirects
  router-advertisement         Router discovery advertisements
  router-solicitation          Router discovery solicitations
  source-quench                Source quenches
  source-route-failed          Source route failed
  time-exceeded                All time exceededs
  time-range                   Specify a time-range
  timestamp-reply              Timestamp replies
  timestamp-request            Timestamp requests
  tos                          Match packets with given TOS value
  traceroute                   Traceroute
  ttl-exceeded                 TTL exceeded
  unreachable                  All unreachables
  <cr>

SW1(config-ext-nacl)#





##echo-reply可能是有用的参数
##重新定义ACL
SW1#conf t
SW1(config)#ip access-list extended exdeny-pc1-to-pc4
SW1(config-ext-nacl)#no deny icmp host 192.168.10.1 host 192.168.40.1
SW1(config-ext-nacl)#no permit ip any any
SW1(config-ext-nacl)#permit icmp host 192.168.10.1 host 192.168.40.1 echo-reply
SW1(config-ext-nacl)#deny icmp host 192.168.10.1 host 192.168.40.1
SW1(config-ext-nacl)#permit ip any any
SW1(config-ext-nacl)#exit
SW1(config)#wr
SW1#show access-lists
Extended IP access list exdeny-pc1-to-pc4
    10 permit icmp host 192.168.10.1 host 192.168.40.1 echo-reply
    20 deny icmp host 192.168.10.1 host 192.168.40.1
    30 permit ip any any
SW1#

7.再次测试PC-1和PC-4的连通性

##测试pc1 ping pc4
PC-1> ping 192.168.40.1
*192.168.10.254 icmp_seq=1 ttl=255 time=45.049 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.10.254 icmp_seq=2 ttl=255 time=14.865 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.10.254 icmp_seq=3 ttl=255 time=15.006 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.10.254 icmp_seq=4 ttl=255 time=14.758 ms (ICMP type:3, code:13, Communication administratively prohibited)
*192.168.10.254 icmp_seq=5 ttl=255 time=15.107 ms (ICMP type:3, code:13, Communication administratively prohibited)

PC-1>
##PC4测试ping PC1
PC-4> ping 192.168.10.1
84 bytes from 192.168.10.1 icmp_seq=1 ttl=63 time=30.112 ms
84 bytes from 192.168.10.1 icmp_seq=2 ttl=63 time=30.174 ms
84 bytes from 192.168.10.1 icmp_seq=3 ttl=63 time=29.724 ms
84 bytes from 192.168.10.1 icmp_seq=4 ttl=63 time=30.044 ms
84 bytes from 192.168.10.1 icmp_seq=5 ttl=63 time=30.234 ms

PC-4>

OK,目标达成!!!

实验做到这里我们再说个重点:

ACL只对穿越的数据包有作用;没有穿越的数据包不会起作用的。

例如:

PC1测试ping vlan 40的网关地址

##PC1测试ping vlan 40的网关地址

PC-1> ping 192.168.40.254
84 bytes from 192.168.40.254 icmp_seq=1 ttl=255 time=14.927 ms
84 bytes from 192.168.40.254 icmp_seq=2 ttl=255 time=14.960 ms
84 bytes from 192.168.40.254 icmp_seq=3 ttl=255 time=15.118 ms
84 bytes from 192.168.40.254 icmp_seq=4 ttl=255 time=14.768 ms
84 bytes from 192.168.40.254 icmp_seq=5 ttl=255 time=30.419 ms

PC-1>

这里还是可以通的,因为数据包没有穿过vlan 40。


好了,以上就是本篇文章的全部内容;喜欢的朋友可以收藏加点赞;谢谢!

本文作者:夏明亮

更新于:2023/6/6