在某些环境中,可能会出现这样一种需求:在每个工作日(星期一到星期五)的8:30-17:30可以访问公司内部的某些服务,下班后和非工作日则不能访问。在这种情况下标准的ACL和扩展的ACL就无法满足控制需求,所以这里产生了带时间的访问控制列表,带时间的访问控制列表从使用原则与语法上讲与基础ACL没有太大区别,区别在于它能使控制策略在不同的时间段生效。
配置带时间ACL的注意事项:
n配置带时间的ACL必须保证网络上的时钟是同步,可以分别到路由器设置时间,也可以通过NTP(网络时钟协议)来同步网络中的时间。
n配置带时间的ACL,必须要建立时间表。
n配置ACL的控制语句,然后将建立的时间表关联到ACL上。
演示:带时间ACL的配置
演示目标:配置带时间的ACL
演示环境:如下图10.17所示的演示环境。
演示背景:公司有提供两种Web服务,一个是基于众所周知80号端口的Web服务,一个是基于TCP8001端口的Web服务。要求主机A在每个工作日(星期一到星期五)的8:30-17:30可以访问公司基于众所周之端口号80的Web服务,但是不允许访问TCP端口是8001的Web服务,在非工作时间(星期一到星期五的17:31-8:29,星期六和星期天的全天)才可以访问TCP端口是8001的Web服务,但是不能访问公司基于众所周知的Web服务,任何时间都可以访问DNS服务器,请使用带时间的ACL完成上述的控制要求。
演示步骤:
第一步:首先是为网络配置时钟同步,在路由器R1上配置时钟源,然后将其配置成时钟服务器既NTP服务器。最后路由器R2通过时钟服务器R1进行时钟同步,具体配置如下所示:
配置路由器R1的时钟源:
R1#clock set 00:52:30 18 jun 2012 * 配置路由器R1的时间(写作时的时间)
R1(config)#ntp master * 配置路由器R1为NTP服务器。
R1(config)#ntp source ethernet 1/1 * 指示NTP的更新源接口为路由器R1的E1/1。
配置路由器R2从NTP服务器获得时间同步:
R2(config)#ntp server 192.168.2.1 * 申明NTP服务器的IP地址(路由器R1的E1/1)
第二步:确保在没有配置ACL之前,主机A可以任意的访问192.168.3.100的各项服务,现在根据演示背景的要求,主机A在每个工作日(星期一到星期五)的8:30-17:30可以访问公司基于众所周之端口号80的Web服务,但是不允许访问TCP端口是8001的Web服务,在非工作时间(星期一到星期五的17:31-8:29,星期六和星期天的全天)才可以访问TCP端口是8001的Web服务,但是不能访问公司基于众所周知的Web服务,任何时间都可以访问DNS服务器,具体的配置如下:
在路由器R1上配置带时间的ACL:
R1(config)#time-range workday * 命名一个叫做“workday”的时间段。
R1(config-time-range)# ? * 使用帮助系统(?)查看时间段下可配置的指令。
Time range configuration commands:
absolute absolute time and date * 配置绝对时间的关键字
default Set a command to its defaults
exit Exit from time-range configuration mode
no Negate a command or set its defaults
periodic periodic time and date * 配置周期时间的关键字
绝对时间指一个具体的开始时间到一个明确的结束时间,绝对时间不具备复用性;周期时间,则具备复用性。在该演示环境中,使用周期时间来完成时间配置,具体配置如下:
R1(config-time-range)#periodic weekdays 08:30 to 17:30
* 配置可访问的工作日周期时间,关键字weekdays指示工作日(星期一到星期五)。
R1(config)#time-range noworkday * 配置一个叫做noworkday非工作时间的时间段。
R1(config-time-range)#periodic weekdays 17:31 to 23:59
* 配置星期一到星期五的17:31 到23:59的非工作时间周期。
R1(config-time-range)#periodic weekdays 00:00 to 8:29
* 配置星期一到星期五的00:00 到 8:29的非工作时间周期。
R1(config-time-range)#periodic weekend 00:00 to 23:59
* 配置周末的非工作时间,weekend表示周末。
ip access-listextended filter * 建立一个名叫“filter”的扩展控制列表。
permit udp host 192.168.1.2 host 192.168.3.100eq domain
* 任何时间都可以访问DNS服务,该语句没有必要带上时间段。
permit tcp host 192.168.1.2 host 192.168.3.100eq www time-range workday
* 允许工作时间访问基于众所周知端口号的Web服务。关联工作时间段“workday”。
deny tcp host 192.168.1.2 host 192.168.3.100 eq 8001 time-range workday
* 不允许工作时间访问基于TCP 8001端口的Web服务,关联工作时间段“workday”。
permit tcp host 192.168.1.2 host192.168.3.100 eq 8001 time-range noworkday
* 允许非工作时间访问基于TCP 8001端口的Web服务。关联非工作时间段“noworkday”。
deny tcp host 192.168.1.2 host 192.168.3.100 eq wwwtime-range noworkday
* 不允许非工作时间访问众所周知端口号的Web服务,关联非工作时间段“noworkday”。
R1(config)#interfacee1/0
R1(config-if)#ipaccess-group filter in * 将带时间的ACL应用到R1的E1/0入方向
R1(config-if)#exit
第三步:现在开始测试带时间的ACL是否生效,目前主机192.168.1.2上访问192.168.3.100的各项服务,现在根据演示背景的要求在R1上通过show ip access-lists查看带时间ACL对数据包的匹配如下图10.18所示。