Network Time Protocol(NTP,网络时间协议)用于同步它所有客户端时钟的服务。NTP服务器将本地系统的时钟与一个公共的NTP服务器同步然后作为时间主机提供服务,使本地网络的所有客户端能同步时钟。
同步时钟大的好处是相关系统上日志文件中的数据,如果网络中使用中央日志主机集中管理日志,得到的日志结果更能反映真实情况。在同步了时钟的网络中,集中式的性能监控、服务监控系统能实时的反应系统信息,系统管理员可以快速的检测和解决系统错误。
安装配置NTP服务
下面将介绍NTP服务器的简单配置:
第一步,安装NTP服务
一般的Linux发行版都会带ntp软件包,如果你的系统中还没有安装,使用rpm命令安装此包,以下以centos系统为例配置一台时间服务器:
查找当前系统是否已安装ntp
[root@localhost ~]# rpm -qa | grep ntp chkfontpath-1.10.1-1.1 ntp-4.2.2p1-8.el5.centos.1 (这个是已经安装的RPM包)
如果没有安装,可用下例命令安装:
[root@localhost ~]# rpm -ivh ntp-4.2.2p1-8.el5.centos.1.rpm
第二步,配置NTP服务器
NTP服务器配置如下:
编辑配置文件/etc/ntp.conf
restrict default kod nomodify notrap nopeer noquery restrict -6 default kod nomodify notrap nopeer noquery restrict 127.0.0.1 restrict -6 ::1 restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap server 192.168.146.225 server 0.centos.pool.ntp.org server 1.centos.pool.ntp.org server 2.centos.pool.ntp.org server 127.127.1.0 # local clock fudge 127.127.1.0 stratum 10
配置文件说明如下:
第一行restrict、default定义默认访问规则,nomodify禁止远程主机修改本地服务器配置,notrap拒绝特殊的ntpdq捕获消息,noquery拒绝btodq/ntpdc查询(这里的查询是服务器本身状态查询)。
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
这句是手动增加的,意思是从192.168.1.1-192.168.1.254的服务器都可以使用我们的NTP服务器来同步时间。
server 192.168.146.225
这句也是手动增加的,指明局域网中作为NTP服务器的IP;
配置文件的后两行作用是当服务器与公用的时间服务器失去联系时以本地时间为客户端提供时间服务。
端口
ntp使用udp协议,记得开放其123端口。
启动NTPD
为了使NTP服务可以在系统引导的时候自动启动,执行:
#chkconfig ntpd on
启动ntpd:
service ntpd start
NTP客户端配置:
在客户端手动执行“ntpdate 服务器IP”来同步时间;
另可以使用crond来定时同步时间:
以root身份运行周期性任务:
[root@supersun root]# crontab -e
添加以下内容,每15分钟更新一下时间:
15 * * * * ntpdate 服务器IP
此处的ntpdate命令包含在ntp软件包中,记得确认系统中是否已安装。
第三步,检查时间服务器是否正确同步
使用下面的命令检查时间服务器同步的状态:
#ntpq -p
一个可以证明同步有问题的证据是:所有远程服务器的jitter值是4000并且delay和reach的值是0。
可能的原因有:
有防火墙阻断了与server之间的通讯,即123端口是否正常开放;
此外每次重启NTP服务器之后大约要3-5分钟客户端才能与server建立正常的通讯连接,否则你在客户端执行“ntpdate 服务器ip”的时候将返回:
27 Jun 10:20:17 ntpdate[21920]: no server suitable for synchronization found
Network Time Protocol(NTP,网络时间协议)用于同步它所有客户端时钟的服务。NTP服务器将本地系统的时钟与一个公共的NTP服务器同步然后作为时间主机提供服务,使本地网络的所有客户端能同步时钟。
同步时钟大的好处是相关系统上日志文件中的数据,如果网络中使用中央日志主机集中管理日志,得到的日志结果更能反映真实情况。在同步了时钟的网络中,集中式的性能监控、服务监控系统能实时的反应系统信息,系统管理员可以快速的检测和解决系统错误。
一、 配置Linux的ntp时间服务器
1. 软件下载安装
一般linux的安装包中都包含有ntp服务的包,安装即可。若无,可以下载。
#/tmp/wget http://ntp.buptnet.edu.cn/ntp_chinese/down/server/ntp-4.2.0.tar.gz # tar -zxvf ntp-4.2.0.tar.gz –C /usr/local/src;cd /usr/local/src/ntp-4.2.0
2. 开始设定参数、编译与安装:
#./configure --prefix=/usr/local/ntp --enable-all-clocks --enable-parse-clocks make clean ; make make check make install
安装完成。
二、理解NTP服务的配置文件
1.NTP软件包的结构和相关命令
NTP服务的配置文件包括四个文件如表1 。
表1 NTP服务的配置文件
与 NTP 及系统时间有关的执行文件包括几个文件如表2 。
表2 与 NTP 及系统时间有关的执行文件
说明:Linux 时钟类型在分类和设置上却和Windows大相径庭。和 Windows不同的是,Linux将时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟两种。系统时间是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的那个主板硬件时钟,这个时钟可以在BIOS的“Standard BIOS Feture”项中进行设置。当Linux启动时,硬件时钟会去读取系统时钟的设置,然后系统时钟会独立于硬件运作。
2.理解NTP服务端的设置文件/etc/ntp.conf
关于权限设定部分
权限的设定主要以 restrict 这个参数来设定,格式如下:
restrict IP地址 mask 子网掩码 参数
其中 IP 可以是IP地址,也可以是 default ,default 是指所有的IP
参数有以下几个:
ignore :关闭所有的 NTP 联机服务
nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。
notrust :客户端除非通过认证,否则该客户端来源将被视为不信任子网
noquery :不提供客户端的时间查询
注意:如果参数没有设定,那表示该 IP (或子网)没有任何限制。
用server这个参数设定上级时间服务器,格式如下:
server IP地址或域名 [prefer]
IP地址或域名是我们指定的上级时间服务器,如果 Server 参数后加上 prefer,表示我们的 NTP 服务器主要以该部主机时间进行校准。
driftfile格式如下:
driftfile 文件名
在与上级时间服务器联系时所花费的时间,记录在driftfile参数后面的文件内。
注意: driftfile 后面接的文件需要使用完整的路径文件名,不能是链接文件,并且文件的权限需要设定成 ntpd守护进程可以写入。
3.ntp.conf配置文件实例
1)以互联网的时间服务器为时间服务器的时钟
设置要求:以time.nist.gov 为时间服务器,在ntp.conf中增加以下内容:
restrict default ignore # 关闭所有的 NTP 要求封包 restrict 192.168.1.0 mask 255.255.255.0 notrap nomodify server time.nist.gov #设置时间服务器 server 127.127.1.1 #开启内部递归网络接口 lo fudge 127.127.1.1 stratum 10 refid NIST # LCL 不同步 driftfile /etc/ntp.drift logfile /var/log/ntp.log Broadcastdelay 0.008 #广播延迟时间#
2)以内部ntp服务器为数据服务器时钟
设置要求:不对 Internet 提供服务,仅对内部子网 192.168.0.0/24 提供服务,内部子网的客户端不能修改NTP服务器的时间参数。
在ntp.conf中增加以下内容:
restrict default ignore # 关闭所有的 NTP 要求封包 restrict 127.0.0.1 # 开启内部递归网络接口 lo restrict 192.168.0.0 mask 255.255.255.0 nomodify #在内部子网里面的客户端可以 进行网络校时,但不能修改NTP服务器的时间参数。 server 198.123.30.132 #198.123.30.132作为上级时间服务器参考 restrict 198.123.30.132 #开放server 访问我们ntp服务的权限 driftfile /var/lib/ntp/drift broadcastdelay 0.008 #广播延迟时间#
4.其他设置工作:
保存退出后。
启动NTP服务service ntpd start
如果想每次系统启动,NTP服务自动启动,请输入下面命令:
chkconfig -level 35 ntpd on
打开iptables防火墙123端口
NTP服务的端口是123,使用的是udp协议,所以NTP服务器的防火墙必须对外开放udp 123这个端口。方法如下,使用以下规则:
#/sbin/iptables -A INPUT -p UDP -i eth0 -s 192.168.0.0/24 /
> --dport 123 -j ACCEPT
注意:Ntpd启动的时候通常需要一段时间进行时间同步,所以在ntpd刚刚启动的时候还不能正常提供时钟服务,长大概有5分钟吧,如果超过了这个时间请检查一下您的配置文件。
5.查看ntp服务器工作情况
通常我们使用命令查看123端口和ntp系统进程判断ntp服务器是否工作正常。
命令如下:
netstat -unl | grep 123 #查看123端口 ps -ef|grep ntp #查看ntp进程是否启动
6.监控ntp服务器
ntpq用来监视ntpd操作,使用标准的NTP模式6控制消息模式,并与NTP服务器通信。
ntpq -p查询网络中的NTP服务器,同时显示客户端和每个服务器的关系,
例如: 执行命令: ntpq –p后,输出结果为:
ntpq -p remote refid st t when poll reach delay offset jitter ================================= *time-A.timefreq .ACTS. 1 u 152 1024 377 43.527 -11.093 3.982 +clock.isc.org 204.123.2.5 2 u 230 1024 377 67.958 -7.729 0.071 time-a.nist.gov .ACTS. 1 u 323 1024 377 58.705 994.866 999.084
“* ”:响应的NTP服务器和精确的服务器。 “+”:响应这个查询请求的NTP服务器。 “blank(空格)”:没有响应的NTP服务器。 “remote” :响应这个请求的NTP服务器的名称。 “refid ”:NTP服务器使用的更高一级服务器的名称。 “st”:正在响应请求的NTP服务器的级别。 “when”:上一次成功请求之后到现在的秒数。 “poll”:当前的请求的时钟间隔的秒数。 “offset”:主机通过NTP时钟同步与所同步时间源的时间偏移量,单位为毫秒(ms)。
三、Linux NTP客户端的使用
1.Linux系统使用命令行配置:
在Linux 上面进行网络校时非常简单,执行 ntpdate 即可:
ntpdate 192.168.0.1 #192.168.0.1是NTP服务器的IP
不要忘了使用hwclock命令,把时间写入bios
hwclock -w
如果想定时进行时间校准,可以使用crond服务来定时执行。
编辑 /etc/crontab 文件
加入下面一行:
30 8 * * * root /usr/sbin/ntpdate 192.168.0.1; /sbin/hwclock -w #192.168.0.1是NTP服务器的IP地址
然后重启crond服务
service crond restart
这样,每天 8:30 Linux 系统会自动的进行网络时间校准。
2. 桌面环境下配置方法
可以使用图形化的时钟设置工具,如RHEL 4.0中的日期与时间设置工具,也可以在虚拟终端中键“redhat-config-time”命令,或者选择“K选单/系统设置/日期与时间”来启动日期时间设置工具。使用该工具不必考虑系统时间和硬件时间,只需从该对话框中设置日期时间,可同时设置、修改系统时钟和硬件时钟。
四. Windows XP、2003、2000系统使用NTP进行时间校准
利用操作系统提供的校时服务(Windows XP、Windows 2003适用):
1、 双击任务栏右下角“时间”,打开 [ 时间和日期 属性 ] 设置对话框
2、 选择 [ Internet时间 ] 标签, 选中 [ 自动与Internet时间服务器同步 ] 选项,在 [ 服务器 ] 中填入时间服务器的ip地址或者域名。点击 [ 应用 ] 并按 [ 立即更新 ] 可直接同步。
利用操作系统提供的校时服务(Windows 2000适用):
1、 在 [ 控制面板 ] 中打开 [ 管理工具 ],再打开 [ 服务 ] ,在服务中找到 [ Windows Time ]
2、 双击服务名称,在打开的“Windows Time的属性”中设置“启动类型”为“自动”,再按下启动按钮。
3、 然后切换到命令行下在DOS命令行下让Windows使用时间服务器:
net time /setsntp:xxx.xxx.xxx.xxx (时间服务器域名或者ip地址)
要想立刻与时间服务器同步需要重启时间服务,相应的命令是:
net stop w32time net start w32time
以后你的机器会有一个准确的时间。说明:W32tm.exe 是用来同步本地计算机与远程计算机或域的时间的类似命令。由于其灵活性,W32tm.exe 是时间同步的方法。默认情况下Windows 2000的时间服务w32time是关闭的。Windows 包含W32Time,它是 Kerberos 身份验证协议所需的时间服务工具。Windows 时间服务的目的是确保组织中运行 Microsoft Windows 2000 或更高版本的所有计算机都使用同一个时间。
五、windows 98/me/NT客户端使用工具软件Automachron实现时间同步
Windows 98/nt可以使用Automachron软件:
1. 下载achron5,链接:ftp://ftp.agri.sjtu.edu.cn/pub1/Internet/time/achron5.exe
2.安装软件;
3.运行:程序-->Automachron-->Automachron;
4.右键单击任务栏右下脚选取Automachron图标-->Properties-->Host-->Network Host;
填入ntp.sjtu.edu.cn,Sync at startup前复选框打勾,Run at startup前复选框打勾
系统每次启动后均会自动同步时间,如需手动同步,点击Sync按钮即可
六、总结
随着网络规模、网上应用不断扩大,网络设备与服务器数量不断增加。网络管理员在查看众多网络设备日志时,往往发现时间不一,即使手工设置时间,也会出现因时区或夏令时等因素造成时间误差;有些二层交换机重启后,时钟会还原到初始值,需要重新设置时间。对于核心网络设备和重要应用服务器而言,它们之间有时需要协同工作,因此时间的准确可靠性显得尤为重要。
NTP服务的配置及使用都非常简单,并且占用的网络资料非常小。NTP时间服务器目前广泛应用于网络安全、在线教学、数据库备份等领域。企业采取措施同步网络和设备的时间非常重要,但确保安全设备所产生的日志能提供精确的时间更应当得到关注。本文介绍在Linux操作系统下如何建立NTP时间服务器、利用NTP时间服务器配置实例,供Linux 网管员参考建立。
附件1:
ntpdate 命令
用途:使用网络计时协议(NTP)设置日期和时间。此命令仅应用于 AIX 4.2 或后期版本。
语法:
ntpdate [ -b ] [ -d ] [ -s ] [ -u ] [ -a Keyid ] [ -e AuthenticationDelay ] [ -k KeyFile ] [ -o Version ] [ -p Samples ] [ -t TimeOut ] Server ...
描述:通过轮询指定的确定正确时间的 NTP 服务器, ntpdate 命令设置本地日期和时间。它从指定的每个服务器获得了一些样本,并应用标准 NTP 时钟过滤器和选择算法来选择好的样本。
此 ntpdate 命令使用以下方法进行时间调整:
如果它确定时钟偏差超过 0.5 秒,它通过调用 settimeofday 子例程设置时钟时间。在引导时间,这是一个的方法。
如果它确定时钟偏差小于 0.5 秒,它通过调用 adjtime 子例程和偏移量来调整时钟时间。此方法倾向于用牺牲一些稳定性来保持漂移时钟更加准确。 当不是通过运行一个守护程序而是从 cron 命令有规则的运行 ntpdate 命令时,每一小时或两小时执行一次可以保证足够的走时精度,从而避免调整时钟。
注意事项:
使用很多服务器可以大幅度改善 ntpdate 命令的可靠性与精度。尽管能使用单一服务器,但您能通过提供至少三个或四个服务器以获得更好的性能。
如果一个类似 xntpd 守护程序的 NTP 服务器守护程序正在同一主机上运行,命令将拒绝 ntpdate 设置日期。
你必须有 root 权限才能在主机上运行这个命令。
标志
-a Keyid 使用 Keyid 来认证全部数据包。
-b 通过调用 settimeofday 子例程来增加时钟的时间。
-d 指定调试方式。判断 ntpdate 命令会产生什么结果(不产生实际的结果)。结果再现在屏幕上。这个标志使用无特权的端口。
-e AuthenticationDelay 指定延迟认证处理的时间秒数。
-k KeyFile 当不使用缺省值 /etc/ntp.keys 文件时,为包含密钥的文件指定一个不同的名称。 请参阅文件KeyFile的描述。
-o Version 当轮询它的发出数据包时,指定使用的 NTP 版本实现。 Version 的值可以是1,2,3。缺省值是 3。
-p Samples 指定从每个服务器获取的样本的数目。 Samples 的值在 1 和 8 之间,并包括 1 和 8。它的缺省值是 4。
-s 指定日志操作 syslog 设施的使用,而不是使用标准输出。 当运行 ntpdate 命令和cron 命令时,它是很有用的。
-t TimeOut 指定等待响应的时间。给定 TimeOut 的值四舍五入为 0.2 秒的倍数。缺省值是 1 秒。
-u 指定使用无特权的端口发送数据包。 当在一个对特权端口的输入流量进行阻拦的防火墙后是很有益的, 并希望在防火墙之外和主机同步。防火墙是一个系统或者计算机,它控制从外网对专用网的访问。
参数
Server ...指定轮询的服务器。
退出状态
此命令返回下列出口值:0 成功完成; >0 发生错误。
安全性
访问控制:您必须有 root 权限才能运行此命令。
审计事件:N/A
示例
通过在地址 9.3.149.107 轮询 NTP 服务器设置本地日期和时间,输入:/usr/sbin/ntpdate 9.3.149.107
输出类似于下列出现的情况:28 Feb 12:09:13 ntpdate [18450]: 加快时间服务器 9.3.149.107
偏移量 38.417792 秒
文件 /usr/sbin/ntpdate 包含 ntpdate 命令。
/etc/ntp.keys 包含缺省的密钥文件