1、 简介:本文介绍了时间服务器常用的二种协议:SNTP 和 TIME,并就局域网环境下各种系统(Linux、Windows982000、XP)时间服务器的设置分别进行了说明,最终实现整个局域网环境下所有电脑时钟的同步与校准。一、什么是网络时间服务网络时间服务 Net Time Service 与网络文件下载服务 FTP、网络浏览服务 WWW 等一样,是一种网络服务,提供网络时间服务的电脑叫网络时间服务器。本文主要介绍一台电脑如何通过网络获取上级时间服务器提供的标准时间,再服务于本局域网(当然也可以对外网,但需要映射内部服务器),使局域网内的所有电脑都能与服务器时间保持同步,时间误差一般小于 05
2、 秒。TCP/IP 协议中,用于同步时间的协议为 NTP 协议,NTP 是一个跨越广域网或局域网的复杂的同步时间协议,属于 TCP/IP 协议范畴。它是由美国德拉瓦大学的 David LMills教授于 1985 年提出,除可以估算封包在网络上的往返延迟外,还可独立地估算计算机时钟偏差,从而实现在网络上的高精准度计算机校时,用来在 Internet 上使不同的机器能维持相同时间。时间服务器(Time Server)是利用 NTP 的一种服务器,通过它可以使网络中的电脑保持时间同步,通常可获得毫秒级的精度。SNTP(Simple Network Time Protocol,简单网络时间协议)是
3、NTP 的一个子集,目的是为了那些不需要 NTP 实现复杂性网络时间同步的主机。通常用于局域网上的若干台主机通过互联网与其他的 NTP 主机同步时钟,接着再向局域网内其他客户端提供时间同步服务。SNTP 一般使用 UDP 的 123 端号,Linux 系统和 Windows 系统都支持它,是现在架设网络时间服务器的主流协议。Time Protocol (RFC-868)协议是一种较简单的协议。此协议提供了一个独立于站点的,机器可读的日期和时间信息。时间服务返回的是从 1900 年 1 月 1 日午夜到现在的秒数。该协议通过 TCP 或 UDP 的 37 端口提供服务。Linux 下的 TIME
4、 服务提供该服务,Windows 系统中较少使用。现在网上的许多时间校准软件,有些支持 SNTP 协议、有些支持 TIME 协议,有些二者都支持,我们在选择时要特别注意。另外在 Windows 系统的对等网中,还有使用“net time 机器名 /set /yes”命令使用 NetBios 协议进行时间校准,由于这种方法不支持混合网络和跨网段网络,所以本文做介绍。二、时间服务器的用途也许有人认为电脑的时钟有点误差影响不大,其实这是非常错误的。电脑系统中的文件保存、文件传输等等好多应用都是以电脑时钟为准。如果今后我们想进行文件查找、日志查询,如果系统时钟不准,或同一网络中的电脑时间不同步,将给后
5、续工作带有许多麻烦。现在许多备份软件、编译软件、FTP 工具都是以文件保存时间为依据进行比较的,如果时间不统一,将使这些软件难以正常工作。笔者就曾经碰到过类似这样的问题:例如由于系统时间错误,某些论坛禁止登陆,MSN message 登陆失败,许多应用软件不能使用等等一系列问题,所以,电脑的时间还需引起大家的足够重视。三、如何使局域网内的电脑时钟同步首先要在互联网上寻找一台或几台专门提供时间服务的电脑(以下称为“主时间服务器”),在百度和 Google 里搜索一下,时间服务器还是很多的,笔者推荐poolntporg 这个地址。其次设置局域网时钟服务器。选择单位中能上外网的一台电脑,让它与主时间
6、服务器同步,然后把它设为局域网内部的时间服务器(以下称为时间服务器),以后局域网内所有电脑依它为准进行时间校对。最后设置客户端。如果客户机为 win2000、XP 或 Linux 系统,不需要安装任何软件。如客户机为 Win98 系统时要根据时间服务器类型的不同而区别对待:如果时间服务器选用SNTP 协议进行时钟同步,则 Win98 机上需安装一个 sntp 客户端软件,如时间服务器由Windows 电脑通过 netbios 协议提供,则 Win98 上也不需要安装任何软件。四、如何设置时间服务器以下分 Linux、Win98Win2000XP 三种情况分别介绍,而且只介绍 sntp 服务的架
7、设,timeserver 服务和 netbios 对时服务由于应用很少,在此不做介绍。1Linux 主机做时间服务器(以 RedHat90 为例)第一步:检查是否已经安装有 ntp 软件包。输入“rpm -qa|grep ntp”,如果已经安装应该显示“ntp-412-0rc1”。第二步:安装 ntp 软件,可以从 ftp:/ftpredhatcom 下载 rpm 包,输入“rpm -ivh ntp-xxxrpm”执行安装。第三步:配置 ntp 服务。备份原/etc/ntpconf 文件后,输入以下内容:server poolntporgserver poolntporgserver pool
8、ntporgdriftfile /etc/ntp/drift三行 server 都设 poolntporg 是为了提供连接冗余,当第一个地址连接失败时,后面的地址提供时间服务,(poolntporg 对应是一组 IP 地址,IP 由 DNS 随机分配,所以域名重复输入无碍)第四步:启动 ntp 服务。输入“service ntp restart”。为了让 Linux 机启动后 ntp 服务能自动启动,还要输入“chkconfig ntpd on”。Linux 下的 ntp 软件不但能自动与互联网上的时钟保持同步,同时本身已经是一台 SNTP 服务器了,可以供局域网内的电脑校对时间。建议启动 N
9、TP 服务后,先用 date 命令手工校正一下时间,以后系统会自动与互联网上的主时间服务器保持同步。ntp 服务还有一个好处,如果当前系统的时间与标准时间有所误差,它不是马上把时间校正,而是逐步缩小与标准时间的误差,以免系统内部出现时间突变。2Windows2000、XP 做时间服务器第一步:指定主时间服务器。在 DOS 里输入“net time /setsntp:poolntporg”,这里我们指定 poolntporg 是主时间服务器。第二步:与主时间服务器同步。先关闭 windows time 服务,再开启该服务。在 DOS 里输入“net stop w32time”、“net star
10、t w32time”。第三步:设置电脑的 Windows time 服务的启动方式为自动,在“管理工具”的“服务”界面下完成(xp 系统默认是自动)。注意:这台 windows 主机不能加入任何域,否则无法启动 windows time 服务。此时,这台 windows 电脑已经是互联上主时间服务器的客户了,以后每次电脑启动时,都会自动与主时间服务器校对时间。如果网络不通,电脑也会过 45 分钟后再次自动校对时间。需要提醒的是电脑的时钟与标准时间误差不能超过 12 个小时,否则不能自动校对,只有手动校正了。第四步:使这台电脑成为局域网内的时间服务器。用“regedit”打开注册表,把“HKEY
11、_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/W32Time/Parameters”中的 LocalNTP 改为 1 即可。3Windows98 做时间服务器一般不推荐 Windows98 系统做时间服务器,而且 win98 本身也不含时间服务器功能,需要安装第三方软件。本文后面介绍的 nettime 软件是一个非常优秀的时间客户端软件,它可以工作在 windows982000、XP 系统中,当选中“Allow other computers to sync to this computer”时,可以把这台电脑当做成时间服务器。五、如何设置客
12、户端客户端的主要任务是连接到局域网内的时间服务器,以保持电脑的时钟与服务器同步。同样分 Linux、Windows982000、XP 几种情况介绍。1LINUX 主机其实在上面介绍 Linux 系统中的 ntp 服务时,已经提到 ntp 时间服务时同时也是一个时间服务的客户端,只要把/etc/ntpconf 文件中的“server poolntporg”改为“server 内部时间服务器 IP 地址”即可。如不想使用 ntp 服务,也可使用 ntp 软件包中带来的 ntpdate 命令,只要手工执行“ntpdate 时间服务器 IP 地址”即可。如想每天自动对时,可以把这条命令放在 cron
13、中,注意在同一台电脑上 ntp 服务与 ntpdate 命令不能同时使用。2Windows2000 主机执行设置时间服务器时的前三步即可。3WindowsXP 主机可以按 Windows2000 主机的方法设置,也可双击任务栏右下角的时钟图标,打开“日期时间属性”对话框,在“Internet 时间”卡片上选中“自动与 Internet 时间服务器同步”,并在服务器上填入内部时间服务器的 IP 地址即可。4Windows98 主机需要安装第三方软件,nettime 是个不错的软件,它支持 SNTP(UDP123)、TIME(TCP37)、TIME- UDP(UDP37)三种方法进行时间同步。软件操作简单,只要在上图的“Hostname or IP Address”中输入局域网内时间服务器的 IP 地址,“Protocol”中选SNTP 即可。当然在 windows98 电脑上执行“net time 机器名或 IP 地址 /set /yes”也可能与其它 windows 电脑同步时钟,前提是这些电脑在同一网段,并且安装有 netbios 协议。把该命令放在 autoexecbat 中,就可以做到开机自动对时了。