配置NTP服务器

NTP(Network Time Protocol,网络时间协议)是一个用于同步计算机时钟的网络协议,它可使计算机与

其他服务器或时钟源(如石英钟、GPS等)进行时间同步,进行高精度的时间校正(理论上局域网内与标

准时间差小于1ms,广域网上与标准时间差小于几十毫秒),而且NTP支持使用加密确认的方式防止恶意的

协议***。

NTP提供准确时间,首先需要一个准确的UTC时间来源。NTP获得UTC的时间来源可以从原子钟、天文台、卫

星,也可从Internet上获取。时间按NTP服务器的等级传播,根据离外部UTC源的远近将所有服务器归入不

同的层(Stratum)中。Stratum-1在顶层由外部UTC接入,而Stratum-2则从Stratum-1获取时间,

Stratum-3从Stratum-2获取时间,依次类推,但Stratum层的总数限制在15以内。所有这些服务器在逻辑

上形成层次架构相互连接(如图), 而Stratum-1的时间服务器是整个系统的基础。

153528864.jpg


服务器可以同时与多个时间服务器连接,利用统计学的算法过滤来自不同服务器的时间,以选中最佳的路

径和来源来校正主机时间。即使主机在长时间无法与某一时间服务器相联系的情况下,NTP服务依然有效

运转。

时间服务器可以利用以下3种方式与其他服务器进行时间校对。

(1)broadcast/multicast:该方式主要适用于局域网的环境,时间服务器周期性地以广播的方式将时间

信息传送给其他网络中的时间服务器,其时间仅会有少许的延迟,而且配置非常的简单,但是该方式的精

确度并不高,对时间精确度要求不是很高的情况下可以采用。

(2)symmetric:该方式一台服务器可以从远端时间服务器获取时钟,如果需要也可提供时间信息给远端

的时间服务器。此方式适用于平配置冗余的时间服务器,可以提供更高的精确度给主机。

(3)client/server:该方式与symmetric方式比较相似,只是不提供给其他时间服务器时间信息,此方式

适用于一台时间服务器接收上层时间服务器的时间信息,并提供时间信息给下层的用户。

上述3种方式,时间信息的传输都使用UDP协议123端口。

NTP服务安装

NTP服务默认是安装的软件包,rpm -qa | grep ntp检查是否安装

未安装可使用如下命令安装与删除NTP服务器软件包:

rpm -ivh ntp-4.2.2* 使用rpm方式安装
yum -y install ntp.i* 使用yum方式安装
rpm -e ntp-4.2.2* 使用rpm方式删除
yum -y remove ntp.i* 使用yum方式删除

NTP服务配置

在NTP服务安装完成后,需要修改NTP服务配置文件以满足使用需求。NTP服务主配置文件是/etc/ntp.conf



NTP服务启动、暂停

NTP属于System V服务,其启动、暂停相关命令如下:

service ntpd start #启动
service ntpd stop #停止
service ntpd restart #重新启动
service ntpd reload #重新加载
service ntpd status #查看当前启动状态

NTP服务自动加载

设置NTP服务下一次开机运行状态可通过以下命令或使用ntsysv命令在服务设置界面中配置:

chkconfig ntpd on #在运行级别2、3、4、5上设置为自动运行
chkconfig ntpd off #在运行级别2、3、4、5上设置为不自动运行
chkconfig ntpd --level 35 on #在运行级别3、5上设置为自动运行
chkconfig ntpd --level 35 off #在运行级别3、5上设置为不自动运行

相关配置文件详解

NTP服务配置文件与linux大多数配置文件一样“#”开始的是注释行(在执行时将被忽略)。在配置文件

中主要包括以下几个参数。

(1)restrict <IP 地址> <子网掩码>|<网段> <子网掩码>

[ignore|nomodiy|noquery|notrap|notrust|nokod]:指定可以进行NTP通信的IP地址或网段。

ignore:关闭所有的NTP服务。
nomodiy:表示客户端不能更改NTP服务器的时间参数,但可以通过NTP服务器进行时间校对。
noquery:不提供NTP服务。
notrap:不提供trap远程事件登录(Remote Event Logging)的功能。
notrust:拒绝没有通过认证的客户端。
kod:kod技术可以阻止“Kiss of Death”包(一种DOS***)对服务器的破坏。使用此参数将开启该功能


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

如果没有指定选项,那就表示指定的客户端在访问NTP服务器时没有任何限制。

(2)server [IP|FQDN][prefer]:指定该NTP服务器上层NTP服务器,也就是为该服务器对自身进行时间校

对的NTP服务器。如果指定多个上层NTP服务器时,使用prefer参数的服务器优先级最高。在没有prefer参

数时,上层NTP服务器的优先级根据在配置文件的顺序从上到下,依次由高到低。在指定上层NTP服务器后

,默认情况下至少15min后才会与上层NTP服务器进行时间校对。

(3)fudge:修改NTP服务器相关参数。

(4)driftfile文件名:默认情况下NTP服务器的时间计算式依据BIOS的芯片震动周期频率来计算的,但

是这个数值与上层NTP服务器可能不一致,所以NTP服务器会自动去计算NTP服务器的频率与上层NTP服务器

的频率,并且将两个频率的误差记录在driftfile参数指定的文件中。该参数一般不需要修改,使用配置

文件中默认配置即可。

(5)broadcast网段 子网掩码:指定进行NTP时间广播的网段,在不指定此参数时NTP服务器会对所有能

访问的网段广播。

(6)logfile 文件名:指定NTP服务日志文件。

在/etc/ntp.conf文件中默认有如下几行配置:

#默认拒绝所有NTP客户端所有的操作,并打开kod功能。
restrict default kod nomodify notrap nopeer noquery

#允许本地所有操作
restrict 127.0.0.1

#如无法与大这行之前定义的上层NTP服务器通信时,以本地时间为准确时间
server 127.127.1.0

#指定本地NTP服务器的层
fudge 127.127.1.1 stratum 10

以下几个目录和配置文件虽然不是NTP服务自身配置文件,但都与NTP服务有关。

/usr/share/zoneinfo/:在该目录中的文件是规定了各主要时区的时间配置文件(比如中国上海时间配置

文件就是/usr/share/zoneinfo/Asia/Shanghai).

/etc/sysconfig/clock:该文件是指定系统中当前时区的信息,该文件就是让系统知道应该使

用/usr/share/zoneinfo/下的哪个时间配置文件。

/etc/localtime:该文件是系统通过/etc/sysconfig/clock将/usr/share/zoneinfo/下指定的时间配置文

件复制为/etc/localtime。

如需希望每个用户有单独的时区设置,可以在用户目录下的.bashrc 文件中加入“export TZ=

“/usr/share/zoneinfo/<timezone_directory>/<timezone_file>””,比如当前主机的时间是US,但希望

用户tonyzhang的时间为上海,则可以在tonyzhang用户目录的.bashrc文件中加入“export

TZ="/usr/share/zoneinfo/Asia/Shanghai"”,在RHEL里可不需手动配置这些文件,如果需要修改时区,

可通过system-config-date完成。

配置实例

目前Internet上的时间服务器比较多,很容易找到一台时间服务器作为企业内部标准时间来源。
将RHEL配置为企业内容NTP服务器的过程如下。

(1)修改/etc/ntp.conf文件,内容如下:

restrict default kod nomodify notrap nopeer noquery

restrict 127.0.0.1
restrict -6 ::1

restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

#指定Internet 上的时间服务器。
restrict 207.46.232.182 mask 255.255.255.255 nomodify notrap noquery
server 207.46.232.182

server 127.127.1.0
fudge 127.127.1.0 stratum 10

keys /etc/ntp/keys

#指定NTP服务器日志文件。
logfile /var/log/ntp

(2)修改/etc/ntp/step-tickers 文件,内容如下(当ntpd服务启动时,会自动与该文件中的记录的上层

NTP服务进行时间校对):

207.46.232.182
127.127.1.0

(3) 修改/etc/sysconfig/ntpd文件,内容如下:

#运行BIOS与系统时间同步,也可以通过hwclock -w命令。
SYNC_HWCLOCK=yes

(4)在配置完成并重新启动服务后,可通过ntpstat命令显示本机上一次与上层NTP服务器同步时间的情况

。也可以使用ntpq -p查看本机与上层NTP服务器通信情况。


175306964.jpg


175320506.jpg


(1)进行实践校对的NTP服务器
(2)本地主机与上层NTP服务器的时间差
(3)下次同步时间

remote:本地主机所连接的上层NTP服务器。
refid: 指的是给上层NTP服务器(207.46.232.182)提供时间校对的服务器。
st:上层NTP服务器的级别
when:上一次与上层NTP服务器进行时间校对的时间(单位:s)
poll:下一次本地主机与上层NTP服务器进行时间校对的时间(单位:s)。在NTP服务运行之初poll值会比较小(可以让本地主机尽快调整到正确的时间范围),之后poll值会逐渐增大。
reach:一个八进制值记录已成功与上层NTP服务器进行时间校对的时间。
delay:从本地主机发送同步要求到上层NTP服务器的循环时间差(单位:10-6s)。
offset:时间补偿的结果(单位:10-6s),这个值非常关键,它是本地主机与上层NTP服务器的时间差,offset越接近于0,与上层NTP服务器的时间就越接近。
jitter:一个做统计的值,该值统计在特定个连续的连接数里offset的分布情况(这个值的绝对值越小本地主机的时间就越精确)

图形界面配置NTP

system-config-date ——Network Time Protocol ——Synchronize system clock before starting service