无论是在思科路由器还是思科交换机等网络设备上,标准的ACL访问控制列表都无法同时匹配通信源地址和目的地址的特性,也无法满足当今网络世界“粒度”控制的要求,比如允许访问某个服务器的某项服务功能,
但是不允许Ping服务器。那么,就有必要使用扩展ACL来代替标准ACL的应用。在实际应用控制中,扩展ACL似乎比标准ACL更受管理员欢迎。
演示目标:配置扩展ACL,为网络应用程序提供更精细的控制。
演示环境:标准ACL的配置部分用于演示,如下图ACL演示环境所示。
演示背景:需要主机A(192.168.1.2)访问服务器A的WEB服务;但是不允许主机Aping连接到服务器A所在的子网;允许主机Aping连接到服务器B和服务器C所在的子网。
请使用扩展ACL完成上述控制要求,并考虑在哪里应用ACL。
演示步骤:
第一步:保留上次实验的所有基本配置,但请删除所有原来的标准ACL配置,然后根据演示的背景要求完成下面的扩展ACL配置。建议在路由器R1上完成此配置。
因为扩展ACL可以同时匹配通信的源地址和目的地址,所以它应该位于更靠近通信源的位置。
R1(config)#access-list101permittcp192.168.1.00.0.0.255host192.168.5.2eqwww
*定义扩展ACL列表101(基于IP的扩展ACL编号范围为100-199);permit TCP 192.168.1.00 . 0 . 255 Host 192.168.5.2 EQ WWW表示允许源子网192 . 168 . 1 . 0访问目标地址192 . 168 . 5 . 2的TCP端口80。
R1(config)#access-list101denyicmp192.168.1.00.0.0.255host192.168.5.2
*定义扩展ACL列表101的第二条语句拒绝源子网192.168.1.0通过ICMP协议访问目标主机192.168.5.2。
R1(config)#access-list101permiticmp192.168.1.00.0.0.255host192.168.4.2
*定义扩展ACL列表101的第三条语句允许源子网192.168.1.0通过ICMP协议访问目标主机192.168.4.2。
R1(config)#access-list101permiticmp192.168.1.00.0.0.255host192.168.3.2
*定义扩展ACL列表101的第四条语句允许源子网192.168.1.0通过ICMP协议访问目标主机192.168.3.2。
R1(config)#interfacee1/0
R1(config-if)#ipaccess-group101in
R1(config-if)#exit
建议:将ACL101应用于路由器R1的E1/0接口,即距离源子网最近的位置,这样可以使ACL的利用率更高,流量更合理。因为扩展ACL可以同时匹配源地址和目标地址,所以理论上,
只要能满足控制标准,就可以应用在流量经过的任何设备上,但建议应用在离源子网最近的位置,因为不需要将最终过滤的流量转发到目标或者中途丢弃,对于宝贵的带宽利用率来说是不科学的。
第二步:完成上述配置后,在主机A(192.168.1.2)上访问服务器A的WEB服务,然后Ping服务器A、B、c,如果配置正确,应该会得到下图所示的状态,与后台描述中的控制要求一致。
步骤3:为了检查路由器R1的过滤状态,您可以通过在R1上执行showi access-lists命令来检查ACL的匹配状态,如下图10.13所示。
可以看出有5个WWW的数据包被允许;8个到服务器A的ICMP的数据包被拒绝;分别有4个到服务器B和C的ICMP数据包被允许。
关于ACL的其它输写形式与应用注意事项
在前面的几个小节中描述了关于标准与扩展ACL的应用,并演示了具体的配置过程,在本节主要对ACL的应用事项进行一下总结,其中包括ACL的输写形式、ACL的应用位置、ACL条目的增加与删除,具体如下:
关于ACL语句的输写形式:
access-list1permithost192.168.100.1等于access-list1permit192.168.100.10.0.0.0的功能,
语句中的host是申明配置的地址是一个主机地址,它等于反码的全匹配(0.0.0.0),以全匹配形式出现的反码,表示匹配的IP地址是一个主机IP地址。
access-list102permittcp0.0.0.0255.255.255.2550.0.0.0255.255.255.255eqwww等于access-list102permittcpanyanyeq80的功能,
access-list102permitiphost192.168.1.2host192.168.2.2等于access-list102permitip192.168.1.20.0.0.0192.168.2.20.0.0.0;ACL的语句中的源IP和目标IP都是具体的主机IP地址,
关于ACL应用位置的设计:
n标准ACL只关心源地址,所以必须将其应用到距离控制目标最近的接口位置。
n扩展ACL既关心源地址,又关心目标地址,建议将其应用到距离控制源最近的接口位置,这样可以优化流量,减少主干网上没有必要的流量开销。
n在同一接口、同一协议、同一方向只能应用一个访问控制列表。
n访问控制列表,只能过滤穿越路由器的流量,对应用访问控制列表的路由器本地产生的流量不生效。
关于在传统IOS版本中ACL条目的增加与删除问题
在传统的IOS版本中,对ACL条目的增加或者删除是一件非常痛苦的事情,因为当一个ACL的多条语句被配置在路由器之后,如果想要在ACL中增加一条过滤语句,
那么这条增加的语句将出现在已存在的所有ACL语句之后,这样就会出现安全漏洞,为网络造成风险行为,为了更好的理解这一点,现在要举一个实例:
用户首次已经完成了一条ACL101的编写:
ACL101的第一条语句:access-list101denyiphost192.168.1.2host192.168.2.1
ACL101的第二条语句:access-list101permitipanyany
现在用户希望更改原有的ACL101,希望在上述的两条语句之间加入如下所示的ACL语句:
access-list101denyiphost192.168.3.1host192.168.4.1
但是当你完成加入后,这条被加入的语句将被放到ACL101的最后,如下图所示,这样,它的匹配顺序也如图所示,最后加入的语句被放置到ACL列表的最后,而第二条语句是允许任何流量,
所以根本不会给第三条语句匹配的机会,那么第三条语句将永远不生效,即便是您可能希望它于permitanyany之前生效,但事实上它不会,这类似于微机原理里面的堆栈原理,先进入。先调用。
010-350002所以在传统IOS中管理员对ACL的修改变得很头痛,通常,管理员会把现在的ACL复制到一个文本文件中进行增加或者删除语句的操作,
然后把原本在路由器上配置的ACL通过noaccess-list101全部清除,再将文本文件中修改完成的ACL复制到路由器上,无法做到逐条修改ACL语句的效果。
使用ACL的增强编辑功能来增加与删除ACL条目
新的IOS将打破传统IOS对ACL条目修改的限制,如下图所示,它为每条ACL语句增加了序列号,比如第一条ACL语句的序列号是10,第二条ACL语句的序列号是20,
以10作为输写第一条ACL的基数数字序列号,然后,输写一条新的ACL语句就递增10,所以此时如果需要在序列号为10和20之间增加一条ACL语句,那么,只需要增加一条属于10-20之间的序列号,
新增的ACL语句就会存在于10和20之间。
比如,现在,在10和20之间增加一条序列号是15的ACL语句,具体配置如下所示,在,在配置语句中的15是指示即将插入的ACL语句的序列号,完成配置后,
可以在路由器上使用showipaccess-lists来查看各条ACL的语句如下图10.16所示,可看出在序列号10和20之间出现了一条序例号是15的ACL语句,
这就突破了传统IOS对ACL编辑的困难,它增强了对ACL的编辑能力。
在两条ACL语句之间插入一条序列号是15的配置:
R1(config)#ipaccess-listextended101
R1(config-ext-nacl)#15denyiphost192.168.3.1host192.168.4.1
#FormatImgID_5#
IOS的版本如此众多,在使用时,怎么知道,哪些IOS版本支持ACL的增强编辑功能,哪些IOS版本不支持ACL的增强编辑功能?很简单,用户不需要去记IOS的版本号,因为这确实是一件很难记住的事情,
可以直接