Centos 7 最小化时间服务部署配置
基本原理
Centos 7 我所了解有两种时间服务,NTPD与chronyd;两者对Centos 7 的支持都很好,有对chrony非常夸赞的,不过我这里只讲ntpd;有对chrony有想法的可以自行研究。
NTPD属于C/S模式的应用,Centos 下客户端和服务端都采用ntp应用进行通信,通过在配置中进行设定,来进行两者身份的确定。NTPD默认采用UPD协议的123端口进行通信。
实验环境
服务端
操作系统:Centos 7.4
主机地址:192.168.1.198
客户端:
操作系统:Centos 7.4
主机地址:192.168.1.199
操作系统:Windows 10
主机地址:192.168.1.200
部署准备
无论是linux还是windows在同步时间的时候,与上行服务器的时区一定要一致;下面列出linux下面基本时区设定命令
sh-4.2# rm -rf /etc/localtime sh-4.2# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime sh-4.2# timedatectl set-timezone Asia/Shanghai sh-4.2# hwclock -w
部署配置
服务端部署
1、关闭selinux
sh-4.2# sed -i 's/enforcing/disabled/' /etc/selinux/config sh-4.2# setenforce 0
2、关闭防火墙
sh-4.2# rpm -qa | grep "firewall" | xargs rpm -e --nodeps sh-4.2# rpm -qa | grep "iptables" | xargs rpm -e --nodeps
3、挂载本地源
sh-4.2# mount -t iso9660 -o loop /opt/CentOS-7-x86_64-Everything-1708.iso /media/ sh-4.2# find /etc/yum.repos.d/ -ignore_readdir_race -type f -exec mv {} /etc/yum.repos.d/back/ \; sh-4.2# cat /etc/yum.repos.d/GuGe.repo [GuGe] name=GuGe baseurl=file:///media gpgcheck=0 enable=1 sh-4.2# yum clean all sh-4.2# yum makecache all
4、安装配置
sh-4.2# yum -y install ntp sh-4.2# cp /etc/ntp.conf /etc/ntp.conf.bak sh-4.2# vi /etc/ntp.conf driftfile /var/lib/ntp/drift restrict default nomodify notrap kod restrict -6 default kod nomodify notrap restrict 127.0.0.1 restrict -6 ::1 server 127.127.1.0 prefer fudge 127.127.1.0 stratum 0 includefile /etc/ntp/crypto/pw keys /etc/ntp/keys logfile /var/log/ntp sh-4.2# echo "" > /etc/ntp/step-tickers sh-4.2# vi /etc/sysconfig/ntpd SYNC_HWCLOCK=yes OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid -g"
5、启动服务
sh-4.2# systemctl start ntpd.service sh-4.2# systemctl enable ntpd.service sh-4.2# systemctl disable chronyd # 如果系统中存在chrony服务,则需要禁止启用;chrony 是centos 7 用来替代ntp时间同步服务的一个程序,两者不可并行运行
Linux客户端部署
1、关闭selinux
sh-4.2# sed -i 's/enforcing/disabled/' /etc/selinux/config
sh-4.2# setenforce 0
2、关闭防火墙
sh-4.2# rpm -qa | grep "firewall" | xargs rpm -e --nodeps
sh-4.2# rpm -qa | grep "iptables" | xargs rpm -e --nodeps
3、挂载本地源
sh-4.2# mount -t iso9660 -o loop /opt/CentOS-7-x86_64-Everything-1708.iso /media/
sh-4.2# find /etc/yum.repos.d/ -ignore_readdir_race -type f -exec mv {} /etc/yum.repos.d/back/ \;
sh-4.2# cat /etc/yum.repos.d/GuGe.repo
[GuGe]
name=GuGe
baseurl=file:///media
gpgcheck=0
enable=1
sh-4.2# yum clean all
sh-4.2# yum makecache all
4、安装配置
sh-4.2# yum -y install ntp
sh-4.2# cp /etc/ntp.conf /etc/ntp.conf.bak
sh-4.2# vi /etc/ntp.conf
driftfile /var/lib/ntp/drift
restrict default nomodify notrap kod
restrict -6 default kod nomodify notrap
restrict 127.0.0.1
restrict -6 ::1
server 192.168.1.198
fudge 127.127.1.0 stratum 10
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
logfile /var/log/ntp
sh-4.2# echo "" > /etc/ntp/step-tickers
sh-4.2# vi /etc/sysconfig/ntpd
SYNC_HWCLOCK=yes
OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid -g"
5、启动服务
sh-4.2# systemctl start ntpd.service
sh-4.2# systemctl enable ntpd.service
sh-4.2# systemctl disable chronyd # 如果系统中存在chrony服务,则需要禁止启用;chrony 是centos 7 用来替代ntp时间同步服务的一个程序,两者不可并行运行
Windows客户端部署
测试结果
特别注意:windows的我这里就不做截图了;linux的ntpstat需要等客户端去服务端同步时间时才会显示正常;
配置详解
/etc/ntp.conf详解
driftfile:设置系统时间与BIOS时间的偏差记录文件,无偏差时,此文件不存在。
restrict:控制相关权限,详解如下:
语法:restrict [IP地址] [mask] [子网掩码] [参数]
IP地址:可以是指定的地址池,也可以是default;default是指定所有IP地址
参数详解如下:
ignore :关闭所有的 NTP 联机服务
nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。
notrust :客户端除非通过认证,否则该客户端来源将被视为不信任子网
noquery :不提供客户端的时间查询:用户端不能使用ntpq,ntpc等命令来查询ntp服务器
notrap :不提供trap远端登陆:拒绝为匹配的主机提供模式 6 控制消息陷阱服务。陷阱服务是 ntpdq 控制消息协议的子系统,用于远程事件日志记录程序。
nopeer :用于阻止主机尝试与服务器对等,并允许欺诈性服务器控制时钟
kod : 访问违规时发送 KoD 包。
restrict -6:表示IPV6地址的权限设置。
server:设定上层NTP服务器,设定格式:server [IP or hostname] [参数];参数如下:
perfer:表示优先级最高
burst:当一个运程NTP服务器可用时,向它发送一系列的并发包进行检测。
iburst:当一个运程NTP服务器不可用时,向它发送一系列的并发包进行检测。
特别提示:默认情况小15分钟后才会与上层NTP服务器进行时间校对。
fudge:服务器的层次。设为0则为顶级,如果要向别的NTP服务器更新时间,请不要把它设为0。设定格式:fudge 127.127.1.0 stratum [num]
stratum:即fudge的值范围为0~15
Keys:秘钥文件,除了以 restrict 来限制客户端的联机之外,我们也可以透过密钥系统来给客户端认证
logfile:设定ntpd程序的运行日志
/etc/ntp/step-tickers详解
当ntpd服务启动时,会自动与该文件中记录的上层NTP服务进行时间校对,一般来说在ntp.conf中设置了上行服务器,可以清空此文件中内容。
/etc/sysconfig/ntpd详解
此文件用来让ntp同时同步硬件时间,添加 SYNC_HWCLOCK=yes 这样,就可以让硬件时间与系统时间一起同步。也可以用命令hwclock -w来进行同步;
[OPTIONS]选项用来解决红帽系列的操作系统由ntp程序引起的网络故障;设定参数如下:
-x:启动时间微调功能,默认不开启此功能;假如使用了-x选项,那么ntpd只做微调,不跳跃调整时间,但是要注意,-x参数的负作用:当时钟差大的时候,同步时间将花费很长的时间。
-x也有一个阈值,就是600s,当系统时钟与标准时间差距大于600s时,ntpd会使用较大“步进值”的方式来调整时间,将时钟“步进”调整到正确时间。
假如不使用-x选项,那么ntpd在时钟差距小于128ms时,使用微调方式调整时间,当时差大于128ms时,使用“跳跃”式调整。
这两种方式都会在本地时钟与远端的NTP服务器时钟相差大于1000s时,ntpd会停止工作。
-g:用来解决上面这个差距大于1000s的问题
-u:指定ntp的运行用户与运行组
-L:用来处理ntp对网络造成短暂不通问题的解决方式。
相关操作
1、设置时区
sh-4.2# rm -rf /etc/localtime sh-4.2# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime sh-4.2# timedatectl set-timezone Asia/Shanghai
2、硬件时间同步
sh-4.2# hwclock -w
3、timedatectl命令
sh-4.2# timedatectl status # 显示系统的当前时间和日期 sh-4.2# timedatectl list-timezones # 查看所有可用的时区 sh-4.2# timedatectl set-timezone "Asia/Shanghai" # 设定指定时区 sh-4.2# timedatectl set-timezone UTC # 设定世界时 sh-4.2# timedatectl set-time 15:58:30 # 设定指定时间 sh-4.2# timedatectl set-time 20151120 # 设定指定日期 sh-4.2# timedatectl set-time '16:10:40 2015-11-20' # 设置日期和时间 sh-4.2# timedatectl set-local-rtc 1 # 将你的硬件时钟设置为本地时区,强烈不推荐这么做 sh-4.2# timedatectl set-ntp true # 开始自动时间同步到远程NTP服务器
4、查看客户端通信状况
ntpq查询命令
remote:本机和上层ntp的ip或主机名,“+”表示优先,“*”表示次优先
refid:参考上一层ntp主机地址
st:stratum阶层
when:多少秒前曾经同步过时间
poll:下次更新在多少秒后
reach:已经向上层ntp服务器要求更新的次数
delay:网络延迟
offset:时间补偿
jitter:系统时间与bios时间差
ntpstat命令
5、手动同步
sh-4.2# ntpdate -u 1.cn.pool.ntp.org
6、国内常用NTP时间服务器地址
210.72.145.44 国家授时中心服务器IP地址
202.120.2.101 上海交通大学网络中心NTP服务器地址
ntp.sjtu.edu.cn 上海交通大学网络中心NTP服务器地址
s1a.time.edu.cn 北京邮电大学
s1b.time.edu.cn 清华大学
s1c.time.edu.cn 北京大学
s1d.time.edu.cn 东南大学
s1e.time.edu.cn 清华大学
s2a.time.edu.cn 清华大学
s2b.time.edu.cn 清华大学
s2c.time.edu.cn 北京邮电大学
s2d.time.edu.cn 西南地区网络中心
s2e.time.edu.cn 西北地区网络中心
s2f.time.edu.cn 东北地区网络中心
s2g.time.edu.cn 华东南地区网络中心
s2h.time.edu.cn 四川大学网络管理中心
s2j.time.edu.cn 大连理工大学网络中心
s2k.time.edu.cn CERNET桂林主节点
s2m.time.edu.cn 北京大学
7、NTP官网地址
官网:http://www.ntp.org
官方自带的中国地区时钟
1.cn.pool.ntp.org
2.cn.pool.ntp.org
3.cn.pool.ntp.org
0.cn.pool.ntp.org
cn.pool.ntp.org
tw.pool.ntp.org
0.tw.pool.ntp.org
1.tw.pool.ntp.org
2.tw.pool.ntp.org
3.tw.pool.ntp.org
8、日志记录
/var/log/ntp:程序运行日志
/var/log/messages:系统日志(里面包含ntp同步操作记录)
注意事项
- NTP服务会间隔多长时间想时钟服务器请求一次时钟同步呢?默认最小时间间隔为64s,默认最大时间间隔是1024s(17分钟左右)。64s是比较合理的,默认间隔也是可调的;但是我还没有找到调试的方法
- ntpdate命令不能在ntpd程序运行的时候操作
- ntpd与chronyd两个程序不能同时启动,否则ntpd有可能会启动失败
- ntpd客户端必须在服务端之后启动,否则客户端至少需要两次以上的同步时间才能正常同步
- 下面介绍ntpd与ntpdate命令的区别
ntpd不仅仅是时间同步服务器,它还可以做客户端与标准时间服务器进行同步时间,而且是平滑同步,并非ntpdate立即同步,在生产环境中慎用ntpdate,也正如此两者不可同时运行。不要直接改到当前时间 因为你会丢失中间的时间序列,时钟的跃变,对于某些程序会导致很严重的问题。许多应用程序依赖连续的时钟——毕竟,这是一项常见的假定,即,取得的时间是线性的,一些操作,例如数据库事务,通常会地依赖这样的事实:时间不会往回跳跃。不幸的是,ntpdate调整时间的方式就是我们所说的”跃变“:在获得一个时间之后,ntpdate使用settimeofday(2)设置系统时间,这有几个非常明显的问题:
- 这样做不安全。ntpdate的设置依赖于ntp服务器的安全性,攻击者可以利用一些软件设计上的缺陷,拿下ntp服务器并令与其同步的服务器执行某些消耗性的任务。由于ntpdate采用的方式是跳变,跟随它的服务器无法知道是否发生了异常(时间不一样的时候,唯一的办法是以服务器为准)。
- 这样做不精确。一旦ntp服务器宕机,跟随它的服务器也就会无法同步时间。与此不同,ntpd不仅能够校准计算机的时间,而且能够校准计算机的时钟。
- 这样做不够优雅。由于是跳变,而不是使时间变快或变慢,依赖时序的程序会出错(例如,如果ntpdate发现你的时间快了,则可能会经历两个相同的时刻,对某些应用而言,这是致命的)。因而,唯一一个可以令时间发生跳变的点,是计算机刚刚启动,但还没有启动很多服务的那个时候。其余的时候,理想的做法是使用ntpd来校准时钟,而不是调整计算机时钟上的时间。NTPD 在和时间服务器的同步过程中,会把 BIOS 计时器的振荡频率偏差——或者说 Local Clock 的自然漂移(drift)——记录下来。这样即使网络有问题,本机仍然能维持一个相当精确的走时。(这段话来自潇湘隐者,万分感谢此前辈!)
参考内容
https://www.jianshu.com/p/fb32239ccf2b
https://www.cnblogs.com/kerrycode/archive/2015/08/20/4744804.html
http://blog.51cto.com/13554498/2059429
http://blog.sina.com.cn/s/blog_48f9c0840101aiv2.html
http://www.cnblogs.com/276815076/p/6397994.html
https://blog.csdn.net/solaraceboy/article/details/78831319?utm_source=blogxgwz3