95.1、ntp简介:
ntp服务使用的是udp的123端口,如果开启了防火墙要记得放开这个端口;
NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机时间同步的一种协议。它的用途是把计算机的时钟同步到世界协调时UTC,
其精度在局域网内可达0.1ms,在互联网上绝大多数的地方其精度可以达到1-50ms。NTP服务器就是利用NTP协议提供时间同步服务的。
95.2、硬件时钟:RTC
在主板上的电池中存储,linux启动时根据硬件时钟改变软件时钟;
[root@m01 ~]# hwclock -s #将硬件时钟同步到软件时钟上
[root@m01 ~]# hwclock -w #将软件时钟同步上硬件时钟上
[root@m01 etc]# hwclock --show #显示硬件的时间
95.3、软件时钟:
system clock系统的时钟;
时区不对时会影响ntp时间服务器的同步;
[root@localhost ~]# \cp -a /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#设置系统的时区,将/usr/share/zoneinfo/ 中相应文件拷贝到/etc下并重命名为 localtime 即可修改时区设置,这种修改对 date 命令是即时生效的;
[root@localhost ~]# cat /etc/timezone #查看时区或date -R;
95.4、服务器端:
95.4.1、安装ntp服务软件(系统是自带ntp服务的):
[root@m01 ~]# rpm -qa ntp
ntp-4.2.6p5-12.el6.centos.2.x86_64
95.4.2、如果没有用yum进行安装:
[root@m01 ~]# yum install ntp -y
95.4.3、配置ntp服务:
[root@m01 etc]# egrep -v "^$|#" /etc/ntp.conf
driftfile /var/lib/ntp/drift #ntp时间误差调节
#restrict default kod nomodify notrap nopeer noquery #拒绝ipv4客户端的所有访问
#restrict -6 default kod nomodify notrap nopeer noquery #拒绝ipv6客户端的所有访问
restrict 127.0.0.1 #允许本地服务器的一切访问,包括修改本地的时间参数 ipv4
restrict -6 ::1 #允许本地服务器的一切访问,包括修改本地的时间参数 ipv6
###########################################################
#允许局域网特定网段的client连接到这台服务器同步时间.但是拒绝让他们修改服务
#器上的时间,和trap登陆;
###########################################################
restrict 172.16.1.0 mask 255.255.255.0 nomodify notrap
###########################################################
#扩展:
# restrict IP地址 mask 子网掩码 参数
#其中 IP 可以是IP地址,也可以是 default ,default 就是指所有的IP
#参数有以下几个:
#ignore:拒绝连接到NTP服务器
#nomodiy: 客户端不能更改服务端的时间参数
#noquery: 不提供客户端的时间查询,即时间校时
#notrap: 不提供trap远程登录功能,trap服务是一种远程时间日志服务。
#notrust: 客户端除非通过认证,否则该客户端来源将被视为不信任子网 。
#nopeer: 提供时间服务,但不作为对等体。
#kod: 向不安全的访问者发送Kiss-Of-Death报文。 KOD是NTPv4提出的一种全新的访问控制技术,
#主要用于服务器向客户端上提供状态报告和接入控制等信息。在服务器上使能KOD功能后,
#服务器会根据系统的运行状态向客户端发送DENY Kiss和RATE Kiss码。
# 注意:如果参数没有设定,那就表示该 IP (或子网)没有任何限制!
#############################################################
#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 #添加可以使用的ntp时间服务器,阿里,国家授时中心
server ntp.ntsc.ac.cn
server ntp.aliyun.com
# local clock ,如果上面的服务器都无法同步时间,就和本地系统时间同步,127.127.1.0在这里是一个IP.
server 127.127.1.0
##########################################################
#以本地时间作为时间服务127.127.1.0为第10层,ntp 和127.127.1.0同步完后,
#就变成了11层,ntp是层次阶级的。同步上层服务器的stratum大小不能超过或等于16。
##########################################################
fudge 127.127.1.0 stratum 10
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
[root@m01 ~]# crontab -e #如果本地的定时任务中有时间同步,需要注释掉,不然会起冲突:
#*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1
[root@m01 etc]# vim /etc/sysconfig/ntpd #NTP一般只会同步系统时间. 如果我们也要同步硬件时间,只要加入下面一段配置即可;
SYNC_HWCLOCK=yes
[root@m01 etc]# ntpdate ntp1.aliyun.com #先和网络上的ntp服务器进行时间同步,保持现有时间的准确性,后期如果想要用该法需要停止ntpd;
[root@m01 etc]# hwclock -w #同步系统的时间到硬件的时间上
[root@m01 ~]# /etc/init.d/ntpd start
正在启动 ntpd: [确定]
[root@m01 ~]# /etc/init.d/ntpd status
ntpd (pid 1955) 正在运行...
[root@m01 ~]# chkconfig --list ntpd
ntpd 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
[root@m01 ~]# chkconfig ntpd on
[root@m01 ~]# chkconfig --list ntpd
ntpd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
[root@m01 ~]# ntpq -p #查看网络中的NTP服务器,同时显示客户端和每个服务器的关系
remote refid st t when poll reach delay offset jitter
==============================================================================
*120.25.115.20 10.137.53.7 2 u 48 64 77 27.600 4272.08 572.131
+114.118.7.161 123.139.33.3 2 u 46 64 77 25.274 4581.25 733.887
LOCAL(0) .LOCL. 10 l 120 64 76 0.000 0.000 0.000
参数说明:
* #响应的NTP服务器和最精确的服务器;
+#响应这个查询请求的NTP服务器;
空白:没有响应的NTP服务器;
remote: 本地机器所连接的远程NTP服务器;
refid: 给远程服务器提供时间同步的服务器;
st: 远程服务器的层级别(stratum). 由于NTP是层型结构,有顶端的服务器,多层的Relay Server再到客户端. 所以服务器从高到低级别可以设定为1-16;
为了减缓负荷和网络堵塞,原则上应该避免直接连接到级别为1的服务器的;
when: 上一次成功请求之后到现在的秒数;
poll: 本地机和远程服务器多少时间进行一次同步(单位为秒). 在一开始运行NTP的时候这个poll值会比较小,那样和服务器同步的频率也就增加了;
可以尽快调整到正确的时间范围.之后poll值会逐渐增大,同步的频率也就会相应减小;
reach: 这是一个八进制值,用来测试能否和服务器连接.每成功连接一次它的值就会增加;
delay: 从本地机发送同步要求到ntp服务器的往返时间;
offset: 这是个最关键的值, 它告诉了我们本地机和服务器之间的时间差别. offset越接近于0,我们就和服务器的时间越接近(毫秒);
jitter: 这是一个用来做统计的值. 它统计了在特定个连续的连接数里offset的分布情况. 简单地说这个数值的绝对值越小(毫秒)我们和服务器的时间就越精确;
[root@m01 ~]# ntpstat #查看时间同步状态,一般需要5-10分钟才能成功连接和同步;
unsynchronised
time server re-starting
polling server every 8 s
[root@m01 etc]# ntpstat #利用此方法可以得知ntp服务器在起作用
synchronised to NTP server (120.25.115.20) at stratum 3 #本NTP服务器层次为3,已向120.25.115.20 NTP同步过
time correct to within 5067 ms #时间校正到相差5067ms之内
polling server every 64 s #每64秒会向上级NTP轮询更新一次时间
95.5、客户端:
[root@lb01 ~]# ntpdate 172.16.1.61
6 Dec 16:13:07 ntpdate[8731]: adjust time server 172.16.1.61 offset -0.000021 sec
[root@m01 ~]# crontab -e #写入到客户端中的定时任务中
*/15 * * * * /usr/sbin/ntpdate 172.16.1.61 >/dev/null 2>&1 && hwclock -w #每15分钟会更新本地的时间并同时更新硬件的时钟;
95.6、注意事项:
要注意的是,ntpd有一个自我保护设置: 如果本机与上源时间相差太大, ntpd不运行. 所以新设置的时间服务器一定要先ntpdate从上源取得时间初值,
然后启动ntpd服务。ntpd服务运行后, 先是每64秒与上源服务器同步一次, 根据每次同步时测得的误差值经复杂计算逐步调整自己的时间, 随着误差减小,
逐步增加同步的间隔. 每次跳动, 都会重复这个调整的过程。
ntp服务器和客户端的时区必须要设置好,以确保不会更新成其它时区的时间;
LINUX的NTP服务器必须记得将从上级NTP更新的时间从系统时间写到硬件里去 hwclock -s;
NTP一般只会同步system clock. 但是如果我们也要同步RTC(hwclock)的话那么只需要把下面的选项打开就可以了:
vi /etc/sysconfig/ntpd
SYNC_HWCLOCK=yes
原文:https://www.cnblogs.com/LiuChang-blog/p/12315166.html