时间服务器-NTP

分类: 小鸟云代金券 发布时间:2019-01-16 05:46

本文主要从NTP通信协议、NTP服务器的阶层概念、NTP服务器的安装与设定、Client的安装和配置、NTP的启动与观察等几个方面详细介绍了NTP服务器。

上篇文章回顾:

计算机内部所记录的的时钟都记载于BIOS(CMOS)内的,但如果计算机上面的CMOS电池没电了,或者是某些特殊因素导致BIOS数据被清除,此时计算机的时间就会不准。在实际生活中,我们可以通过电视台,广播台,电话来调整我们的手表,那么在网络上,就需要NTP这个服务器让我们的主机随时保持正确的时间信息。

全球有多少时区?GMT在那个时区?

全球有24个时区,因为绕地球一周360度,这360度分为24个时区,当然一个时区就是15度了,又由于是以格林尼治时间(Greenwich Mean Time,GMT时间)为标准时间,尽管其后采用北京时间为标准时间,但linux并没有反映这一变化,所以在linux中默认定义时区时看不到北京时间。又因为我国在格林尼治的东方,因此北京时间(local time)会比GMT时间快8小时(GMT +8)

Network Time Protocol,如何在server与client同步他们的时间呢?

1)首先,主机当然要启动这个daemon

2)之后client 会向NTP server 校对时间的message

3)然后 NTP Server 会送出目前的标准时间给 Client

4)Client 接收了来自 Server 的时间后,调整自己的时间,达成了网络校时

ntp 这个 daemon 是以 port 123 为连接的端口(使用 UDP 封包),所以我们要利用 Time server 来进行时间的同步更新时,就得要使用 NTP 软件提供的 ntpdate 来进行 port 123 的连接。

由于 NTP 时间服务器采用类似阶层架构 (stratum) 来处理时间的同步化, 所以他使用的是类似一般 server/client 的主从架构。网络社会上面有提供一些主要与次要的时间服务器, 这些均属于第一阶及第二阶的时间服务器 (stratum-1, stratum-2)

Tips: 其实 NTP 的阶层概念与 DNS 很类似啦,当你架设一部 NTP 主机,这部 NTP 所向上要求同步化的那部主要主机为 stratum-1 时,那么你的 NTP 就是 stratum-2 ,举例来说,如果我们的 NTP 是向台湾的 tock.stdtime.gov.tw 这部 stratum-2 的主机要求时间同步化,那我们的主机即为 stratum-3 ,如果还有其他的 NTP 主机向我们要求时间同步, 那么该部主机则会是 stratum-4 啦!就这样啊~ 那最多可以有几个阶层?最多可达 15 个阶层。

rpm -qa | grep "ntp"                #查看是否已经安装ntp组件,有如下两个组件说明已经安装 ntpdate-4.2.6p5-1.el6.centos.x86_64 ntp-4.2.6p5-1.el6.centos.x86_643.2 yum安装yum -y install ntp1.3 ntp3.3 配置文件 配置文件

/etc/ntp.conf配置文件默认内容

egrep -v "^$|#" ntp.conf        #排除默认注释及空行 driftfile /var/lib/ntp/drift restrict default kod nomodify notrap nopeer noquery     #对默认的client拒绝所有操作 restrict -6 default kod nomodify notrap nopeer noquery restrict 127.0.0.1      #允许本地地址的一切操作 restrict -6 ::1server 0.centos.pool.ntp.org iburst     #默认的上层时间服务器 server 1.centos.pool.ntp.org iburst server 2.centos.pool.ntp.org iburst server 3.centos.pool.ntp.org iburst includefile /etc/ntp/crypto/pw keys /etc/ntp/keys修改配置

cat /etc/ntp.conf driftfile /var/lib/ntp/drift restrict default kod nomodify notrap nopeer noquery     #对默认的client拒绝所有操作 restrict -6 default kod nomodify notrap nopeer noquery restrict 127.0.0.1                                      #允许本机的一切操作 restrict 192.168.1.0 mask 255.255.255.0 nomodify    #允许局域网内所有client连接到这台服务器 restrict -6 ::1                                         同步时间.但是拒绝让他们修改服务器上的时间 #server 0.centos.pool.ntp.org iburst #server 1.centos.pool.ntp.org iburst #server 2.centos.pool.ntp.org iburst #server 3.centos.pool.ntp.org iburst server ntp1.aliyun.com          #同步公网的时间 server 127.127.1.0              #如果无法连接公网,则使用自己本身的时间作为标准时间。 fudge 127.127.1.0 stratum 10    #设置stratum级别 includefile /etc/ntp/crypto/pw keys /etc/ntp/keys3.4 restrict安全相关参数ignore:关闭所有的 NTP 联机服务 nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时 notrust:客户端除非通过认证,否则该客户端来源将被视为不信任子网 noquery:不提供客户端的时间查询

客户端的安装同服务器,如上。

driftfile /var/lib/ntp/drift restrict default kod nomodify notrap nopeer noquery     restrict -6 default kod nomodify notrap nopeer noquery restrict 127.0.0.1restrict -6 ::1#server 0.centos.pool.ntp.org iburst #<==注释默认的上层时间服务器 #server 1.centos.pool.ntp.org iburst #server 2.centos.pool.ntp.org iburst #server 3.centos.pool.ntp.org iburst server ntpserver        #<==添加自己的时间服务器 includefile /etc/ntp/crypto/pw keys /etc/ntp/keys5服务器端启动在服务器端启动NTP服务,命令如下:

/etc/init.d/ntpd start添加开启启动:

chkconfig ntpd on6NTP的启动与观察6.1 查看启动的端口

这样就表示我们的 NTP 服务器已经启动了,不过要与上层 NTP 服务器联机则还需要一些时间, 通常启动 NTP 后约在 15 分钟内才会和上层 NTP 服务器顺利连接上。 那要如何确认我们的 NTP 服务器有顺利的更新自己的时间呢?你可以使用底下几个指令来查阅喔 (请自行等待数分钟后再以下列指令查阅):

这个指令可以列出我们的 NTP 服务器有跟上层联机否。由上述的输出结果可以知道,时间有校正约 258 * 10^(-3) 秒,且每隔 512秒会主动去更新时间喔!

各个参数的含义:

事实上这个输出的结果告诉我们,时间真的很准了啦!因为差异都在 0.001 秒以内, 可以符合我们的一般使用了。另外,你也可以检查一下你的 BIOS 时间与 Linux 系统时间的差异,   就是 /var/lib/ntp/drift 这个档案的内容,就能了解到咱们的 Linux 系统时间与 BIOS 硬件时钟到底差多久?单位为 10^(-6) 秒啦!

要让你的 NTP Server/Client 真的能运作,在上述的动作中得注意:

上述的 ntpstat 以及 ntpq -p 的输出结果中,你的 NTP 服务器真的要能够连结上层 NTP 才行! 否则你的客户端将无法对你的 NTP 服务器进行同步更新的!重要重要!

你的 NTP 服务器时间不可与上层差异太多。

服务器防火墙在 UDP port 123 有没有开啊?要特别注意的呢!