为了避免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
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