欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

从“987分飘过,栽在ACL in/out~” 说开去

程序员文章站 2022-05-29 18:02:34
...

几天前在某论坛中看到一个帖子,标题是“ 987分飘过,栽在ACL in/out~ ”。今天写这篇博文的时候,再去论坛里找,却没有找到。幸好我还记得很清楚,得以继续这篇博文。 这个帖子的内容是这样的:LZ考过了CCNA,但有一道关于ACL的题目,使他只得到了987分,否

几天前在某论坛中看到一个帖子,标题是“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

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 on the interface f0/1 , in direction or on the f0/0, out direction ?应该应用在f0/1的in方向呢?还是f0/0的out方向?

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

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

表面上看似简单的问题,也许下面隐藏着很深的奥秘。这虽然是一个ccna级别的问题,看似简单,如果我们深入思考下去,能触及研发人员的思路。如果我们能理解研发人员的思路,我们掌握这些技术则是很容易的事了。

深入思考问题首先需要有端正的态度。在另一篇博文-《评“哗众取宠”的书名》里反驳了某人的态度。其认为《拨开CCNA迷雾-重点及疑难解析》这个书名有点哗众取宠。他认为CCNA是很简单的,只要“背背题库,敲敲版本”就没什么“迷雾”了。从这道ACL的题目上反映的问题来看,好像并不是那么简单的事情。