几天前在论坛中看到一个帖子,标题是“987分飘过,栽在ACL in/out~ ”。今天写这篇博文的时候,再去论坛里找,却没有找到。幸好我还记得很清楚,得以继续这篇博文。

       这个帖子的内容是这样的:LZ考过了CCNA,但有一道关于ACL的题目,使他只得到了987分,否则就是满分1000分了。所以把这道ACL的题目也发出来了,希望别人给予指点。

       网络拓扑如下:

       WEB server ---------> f0/0 (Router) f0/1 ----------> (LAN) ------ Host1 Host2 Host3 ...

       题目的要求是禁止某台主机访问WEB server。

       他的访问列表是这样写的:

       access-list 101 deny tcp <主机地址> < server地址>  <80> 

       access-list 101 permit ip any any

      根据他在帖子里的描述,他把该ACL放置在f0/0接口上的in方向上,故此失掉了分数。但他还是没明白为什么。他认为只要不让访问服务器的数据从f0/0接口进,或者出,即可满足要求。因此他把ACL用在了in方向上。

       我们来分析一下。(1)他的想法是对的,但不深刻。因为没有分清楚进入f0/0的数据和从f0/0外出的数据是不同的。要区分清楚数据流,需要分析一下IP报文的结构及其各字段内的值。进入f0/0的数据,其源地址是服务器的地址,目标地址是主机的地址,目标端口号肯定不是80,应该是主机发送http数据使用的源端口号;从f0/0出来的数据,其源地址是主机,目标地址是服务器,目标端口是80。(2)关于方向。有了上述分析后,自然知道该把ACL应用在哪个方向。就上述ACL,应该应用在f0/0的out方向才起效。(3)也可以用在f0/1的in方向。

      从 LZ帖子标题的前半句看,考试通过了,分数还不低,考生的兴奋心情溢于言表,所以是“飘过”。当然,pass了考试,对每一个人来说都是件高兴的事,如果是高分通过,那就值得兴奋了。对在中国教育制度下的学生来说尤其如此。再看后半句,“栽在ACL in/out ~”,好像当头一盆冷水-连基本的ACL in/out都没搞懂,又有什么值得兴奋的呢?很显然,是背题考过的。如果不继续学习,即便有了证书,工作起来恐怕仍然吃力。

       背题现在成了流行的考试方式,单从应试角度来说,也没什么,毕竟考试只是个手段,掌握技能才是重要的。但如果把考试看作是目的,只为那一个证书而考,最终连那个证书也意义不大了。前几天在论坛里还看到一个帖子,标题是“别小看了CCIE”,发贴的大概是个CCIE,他回应的是业界对CCIE的含金量的质疑。许多人认为考CCIE也是“背背题库,敲敲版本”而来的。真实水平并不是那么高的。该发贴人就说,思科设置的CCIE并不是让你背题敲版本的,思科建议有1~3年的实际工程、维护经验的人去考。背题敲版本的就算不上CCIE,真的CCIE还是很有水平的,不要小看了这些人。

       我们应该重新思考一下考证和学习的关系,如何在行业树立一个良性的风气。Paper多了,对企业和个人都不利。考和学应该兼顾,考是手段,学才是真正目的。

       无独有偶,同一天在思科学习空间上也看到一个帖子,内容也是关于ACL in/out的。帖子用英文写的,很显然,发贴的是个外国朋友。拓扑、要求同上。这位朋友的疑问是:Should I apply ACL in, on interface f0/1   or out, on f0/0 ?应该应用在f0/1的in方向呢?还是f0/0的out方向?

       因为扩展ACL既检查源地址,也检查目标地址,所以,当使用扩展ACL时,应该尽量应用在靠近数据发源地的路由器接口。也就是放在f0/1的in方向。这样,数据到达该接口后,就被丢弃,不需要再经过路由进程,查路由表,然后把数据转到f0/0接口,再经过检查ACL,被丢弃。节约了路由器系统资源。当然也节约了处理时间。

      通过对比这2个同样是关于ACL in/out的问题,我们发现,这2位考虑问题的深度截然不同。前一位对数据流方向和IP报文结构不熟悉,其实是TCP/IP协议没学习好。后一位显然在考虑深层次的问题。已经考虑路由器的架构、路由过程和报文处理过程了。

       表面上看似简单的问题,也许下面隐藏着很深的奥秘。

 

本文出自 “当孝敬父母,使你得福-圣经” 博客,请务必保留此出处http://gooltsing.blog.51cto.com/2538122/474794