参考信息: NTP网络时钟协议的实现
概念介绍和含义
网络时间协议networktimeprotocol(NTP )是一种用于在整个网络中发布准确时间的T C P/I P协议,其自身的传输基于U D P,并拥有端口号123。 这允许计算机或网络设备与服务器或时钟源(石英时钟、GPS等)同步,提供高精度的时间修改(与LAN上的标准的差小于1毫秒,WAN上的几十毫秒),并通过加密进行确认NTP提供了准确的时间。 首先需要准确的时间源。 这个时间必须是国际标准时间UTC。 NTP获取UTC的时间源可来自原子钟、天文台、卫星或因特网。 这样就有了准确可靠的时间源。 时间按NTP服务器级别传播。 根据与外部UTC源的距离,将所有服务分组到不同的Stratun (分层)中。 Stratum-1位于顶层,具有外部UTC访问权限,Stratum-2从Stratum-1获取时间,Stratum-3从Stratum-2获取时间,依此类推,但Stratum分层的总数所有这些服务在逻辑上形成增量体系结构并相互连接,Stratum-1的时间服务是整个系统的基础。 计算机通常连接到多个时间服务器,并且使用统计学算法过滤来自不同服务器的时间,以选择最佳路径和源来校正主机时间。 即使主机长时间无法连接到服务器,NTP服务也可以正常工作。 为了防止对时间服务器的恶意破坏,NTP使用识别(Authentication )机制来检查成对的信息是否来自其声称的服务器,检查数据的返回路径,以及抗干扰保护机制
实现NTP
一、在Windows系统上实现(PC-PC ) :
服务器端(Windows2000 OR WindowsXP ) :
方法1 :
步骤1 :指定主时间服务器。 在DOS方式中输入“net time/set sntp 3360 pool.NTP.org”。 在此指定pool.NTP.org是主时间服务器还是其他地址。
步骤2 :开始与主时间服务器同步。 关闭windows time服务,然后启动该服务。 在“管理工具”的“服务”界面中进行,或者在DOS中输入“net stop w32time”、“net start w32time”。
步骤3 :自动设置电脑Windows time服务的启动方法。 在“管理工具”的“服务”接口下完成。 请注意,此windows主机无法加入域。 不参加,就无法启动windows time服务。 此时,此windows计算机已是连接到主服务器的客户,以后每次计算机启动时都会自动与主服务器对齐。 如果网络不通,电脑也将在45分钟后再次自动校准时间。 必须注意的是,电脑时钟和标准时间的误差不能超过12小时。 否则,无法进行自动校正,必须手动修正。
步骤4 :将这台电脑作为时间服务器,局域网内部的电脑对准时间。 运行" regedit ",在" HKEY _ local _ machine _ system _ current control set _ services _ w32time _ parameters "的LocalNTP中
方法2 :
安装第三方NTP服务器软件,并建议使用NTP V4.1
1 .安装时提示设置服务器地址,输入ntp服务器的IP地址
2.ntpd控制:控制面板-管理工具-组件服务-NetworkTimeProtocol
可以启动ntpd守护进程以维持时间同步
C:WINNT目录中包含ntp的配置文件ntp.conf
如下设定:
服务器127.127.1.0首选项
fudge 127.127.1.0 stratum 10
5 .检查NTP是否在: ntpqp上运行
客户端:
的主要任务是连接到局域网中的时间服务器,以保持计算机时钟与服务器的同步。 分Linux、Windows98、2000、XP几种情况介绍
LINUX主机
实际上,在上面介绍Linux系统的ntp服务时,他已经说ntp时间服务也是时间服务的客户端。 将/etc/ntp.conf文件中的“server pool.ntp.org”更改为“server内部时间服务IP地址”即可。 如果不想使用ntp服务,还可以使用ntp包中包含的ntpdate命令。 只需手动运行ntpdate时间服务器的IP地址。 如果希望每天自动定时,请将此命令放在cron中,注意同一台计算机上不能同时使用ntp服务和ntpdate命令。
Windows2000主机
执行设定时间服务器时的前三个步骤即可
WindowsXP主机
以Windows2000主机方式设置,或双击任务栏右下角的时钟图标,打开“日期和时间属性”对话框,然后在“internet时间”卡上单击“自动与internet时间服务器同步”
Windows98主机
需要安装第三方软件,建议
用achron 。软件操作简单,只要将“Hostname or IP Address”中输入局域网内时间服务器的IP地址,“Protocol”中选SNTP即可。当然在windows98电脑上执行“net time 机器名或IP地址 /set /yes”也可能与其它windows电脑同步时钟,前提是这些电脑在同一网段,并且安装有netbios协议。把该命令放在autoexec.bat 中,就可以做到开机自动对时了。二、 UNIX系统下的实现(PC-PC):
服务器端
以LINUX REDHAT 9.0为例:
第一步:检查是否已经安装有ntp软件包。输入“rpm -qa|grep ntp”,如果已经安装应该显示“ntp-4.1.2-0.rc1”。
第二步:安装ntp软件,从下载rpm包,输入“rpm -ivh ntp-xxx.rpm”执行安装。
第三步:配置ntp服务。备份原/etc/ntp.conf文件后,输入以下内容
server pool.ntp.org
server pool.ntp.org
server pool.ntp.org
driftfile /etc/ntp/drift
3行server都设pool.ntp.org是为了提供连接冗余,当第一个地址连接失败时,后面的地址提供时间服务,注意这里的pool.ntp.org对应一组IP地址,由DNS随机分配。
第四步:启动ntp服务。输入“service ntp restart”。 为了保证以后Linux机启动后ntp服务能自动启动,还要输入“chkconfig ntpd on”。Linux下的ntp软件不但能自动与互联网上的时钟保持同步,同时本身已经是一台SNTP服务器了,可以供局域网内的电脑校对时间。建议启动 NTP服务后,先用date命令手工校正一下时间,以后系统会自动与互联网上的主时间服务器保持同步。ntp服务还有一个好处,如果当前系统的时间与标准时间有所误差,它不是马上把时间校正,而是逐步缩小与标准时间的误差,以免系统内部出现时间突变。
以HP-UX为例:
在hp-ux系统上时区的配置文件是/etc/TIMEZONE,内容如下
TZ=EAT-8
export TZ
时区设置完毕就即可配置ntp服务器,修改配置文件/etc/ntp.conf,设置以下几个参数:
server 用来同步时间的上级服务器,网上有很多免费的。
restrict 设置访问权限,注意restrict default ignore一定要注释掉
参考设置示例:
server 203.117.180.36
restrict 192.168.0.0 mask 255.255.255.0 notrust nomodify notrap
允许192.168网段的机器访问服务器,但不允许他们修改。
客户端设置与Windows系统下实现的客户端设置相同
三、网络设备的NTP实现(以CISCO IOS为例):
NTP的时钟源在一般的情况下也可以使用路由器上的时钟。高档的路由器/交换机上提供了硬件时钟,称为calendat,与clock相互独立,在系统重启时clock使用calendar的值。可以用命令calendar set设置硬件时钟的值,用命令clock read-calendar将系统时钟设置为calendar的值,也可以用命令clock update-calendar将当前系统时钟值写入calendar中。在客户端,用ntp master x.x.x.x 指定NTP服务器地址(CatOS:set ntp server x.x.x.x),用命令ntp update update-calendar 可以让NTP协议定时更新calendar的值。如果更改了时钟源的时间,需要数分钟才能同步到客户端,更新calendar需要更长的时间。常用的调试命令有:show ntp status 和 show ntp associations等。
N T P的会聚( c o n v e rg e n c e )可能需要长达半个小时,这意味着在修改N T P主系统时钟之后,再过半个小时其它的时钟才进行同步。这是因为N T P将时钟的改变视为时钟系统的不稳定。NTP需在等待系统稳定后才会进行同步和传递时钟的改变
在Cisco网络系统中的NTP配置需要用到的命令及定义:
ntp access-group: 该全局命令用于路由器N T P服务的访问控制。
ntp authenticate: 是一个全局命令,它启用N T P身份验证。
ntp authentication-key: 该全局命令用于定义N T P身份验证的键值。
ntp broadcast: 是一个接口命令,用于指定一特定接口来发送N T P广播包。
ntp broadcast client: 是一个接口命令,使路由器通过特定接口来接收N T P广播包。
ntp broadcast delay: 是一个全局命令,它用于设定数据包在路由器和N T P服务器之间一个回程所需时间的估计值。
ntp clock-period: 这条全局命令不必输入,当使用N T P进行系统时钟同步时,路由器将自动产生这条命令。
ntp disable: 这条接口命令使特定接口不接收N T P包。
ntp master: 这条全局命令用来配置路由器为N T P主时钟,只有当没有可用的外部N T P源或者为测试用途才使用该命令。
ntp peer: 该全局命令使路由器的系统时钟与其对等体的时钟同步(或对对等体的时钟进行同步)。
ntp server: 该全局命令使路由器的系统时钟由时间服务器进行同步。
ntp source: 该全局命令强制路由器在其N T P包中使用特定的源地址。
ntp trusted-key: 该全局命令用于确认路由器的特定身份验证键值。
ntp update-calendar: 该全局命令使N T P周期性地更新Cisco 7XXX 系列路由器的日历。
show ntp status: 是一执行模式命令,用于显示路由器的N T P信息,它可以表明该路由器是通过N T P对等体进行时钟同步还是通过N T P服务器进行同步。
show ntp association[detail]: 这条执行模式命令显示与N T P有关的信息,如轮询周期等。
简要配置示例:
EXAMPLE 1
路由器A和路由器B通过串口连接,路由器A被设为N T P主时钟,路由器B都被配置成根据路由器A来同步时钟。
…
RouterA#clock set xx:xx:xx:xx
RouterA(config)# int s0
RouterA(config-if)#ip add 172.23.1.1 255.255.255.0
RouterA# ntp master 1
RouterB#ntp server 172.23.1.1
...
EXAMPLE 2
路由器A被设置为N T P主时钟,路由器B被配置成通过N T P服务器与路由器A进行时钟同步,路由器C则被配置成路由器B的对等体,与B的时钟同步。三台路由器通过串口进行连接,路由器A和B之间、路由器B和C之间的连接都使用交叉电缆。
...
RouterA#clock set xx:xx:xx:xx
RouterA(config)# int s0
RouterA(config-if)#ip add 172.23.1.1 255.255.255.0
RouterA# ntp master 1
RouterB#ntp server 172.23.1.1
RouterB(config-if) ip add 172.16.1.2 255.255.255.0
RouterC#ntp peer 172.16.1.2
...
EXAMPLE 3
使用局域网广播的CISCO NTP
3台路由器通过以太网接入同一个网段,路由器a作为NTP服务器通过e0接口向以太网发送NTP广播。
...
RouterA#clock set xx:xx:xx:xx
routerA(config0#int e0
RouterA(config-if)#ip add 172.23.1.1 255.255.255.0
RouterA(config-if)#ntp broadcast
RouterA# ntp master
RouterB(config)#int e0
RouterB(config-if) # ip add 172.23.1.2 255.255.255.0
RouterB(config-if) #ntp broadcast client
RouterC(config)#int e0
RouterC(config-if) # ip add 172.23.1.3 255.255.255.0
RouterC(config-if) #ntp broadcast client
PC客户端配置同前两种方法。