NTP协议全称网络时间协议(Network Time Procotol)。它的目的是在国际互联网上传递统一、标准的时间。具体的实现方案是在网络上指定若干时钟源网站,为用户提供授时服务,并且这些网站间应该能够相互比对,提高准确度。

我们知道,高端的路由器,一般都使用电池来保存我们的这个时间,但是我们有的低端的路由器或者交换机它没有电池保护,那当我们将此路由器或者交换重启动了以后呢?它的时间又会恢复到以前出厂的时间去了。

而这个时间,在我们的路由器上面的作用还是很大的。比如我们在建立×××的时候,如果两边时间不一致的话,有时候也会出问题?还有就是,我们有时候要查看日志,而这个日志的时间是以我们路由器默认的时间,也就是出厂的时候的。那么我们就需要将我们的路由器指定一个时钟源,从时间源那里来更新我们的时间。下面我们来看看使用我们的Cisco Packet Tacer来带着大家做一下这个实验。

clip_image002

拓扑图很简单,就一台路由器连接到一个服务器上面,我们在服务器上面开启我们的NTP服务功能。

下面我们来看看如何配置呢?

Router(config)#int fa0/0
Router(config-if)#ip add 192.168.1.1 255.255.255.0
Router(config-if)#no shut
Router(config-if)#exit
Router(config)#

我们先把接口配置起来,要使路由器能够与我们的NTP服务器正常通信。

clip_image004

配置NTP服务器的IP地址。

clip_image006

在这里我们可以看见,它默认的NTP服务是已经打开的,而下面是我们当前的一个时间。它的这个时间应该是从我们的PC上面获取到的,但是这里要注意的是,因为我们中文的,等一会在我们的路由器里面会显示乱麻。那我们现在怎么办呢?

我们进入“控制面板”,选择clip_image008 下面的clip_image010 ,打开我们的“区域和语言选项”如下图:

clip_image012

在“示例”上面,我们选择“英语(美国)”,而在我们的“长日期”后面就显示我们的英文了,但是要注意的是,因为时区不一样,所以时间不是我们当前的时间哦。

我们现在再打开Cisco Packet Tracer来看看我们的服务器里面的是不是英文的了呢?

clip_image014

看看我们的时间是不是正常了,显示的是英文的了。好了那么我们接着继续。

我们知道有时候我们的什么debug命令或者显示一个日志的时候在前面会显示这个时间。而在Cisco Packet Tracer默认是将这个关闭了的,那么我们有时候想查看这个日志是什么时候产生的,就没有办法。我们可以看看下面的结果:

ICMP: echo reply sent, src 192.168.1.1, dst 192.168.1.2
Router#
ICMP: echo reply sent, src 192.168.1.1, dst 192.168.1.2
Router#
ICMP: echo reply sent, src 192.168.1.1, dst 192.168.1.2
Router#
ICMP: echo reply sent, src 192.168.1.1, dst 192.168.1.2

我现在打开的是debug ip icmp,我要查看什么时候,那个IP地址在ping我,而这里就只显示了那个IP在ping我,而没有显示什么时候,那么我们如何来设置让这个日志前面来显示一个时间呢?

Router(config)#service timestamps log datetime msec
Router(config)#service timestamps debug datetime msec

第一条命令是打开日志的时间显示。第二条命令是打开debug的时间显示,我们现在在从Server0上面来ping我们的路由器看看在我们的debug信息前面有没有时间了呢?

*Mar 01, 00:06:30.066: ICMP: echo reply sent, src 192.168.1.1, dst 192.168.1.2
Router(config)#
*Mar 01, 00:06:31.066: ICMP: echo reply sent, src 192.168.1.1, dst 192.168.1.2
Router(config)#
*Mar 01, 00:06:32.066: ICMP: echo reply sent, src 192.168.1.1, dst 192.168.1.2
Router(config)#
*Mar 01, 00:06:33.066: ICMP: echo reply sent, src 192.168.1.1, dst 192.168.1.2

注意看我上面加粗的那几行字,是不是我们的时间呢?但是你们发现这个时间对吗?

那么我们如何来设置这个路由器的时间呢?我们可以通过以下这条命令来进行设置。

Router#clock set 14:30:30 October 18 2009

对于大家来说,这条命令就不用多说了嘛,应该一看就懂嘛!

我们再来测试一下看看debug信息呢?

*Oct 18, 14:30:37.3030: ICMP: echo reply sent, src 192.168.1.1, dst 192.168.1.2
Router#
*Oct 18, 14:30:38.3030: ICMP: echo reply sent, src 192.168.1.1, dst 192.168.1.2
Router#
*Oct 18, 14:30:39.3030: ICMP: echo reply sent, src 192.168.1.1, dst 192.168.1.2
Router#
*Oct 18, 14:30:40.3030: ICMP: echo reply sent, src 192.168.1.1, dst 192.168.1.2

注意看一下我们的那个加粗的时间,是不是以我们刚才设置了的时间开始计时了呢?

我们知道,这个时间时区我们还没有设置,那我们如何来设置时区呢?

Router(config)#clock timezone beijin 8 0

而这里我们只能设置两地相差多少时间,beijin是一个随便取的名称,而后面的8表示相差8小时,0表示0分钟。

要注意的是缺省路由器使用UTC

我们知道,使用路由器手动设置的时间那一天如何路由器出问题了,那我们的时间也会随之出问题,那么我们能不能命令网络上面的时间服务器,我们路由器通过指定NTP的时钟源服务器,这个即使我们的路由器出问题,而它的时间还是不会受影响。

那么下面我们来看看这个NTP如何来配置呢?

Router(config)#ntp server 192.168.1.2 指定NTP服务器
Router(config)#ntp update-calendar

由于NTP同步的是内部时钟,所以需要配置ntp update-calendar 来同时同步其calendar时钟。

当我们设置好了以后,我们再来查看一下日志信息呢?

*Oct 18, 15:15:01.1515: %SYS-5-CONFIG_I: Configured from console by console

我们可以看看,现在的当前时间。

那么我们使用“show clock”来查看一下当前的时间。

Router#show clock
*15:15:9.734 UTC Sun Oct 18 2009

看看是不是我们当前的日期,我来看看看我们NTP服务器上面的时间对不对。

clip_image016

在这里要注意的是,我们的NTP服务器上面显示的是12小时制,而我们的路由器上面显示的是24小时制哦。

Router#show ntp status
Clock is synchronized, stratum 2, reference is 192.168.1.2
nominal freq is 250.0000 Hz, actual freq is 249.9990 Hz, precision is 2**19
reference time is CE5E239C.000001A6 (15:19:56.422 UTC Sun Oct 18 2009)
clock offset is 0.00 msec, root delay is 0.00  msec
root dispersion is 0.02 msec, peer dispersion is 0.02 msec.
Router#

使用“show ntp status”来查看当前的状态。

在这里我们可以看到它从那台服务器那里获取来的,当前的时间之类的等等。

在这里我们路由器已经从NTP服务器那里正常获取到了我们的时间了,那如果那一天,有人也做了一台NTP服务器,而把它的IP地址也改成我们NTP服务器的IP地址,那我们路由器不是要从他那里获取一个错误的时间吗?所以我们在使用它的时候还可以给他来做一个认证,这样就可以避免这类事情的发生了。

那我们来看看它如何来做认证呢?

clip_image018

在我们的服务器端有一个“Authentication”,将它启用,然后输入我们的“key”,再输入我的密码,这时候我们就需要在路由器上面去进行设置了。

Router(config)#ntp authentication-key 1 md5 cisco
Router(config)#ntp authenticate

这样就可以对它们进行认证了。

Router#debug ntp packets
NTP packets debugging is on
*Mar 01, 00:03:02.033: ar 01 00:03:02.906: NTP: xmit packet to 192.168.1.2
Router(config)#
*Mar 01, 00:03:03.033: ar 01 00:03:03.422: NTP: xmit packet to 192.168.1.2
*Oct 18, 15:37:10.3737: ar 01 00:03:03.453: NTP: rcv packet from 192.168.1.2
Router(config)#
*Oct 18, 15:37:10.3737: ct 18 15:37:10.484: NTP: xmit packet to 192.168.1.2
*Oct 18, 15:37:11.3737: ct 18 15:37:10.516: NTP: rcv packet from 192.168.1.2

哎这里面关于它的DEBUG信息太少了。

好了就到这里嘛!这就是大至的NTP的一个使用。应该还算清楚吧!