NTP网络时钟协议的实现
转自:
参考信息:
NTP网络时钟协议的实现
概念简介及含义
网络时间协议Network Time Protocol( N T P)是用来在整个网络内发布精确时间的T C P / I P协议,其本身的传输基于U D P,保留端口号123。它可以使计算机或网络设备对其服务器或时钟源(如石英钟,GPS等等)做同步化,可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。NTP提供准确时间,首先要有准确的时间来源,这一时间应该是国际标准时间UTC。 NTP获得UTC的时间来源可以是原子钟、天文台、卫星,也可以从Internet上获取。这样就有了准确而可靠的时间源。时间按NTP服务器的等级传播。按照离外部UTC 源的远近将所有服务器归入不同的Stratun(层)中。Stratum-1在顶层,有外部UTC接入,而Stratum-2则从Stratum-1获取时间,Stratum-3从Stratum-2获取时间,以此类推,但Stratum层的总数限制在15以内。所有这些服务器在逻辑上形成阶梯式的架构相互连接,而Stratum-1的时间服务器是整个系统的基础。计算机主机一般同多个时间服务器连接, 利用统计学的算法过滤来自不同服务器的时间,以选择最佳的路径和来源来校正主机时间。即使主机在长时间无法与某一时间服务器相联系的情况下,NTP服务依然有效运转。为防止对时间服务器的恶意破坏,NTP使用了识别(Authentication)机制,检查来对时的信息是否是真正来自所宣称的服务器并检查资料的返回路径,以提供对抗干扰的保护机制。
NTP的实现
一、 Windows系统下的实现(PC-PC):
服务器端(Windows2000 OR WindowsXP):
方法一:
第一步:指定主时间服务器。在DOS方式输入“net time /setsntp:pool.ntp.org”,这里我们指定pool.ntp.org是主时间服务器,也可以是其它地址。
第二步:开始与主时间服务器同步。先关闭windows time服务,再开启该服务。可以在“管理工具”的“服务”界面下完成,也可以以DOS方式输入“net stop w32time”、“net start w32time”。
第三步:设置电脑的Windows time服务的启动方式为自动。在“管理工具”的“服务”界面下完成。注意这台windows主机不能加入任何域,否则无法启动windows time服务。此时,这台windows电脑已经是互联上主时间服务器的客户了,以后每次电脑启动时,都会自动与主时间服务器校对时间。如果网络不通,电脑也会过45分钟后再次自动校对时间。需要注意的是电脑的时钟与标准时间误差不能超过12小时,否则不能自动校对,而要手动校正了。
第四步:使这台电脑成为时间服务器,供局域网内部的电脑校对时间。运行“regedit”把 “HKEY_LOCAL_MACHINE_SYSTEM_CurrentControlSet_Services_W32Time_Parameters”中的 LocalNTP改为1即可。
方法二:
安装第三方NTP服务器软件,推荐使用NTP V4.1
1.安装时提示设置服务器地址,输入ntp服务器的IP地址
2.ntpd的控制:控制面板->;管理工具->;组件服务-NetworkTimeProtocol
3.可以启动ntpd守护进程保持时间同步
4.在C:\WINNT目录下有个ntp的配置文件ntp.conf
设置为:
server 127.127.1.0 prefer
fudge 127.127.1.0 stratum 10
5.确定ntp是否工作: ntpq –p
客户端:
客户端的主要任务是连接到局域网内的时间服务器,以保持电脑的时钟与服务器同步。分Linux、Windows98、2000、XP几种情况介绍
1、LINUX主机
其实在上面介绍Linux系统中的ntp服务时,已经提到ntp时间服务时同时也是一个时间服务的客户端,只要把/etc/ntp.conf文件中的 “server pool.ntp.org”改为“server 内部时间服务器IP地址”即可。如不想使用ntp服务,也可使用ntp软件包中带来的ntpdate命令,只要手工执行“ntpdate 时间服务器IP地址”即可。如想每天自动对时,可以把这条命令放在cron中,注意在同一台电脑上ntp服务与ntpdate命令不能同时使用。
2、Windows2000主机
执行设置时间服务器时的前三步即可
3、WindowsXP主机
可以按Windows2000主机的方法设置,也可双击任务栏右下角的时钟图标,打开“日期时间属性”对话框,在“Internet时间”卡片上选中“自动与Internet时间服务器同步”,并在服务器上填入内部时间服务器的IP地址即可。
4、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客户端配置同前两种方法。
阅读(5703) | 评论(0) | 转发(0) |