六、分时间段实行限制
祥子的一位朋友在一家公司工作,和朋友聊天时了解到这家公司为了提高工作效率,防止员工过度使用互联网,用技术手段实现了早上10点至下午4点之间是不能访问互联网的,但是可以使用邮件,我一听觉得这个应用挺神奇,但是不知道是如何实现的,学习过ACL以后,发现通过ACL也可以使用这样的效果。我们的设想是fa0/22端口上所带的微机,0:00至10:00和16:00至23:59是可以浏览网页的,但是10:00至16:00之间(也就是主要的工作时间)是不允许浏览网页的,但是全天都是可以使用邮件的(也就是POP3和SMTP服务)。
要求大概就是这样子的,但是祥子具体在做这个ACL的时侯却是一波三折的,这里又涉及到另外一个重要的问题,即作为网络管理员,在接到领导或用户对于网络管理的需求的进侯,一定要正确的将这个需求翻译成网络设备能够认可的语句,比如我们要实现办公用户在10:00至16:00这个时间段可以上网浏览网页,要做到第一,80端口要放开,我看到很多资料上都只写了这一条,但是只写这一条就可以了吗,真正应用后就会发现是上不去网的,只能通过输入网站的IP地址的方式才能上,为什么呢,因为上网还需要DNS(域名解析服务)啊,所以,第二,要开放DNS服务的53端口,第三,要知道DNS服务是UDP协议,第四,每一个permit语句以后都要跟time-range选项,这四项选一不可,而且,还要保证交换机上面时间的正确性(用show clock命令看一下时间,多半与现在的时间不符),结上所述,我们这个例子可以总结为交换机22端口下所带网络,只允许在工作日(星期一至五)的10:00至16:00访问网页,但是可以在0:00至23:59之间都可以使用邮件
3550#show clock
16:08:52.086 UTC Wed Sep 17 2008
3550#conf t
Enter configuration commands, one per line. End with CNTL/Z.
3550(config)#time-range allow-http
3550(config-time-range)# periodic weekdays 16:00 to 23:59
3550(config-time-range)# periodic weekdays 0:00 to 10:00
3550(config-time-range)#end
3550#conf t
Enter configuration commands, one per line. End with CNTL/Z.
3550(config)#time-range allow-email
3550(config-time-range)#periodic weekdays 0:00 to 23:59
3550(config)#ip access-list extended strict
3550(config-ext-nacl)#permit tcp any any eq smtp time-range allow-email
3550(config-ext-nacl)#permit tcp any any eq pop3 time-range allow-email
3550(config-ext-nacl)#permit tcp any any eq www time-range allow-http
3550(config-ext-nacl)#permit udp any any eq domain time-range allow-http
3550(config)#inter fa0/22
3550(config-if)#ip access-group strict in
3550#show access-list
Extended IP access list strict
permit tcp any any eq www time-range allow-http (active)
permit udp any any eq domain time-range allow-http (active)
permit tcp any any eq smtp time-range allow-email (active)
permit tcp any any eq pop3 time-range allow-email (active)
3550#show time-range
time-range entry: allow-email (active)
periodic weekdays 0:00 to 23:59
used in: IP ACL entry
used in: IP ACL entry
time-range entry: allow-http (active)
periodic weekdays 16:00 to 23:59
periodic weekdays 0:00 to 10:00
used in: IP ACL entry
used in: IP ACL entry
这个实验祥子是做了多次才成功的,当然失败一次就可以总结一次教训,为下一次的操作积累一些经验,当功夫下到的进侯,成功可能就不期而至了。作为网络管理员,面对复杂的网络环境,必须要勇于面对失败,同时要保持到成功的渴望,所谓从质变到量变,也可以理解为失败的次数必须累积到一定的程度,才可以达到成功的结果。
当然在学习新知识的过程中也是有些小技巧的,祥子有次和同事聊天,说起自己学习CISOC设备配置命令的心得,好象都是看英文的文档学会的,同事说你的英语水平很高啊,其实祥子看那些英文文档时也是看得似懂非懂的,但是这种模糊感,为祥子对配置命令的理解留出了一定的空间。祥子学习新的配置命令的过程一般是这样的,先看电子版的文档,把与自己本次工作有关的章节选择,打印出来,再看一遍打印稿,然后拿一个铅笔,逐字逐行的进行翻译,就直接翻译到英文文档的空白处,当然很多地方翻译的不通顺,但是硬着头皮写,直到最后,然后再头到尾翻译,把前一次翻译的不通的地方修改一下,这个过程大概进行个两三遍,然后在新的稿纸上,根据自己实际的网络环境和网络设备,参照文档里面的例子设计自己的例子,当然设计的例子有成功的,有失败的,再多想想,或者参考一下中文文档或是上网查一下资料(这个过程因为有了前期的准备作为基础,可以做到以我为主,对于参考资料的学习就可以做到有的放矢),失败的例子可以下次再做时又成功了,通过这个过程,慢慢的就把新的配置命令学会了,而且还可以解决实际工作中的问题。
七、为ACL作注释
看着离一个完整的方案越来越近了,祥子心中感到一丝喜悦,但是觉得离一个完美的方案还缺点什么,那到底是什么呢?对了,是对ACL的注释,特别是对于对数字命名的ACL,即使是亲自写ACL的人,过一段时间也可能记不起来这个ACL是干什么的了,所以为ACL作注释是时常必要的,下面的ACL从功能上来说没什么特殊的地方,但是加上注释,一个是方便理解,二来是可以巩固我们对于ACL的认识。
例一是允许10.66.5.246这台主机通过,但是拒绝10.66.6.246这台主机通过。
3550#show run
access-list 11 remark do not allow ywb6246 through
access-list 11 deny 10.66.6.246
access-list 11 remark permit only ywb5246 through
access-list 11 permit 10.66.5.246
这个例子当然很好验证了,但是朋友们也可能会问,那么没在ACL中出现的同一网段内的其它主机,它们是怎么样呢?是被允许通过,还是被拒绝通,还是靠实验来说话吧,实验的结果是没有在ACL中被“permit”的主机,一概被拒绝了,即隐含了一句deny any any。
例二是不允许10.66.5/24这个网段向外telnet,但是允许10.66.7/24这个网段向外telnet。
ip access-list extended telnetting
remark do not allow 10.66.5/24 subnet to telnet out
deny tcp 10.66.5.0 0.0.0.255 any eq telnet
permit tcp 10.66.7.0 0.0.0.255 any eq telnet
好了,对于ACL的系统学习到这儿就基本结束,经过这一段时间的学习,祥子已经有能力,自己编写ACL来解决网络中的问题了,将学习的体会写出来供大家参考。