NTP服务器的配置和使用

为了避免Linux系统的主机,在长时间运行下所导致的时间偏差。因此我们需要对时间进行时间同步(synchronize)。我们一般使用ntp服务来同步不同机器的时间。NTP 是网络时间协议(Network Time Protocol)的简称,他是通过UDP协议,对时间进行同步的。

ubuntu下NTP-Server安装及配置

安装NTP包

sudo apt-get install ntp

NTP配置

编辑NTP Server的主要配置文件为/etc/ntp.conf ,如下:

driftfile /var/lib/ntp/ntp.drift
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
#server 0.ubuntu.pool.ntp.org
#server 1.ubuntu.pool.ntp.org
#server 2.ubuntu.pool.ntp.org
#server 3.ubuntu.pool.ntp.org
server s1a.time.edu.cn prefer
server s2a.time.edu.cn
server s2b.time.edu.cn
server s2e.time.edu.cn
#server ntp.ubuntu.com
server 127.127.1.0
fudge 127.127.1.0 stratum 5
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery

restrict 172.17.0.0 mask 255.255.0.0 nomodify
restrict 127.0.0.1
restrict ::1

配置含义:

restrict s2a.time.edu.cn prefer
server s2a.time.edu.cn
server s2b.time.edu.cn
server s2e.time.edu.cn   
server 127.127.1.0
fudge 127.127.1.0 stratum 5

设定NTP主机来源,其中prefer表示优先同步的主机

restrict 172.17.0.0 mask 255.255.0.0 nomodify 

restrict 控制相关权限
语法为: restrict IP地址 mask 子网掩码 参数
其中IP地址也可以是default ,default 就是指所有的IP
参数有以下几个:
ignore :关闭所有的 NTP 联机服务
nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。
notrust :客户端除非通过认证,否则该客户端来源将被视为不信任子网 NTP4.2 版本以后使用会出错
noquery :不提供客户端的时间查询:用户端不能使用ntpq,ntpc等命令来查询ntp服务器
notrap :不提供trap远端登陆:拒绝为匹配的主机提供模式 6 控制消息陷阱服务。陷阱服务是 ntpdq 控制消息协议的子系统,用于远程事件日志记录程序。
nopeer :用于阻止主机尝试与服务器对等,并允许欺诈性服务器控制时钟
kod : 访问违规时发送 KoD 包。
restrict -6 表示IPV6地址的权限设置。

server 127.127.1.0  

只有在上级时钟源失效时,NTP才会使用127.127.1.0的本地时钟,将local时间作为ntp服务器时间提供给ntp客户端。NTP把本地主机的时钟也看作外部时钟源来处理,分配的地址是127.127.1.0

fudge  127.127.1.0 stratum 5

设置本地时钟源的层次为5,这样如果NTP服务从本地时钟源获取时间的话,NTP对外宣布的时间层次为6

配置完毕,重启NTP服务,使配置更改生效。

service ntp restart

查看NTP服务和上级连通状态

ntpq -p
image.png

remote: 本机和上层ntp的ip或主机名,“+”表示优先,“*”表示次优先
refid:参考上一层ntp主机地址
st:stratum阶层
when:多少秒前曾经同步过时间
poll:下次更新在多少秒后
reach:已经向上层ntp服务器要求更新的次数
delay:网络延迟
offset:时间补偿
jitter:系统时间与bios时间差

配置内网NTP-Clients

内网其他设备作为NTP的客户端配置,相对就比较简单,而且所有设备的配置都相同。
首先需要安装NTP服务(与NTP-Server完全一样)。然后找其中一台配置/etc/ntp.conf文件,配置完成验证通过后,拷贝到其他客户端机器,直接使用即可。
注释掉之前的上层服务,以下几行

pool 0.ubuntu.pool.ntp.org 
pool 1.ubuntu.pool.ntp.org
pool 2.ubuntu.pool.ntp.org
pool 3.ubuntu.pool.ntp.org
pool ntp.ubuntu.com

添加本地的NTP服务器即可完成配置

server 172.17.30.100 prefer

可以用date命令查看时区
如果时区是EST需要改成CST

sudo tzselect

选择亚洲 /中国 /北京 /然后确认
改完后执行如下复制语句

 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

使用

ntpdate -d -u 172.17.30.100

172.17.30.100为你的NTP服务器的ip地址,显示adjust time server 192.168.1.135 offset 0.004882 sec
这里有可能出现同步失败,一般情况下原因都是本地的NTPD服务器还没有正常启动起来,一般需要几分钟时间后才能开始同步。
也有报错 no server suitable for synchronization found,这种问题由一下两种情况造成:
Server dropped: strata too high:
并且显示“stratum 16”。而正常情况下stratum这个值得范围是“0~15”。
这种问题往往是由ntp服务启动后还没有和上层服务同步完成,可以等五分钟再次查看。
Server dropped: strata no data:
这种问题一般是因为访问不到NTP服务,需要检查NTP服务是否启动成功,或者是否是被防火墙拦截。
启动NTP_Client

service ntp start

启动后,查看同步情况

ntpq -p

由于是内网,NTP服务很快会同步上,可以使用下面命令查看时间是否和服务器时间相同

date

本机客户端配置完成后,需要同步的客户端机器使用SCP拷贝/etc/ntp.conf,命令如下,启动NTP服务即可。

scp 172.17.30.1:/etc/ntp.conf /etc/ntp.conf

Linux的NTP配置总结
NTP服务及时间同步问题

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 74,818评论 12 116
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 3,414评论 3 7
  • 当本机时间不准确时,我们需要对时间进行校准,那么我们就需要在互联网上找到一个可以提供我们准确时间的服务器然后通过一...
    经纶先生阅读 1,205评论 1 6
  • OSI(开放系统互联参考模型)标准模型 物理层负责为数据端设备透明地传输原始比特流,并且定义了数据终端设备和数据通...
    jemmm阅读 254评论 0 1
  • 文|金玲 传统乡村印象 在我们曾经生长的农村故乡印象中,留下我们太多美好的、温情的儿时回忆。然而,农村在大部分人的...
    金玲老师的生涯空间站阅读 70评论 0 0