1.NTP概述

NTP网络时间协议,是一个用于同步计算机网络时钟的协议。

NTP要想提供一个准确的时间,首先需要一个准确的UTC时间来源。NTP获取UTC的时间来源可以是原子钟、天文台、卫星,也可以使internet等。时间按照NTP服务器的等级进行传播,根据离外部UTC源的远近将所有服务器划入不同的层(stratum)。stratum-1在顶层由外部UTC接入,而stratum-2则由stratum-1获取时间,stratum-3stratum-2获取时间,一次类推。stratum的总数在15,超过15则认为不可用。如下图所示:

Linux下NTP服务器配置

中国本地时间比UTC时间快了8个小时,记作UTC+8

C/S架构的时间服务器中,NTP服务器从上层的NTP服务器获取时间,并提供给下层的用户。采用的端口是123端口,协议是UDP

2.NTP服务的安装

默认情况下NTP服务都已经安装过了,可以用如下执行查看:

rpm –qa |grep ntp

Linux下NTP服务器配置

如果没有安装的话,可以使用如下指令安装:

yum install –y ntp

删除NTP

yum remove –y ntp

rpm –e ntp

3.NTP服务配置

配置文件的位置:/etc/ntp.conf

3.1服务的启动

/etc/init.d/ntpd start  启动NTP

/etc/init.d/ntpd stop  停止NTP

/etc/init.d/ntpd restart  重新启动NTP

/etc/init.d/ntpd status  查看NTP服务器的状态

设置开机自动启动:

chkconfig ntpd --level 35 on

Linux下NTP服务器配置

3.2配置文件说明

在配置文件中,以#开头的表示注释。

2restrict:指定可以进行NTP通信的IP地址或网段。格式如下:

restrict  ip地址或网段 mask 子网掩码参数

ip地址或网段:

如:restrict 192.168.1.1 mask 255.255.255.255 

restrict 192.168.1.0 mask255.255.255.0

restrict default default表示的是所有的主机。

参数如下:

ignore:关闭所有的NTP联机。

nomodify:表示客户端不能修改NTP服务器的时间参数,但是客户端可以进行时间同步。

noquery:不对客户端提供时间查询功能。

notrap:不提供trap远程时间记录功能。

notrust:拒绝没有通过认证的客户端

kod:开启kod功能。kodkiss ofdeath(一种dos***),开启kod功能,可以防止对服务器的破坏。

nopeer:不与其他同一层上的NTP服务器进行时间同步。

2server ip|FQDN [prefer]

指定该服务器上层NTP服务器的IP地址或者是FQDN,为本地提供时间服务。在指定多个上层NTP服务器时,使用prefer参数的服务器的优先级更高,将优先使用。如果没有指定prefer的话,则按照顺序从上往下,由高到低。

2fudg:修改NTP服务器的相关参数,如stratum

2driftfile 文件名:记录本地时间和上层NTP服务器之间的时间差值,该文件对于ntp用户来说要有w的权限。一般不需要修改

2logfile:指定ntp服务器的日志文件。

以本地时间为标准时间的设置:

server 127.127.1.0

3.3NTP服务有关的文件

/usr/share/zoneinfo/:在该目录下的文件主要定义了各个时区的时间配置文件。如亚洲/上海的时间配置文件就是:/usr/share/zoneinfo/Asia/Shanghai

/etc/sysconfig/clock:告诉系统应该使用/usr/share/zoneinfo/目录下的哪个时区的时间配置文件。

/etc/localtime:系统通过/etc/sysconfig/clock/usr/share/zoneinfo/指定的时区的时间配置文件复制为/etc/localtim

修改时区的步骤:

1.查询/usr/share/zoneinfo/目录下要修改的时区的名称

2.将该名称写入到/etc/sysconfig/clock文件中

3.复制/usr/share/zoneinof/目录下的时区的时间配置文件为/etc/localtime

4.重启系统。

Linux下NTP服务器配置

为每一个用户进行单独的时区设置:

修改用户的环境配置文件~/.bashrc,增加如下内容:

export TZ=”/usr/share/zoneinfo/<timezone_directory>/<timezone_file>”

如:export TZ=”/usr/share/zoneinfo/Asia/Shanghai”

然后重新执行该文件:

source ~/.bashrc

3.4配置实例

1)基本配置

#限制可以查询的客户端

restrict 172.17.100.0 mask255.255.255.0 nomodify notrap kod

#指定上层NTP服务器地址并限制上层服务器不能同本地时间服务器进行查询功能

restrict x.x.x.x mask x.x.x.xnomodify noquery notrap

server x.x.x.x  prefer

#指定本地服务器为NTP服务器

server 127.127.1.0

#设置本地服务器为stratum 1

fudge 127.127.1.0 stratum 1

Linux下NTP服务器配置

2)修改/etc/ntp/step-tickers文件,将上层NTP服务器的地址或FQDN添加到这个文件中。作用是当NTP服务在启动时,会自动的与该文件中记录的时间服务器进行时间同步。

127.127.1.0

 

Linux下NTP服务器配置

3)同步硬件时间

编辑文件:vim /etc/sysconfig/ntpd

设置:SYNC_HWCLOCK=yes

 

Linux下NTP服务器配置

如果不修改这个文件的话,也可以通过hwclock –w手动的进行系统时间与BIOS时间同步。

使用hwclock –r读取bios时间。

Linux下NTP服务器配置

3.5ntpq –p

如果系统启动了防火墙的话,要记得放行udp123端口:

iptables -I INPUT -i eth0 -s172.17.100.0/24 -d 172.17.100.253 -p udp --dport 123 -j ACCEPT

启动服务:/etc/init.d/ntpd restart

Linux下NTP服务器配置Linux下NTP服务器配置

红色标注的地方是NTP 服务在启动的时候会主动的与/etc/ntp/step-tickers里面所配置的上层NTP服务器进行时间同步的结果。

使用ntpq –p观察本机与上层NTP服务器的通信情况。

Linux下NTP服务器配置

remote:表示的是上层NTP服务器的地址

refid:为上层NTP服务器提供时间同步的NTP服务器的地址。

st:表示的是当前NTP服务器所处的stratum

when:上一次与上层NTP服务器进行时间校对的时间。

poll:下一次本地主机与上层NTP服务器进行时间校对的时间。刚开始时该时间比较小,以后会慢慢增大。

reach:一个八进制值,记录了成功与上次NTP服务器进行时间校对的时间。

delay:从本地主机发送时间同步请求到上层服务器的往返时间差。单位为10-6S

offset:时间补偿值。越小越好。

在时间同步以后,首选的时间服务器的前面会有一个*,备用的前面会有一个+

Linux下NTP服务器配置

4.客户端的设置

4.1 Linux 客户端

对于Linux客户端可以用ntpdate进行时间同步。

格式为:

ntpdate x.x.x.x

如果有需要可以创建一个计划任务。

4.2Windows客户端

Linux下NTP服务器配置

默认情况下,windows客户端是每隔7天与服务器进行时间同步,如果要修改这个时间间隔,需要修改注册表。

windows打开注册表:regedit

Linux下NTP服务器配置

找到如下部分:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time

TimeProvides\NtpClient\SpecialPollInterval,在数值数据,中显示的就是时间同步间隔,单位为秒,修改以后,需要重启系统。

 

本文出自 “Frame” 博客,请务必保留此出处http://hezhang.blog.51cto.com/1347601/1351896