NTP服务端和客户端搭建

常用配置

服务端

  1. ntp服务搭建
yum -y install ntp ntpdate
systemctl enable ntpd
systemctl start ntpd
systemctl status ntpd
  1. 修改配置文件
vi /etc/ntp.conf
  # 注释掉如下几行
  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 127.127.1.0 iburst
systemctl restart ntpd
  1. 防火墙设置
firewall-cmd --permanent --add-port=123/udp
firewall-cmd --reload
  1. 系统时间修改
date -s "2020-02-06 17:04:00"
clock -w

客户端

  1. ntp服务搭建
yum -y install ntp ntpdate
systemctl enable ntpd
systemctl start ntpd
systemctl status ntpd
  1. 修改配置文件
vi /etc/ntp.conf
  # 注释掉如下几行
  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
  # 追加如下内容(6.6.6.253为局域网内时间同步服务器,就是上面搭建好的那台服务端IP):
  server  6.6.6.253
  restrict 6.6.6.253 nomodify notrap noquery
systemctl restart ntpd
  1. 进行时间同步
# 同步时间
ntpdate -u 6.6.6.253
# 查看状态
ntpq -p

NTP内容补充

时间服务器必要性

  1. 大数据产生与处理系统是各种计算设备集群,计算设备将统一、同步的标准时间用于记录各种事件发生时序,如E-MAIL信息、文件创建和访问时间、数据库处理时间等。
  2. 大数据系统内不同计算设备之间控制、计算、处理、应用等数据或操作都具有时序性,若计算机时间不同步,这些应用或操作或将无法正常进行。
  3. 大数据系统是对时间敏感的计算处理系统,时间同步是大数据能够得到正确处理的基础保障,是大数据得以发挥作用的技术支撑。
  4. 大数据时代,整个处理计算系统内的大数据通信都是通过网络进行。时间同步也是如此,利用大数据的互联网络传送标准时间信息,实现大数据系统内时间同步。

网络时间同步协议(NTP)是时间同步的技术基础。在CentOS8.0中默认不再支持ntp软件包,时间同步将由chrony来实现

ntp服务简介

  1. NTP属于运用层协议(依据UDP传输,运用的端口号为123),用来同步网络中分布式时间服务器和客户端之间的时间,使网络中的设备运行在同一时间
  2. 时间服务器和客户端是相对的。供应时间规范的设备为时间服务器,接收时间服务的设备为时间客户端
  3. 设备运转NTP之后,通过沟通NTP报文,既可以作为时间服务器供应时间规范,又可以作为时间客户端接收时间服务

运行环境和安装ntp服务

  1. 运行环境
服务器端:192.168.3.101
客户端:192.168.3.102
  1. 安装
# yum安装
yum install -y ntp

# 源码安装方式
wget http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-4.2.8p15.tar.gz
tar -xf ntp-4.2.8p15.tar.gz
cd ntp-4.2.8p15/
./configure --prefix=/usr/local/ntp --enable-all-clocks --enable-parse-clocks
make && make install

# 设置开机启动
systemctl enable ntpd

设置ntp Server服务端配置文件

 vim /etc/ntp.conf 
    # 【作为客户端的参数配置】
    # 1. 先处理权限方面的问题,包括放行时间源服务器  以及开放局域网用户来源【服务端】
    # 配置原则:先全部禁用,然后逐个开放
    restrict default kod nomodify notrap nopeer noquery #   拒绝ipv4的用户,即对于默认的client拒绝所有操作,在下面的restrict再开通指定权限
    restrict -6 default kod nomodify notrap nopeer noquery  #   拒绝ipv6的用户
    restrict ntp.ntsc.ac.cn # 放行 国家授时中心 进入本NTP的服务器
    restrict cn.ntp.org.cn # 放行 中国NTP快速授时服务 进入本NTP的服务器
    restrict ntp1.aliyun.com # 放行 阿里云公共NTP服务 进入本NTP的服务器
    restrict 127.0.0.1   # 允许本机地址的一切操作(ipv4)
    restrict -6 ::1  # 允许本机地址的一切操作(ipv6)

    # 2. 设定主机来源,请先将原本的 [0|1|2].centos.pool.ntp.org 的设定批注掉:
    server ntp.ntsc.ac.cn prefer  # prefer表示最优
    server cn.ntp.org.cn iburst
    server ntp1.aliyun.com iburst

    #【作为服务端的参数配置】
    # 1. 权限设置,设定哪些网段或者IP可以来此服务器同步时间
    restrict 192.168.3.0 mask 255.255.255.0 nomodify notrap #允许192.168.3段机器同步时间,指定可以和NTP通信的IP或者网段
    # 2. 默认的一个内部时钟数据,用在外部NTP服务器失效时,使用它为局域网用户提供服务   
    server 127.127.1.0 # 远程时间服务器不可用时,以本地时间作为服务时间
    fudge 127.127.1.0 stratum 10     #stratum指定层数,越小离时间源越近。 层级1为国际时间源服务器

    #【其他配置】
    # 1. 预设时间差异分析档案与暂不用到的keys等
    driftfile /var/lib/ntp/drift # 和上层NTP服务器频率误差的记录文件
    includefile /etc/ntp/crypto/pw # 设定包含的配置文件子文件
    #crypto #启用公钥加密
    keys /etc/ntp/keys # 当进行秘钥方式进行认证的时候需要的文件
    logfile /var/log/ntp    #指定日志文件
    logconfig all #指定日志级别,info、all、event三种可以选择

参数说明

restrict选项格式

控制相关权限,语法为: restrict [客户端IP] mask [IP掩码] [参数]
客户端IP和IP掩码指定了对网络中哪些范围的计算机进行控制,如果使用default关键字,则表示对所有的计算机进行控制,参数指定了具体的限制内容,常见的参数如下:

  1. ignore:拒绝连接到NTP服务器
  2. nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时
  3. notrust:客户端除非通过认证,否则该客户端来源将被视为不信任子网,NTP4.2版本以后使用会出错
  4. noquery:不提供客户端的时间查询,即用户端不能使用ntpq、ntpc等命令来查询ntp服务器
  5. notrap:不提供trap远端登陆,即拒绝为匹配的主机提供模式6控制消息陷阱服务。陷阱服务是ntpdq控制消息协议的子系统,用于远程事件日志记录程序
  6. nopeer:提供时间服务,但不作为对等体
  7. kod:向不安全的访问者发送Kiss-Of-Death报文

restrict -6表示ipv6地址的权限设置

server选项格式

指定时间同步源,语法为:server host [ key n ] [ version n ] [ prefer ] [ mode n ] [ minpoll n ] [ maxpoll n ] [ iburst ]
其中host是上层NTP服务器的IP地址或域名,随后所跟的参数解释如下所示:

  1. key:表示所有发往服务器的报文包含有秘钥加密的认证信息,n是32位的整数,表示秘钥号
  2. version:表示发往上层服务器的报文使用的版本号,n默认是3,可以是1或者2
  3. prefer:如果有多个server选项,具有该参数的服务器优先使用
  4. mode:指定数据报文mode字段的值
  5. minpoll:指定与查询该服务器的最小时间间隔为2的n次方秒,n默认为6,范围为4-14
  6. maxpoll:指定与查询该服务器的最大时间间隔为2的n次方秒,n默认为10,范围为4-14
  7. iburst:当初始同步请求时,采用突发方式接连发送8个报文,时间间隔为2秒

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

其他参数配置

fudge 127.127.1.0 stratum 10

  1. stratum根据上层server的层次而设定(+1),对于提供network time service provider的主机来说,stratum的设定要尽可能准确
  2. 作为局域网的time service provider,通常将stratum设置为10
  3. 0层的服务器采用的是原子钟、GPS钟等物理设备,stratum 1stratum 0是直接相连的,往后的stratum与上一层stratum通过网络相连,同一层的server也可以交互
  4. ntpd对下层client来说是service server,对于上层server来说它是client
  5. ntpd根据配置文件的参数决定是要为其他服务器提供时钟服务或者是从其他服务器同步时钟,所有的配置都在/etc/ntp.conf文件中

设置ntp client客户端配置文件

vim /etc/ntp.conf
        server 192.168.3.101

服务端和客户端接下来操作

  1. 重启ntp服务
systemctl restart ntpd
  1. 查看ntp服务同步状况
# t查看同步结果
ntpstat # 一般需要5-10分钟后才能成功连接和同步

# 查看时间同步状态
ntpq -p
# 1. remote:本机和上层ntp的ip或主机名,*表示目前正在使用的上层NTP服务器,+表示可以连接上(作为时间更新的候选者),-表示不合格的ntp服务器
# 2. refid:参考上一层ntp主机地址
# 3. st:stratum阶层
# 4. when:多少秒前曾经同步过时间
# 5. poll:下次更新在多少秒后
# 6. reach:已经向上层ntp服务器要求更新的次数
# 7. delay:网络延迟
# 8. offset:时间补偿
# 9. jitter:系统时间与bios时间差

# 查看ntpd进程状态
watch "ntpq -p"  # 按Ctrl+C停止查看进程
# 1. 第一列中的字符指示源的质量。星号 ( * ) 表示该源是当前引用
# 2. remote:列出源的IP地址或主机名
# 3. when:指出从轮询源开始已过去的时间(秒)
# 3. poll:指出轮询间隔时间。该值会根据本地时钟的精度相应增加
# 4. reach:是一个八进制数字,指出源的可存取性。值377表示源已应答了前八个连续轮询
# 5. offset:是源时钟与本地时钟的时间差(毫秒)

同步硬件时钟

ntp服务,默认只会同步系统时间,如果想要让ntp同时同步硬件时间,可以设置/etc/sysconfig/ntpd文件,在/etc/sysconfig/ntpd文件中,添加SYNC_HWCLOCK=yes,就可以让硬件时间与系统时间一起同步。允许BIOS与系统时间同步,也可以通过hwclock -w命令

ntpd、ntpdate的区别

测试ntpdate同步是否正常ntpdate 192.168.3.101
使用定时任务同步,例如每天凌晨五点同步:0 5 * * * /usr/sbin/ntpdate 192.168.3.101
不建议使用ntpdate,为什么呢?
ntpd不仅仅是时间同步服务器,它还可以做客户端与标准时间服务器进行同步时间,而且是平滑同步,并非ntpdate立即同步,在生产环境中慎用ntpdate,也正如此两者不可同时运行。
时钟的跃变,对于某些程序会导致很严重的问题。许多应用程序依赖连续的时钟,毕竟这是一项常见的假定,即取得的时间是线性的,一些操作,例如数据库事务,通常会地依赖这样的事实:时间不会往回跳跃。
不幸的是,ntpdate调整时间的方式就是所说的跃变,即在获得一个时间之后,ntpdate使用settimeofday(2)设置系统时间,这有几个非常明显的问题:

  1. 不安全。ntpdate的设置依赖于ntp服务器的安全性,攻击者可以利用一些软件设计上的缺陷,拿下ntp服务器并令与其同步的服务器执行某些消耗性的任务。由于ntpdate采用的方式是跃变,跟随它的服务器无法知道是否发生了异常(时间不一样的时候,唯一的办法是以服务器为准)
  2. 不精确。一旦ntp服务器宕机,跟随它的服务器也就会无法同步时间。与此不同,ntpd不仅能够校准计算机的时间,而且能够校准计算机的时钟
  3. 不够优雅。由于是跃变,而不是使时间变快或变慢,依赖时序的程序会出错例如,如果ntpdate发现时间快了,则可能会经历两个相同的时刻,对某些应用而言,这是致命的

唯一一个可以令时间发生跃变的点,是计算机刚刚启动,但还没有启动很多服务的那个时候
其余的时候,理想的做法是使用ntpd来校准时钟,而不是调整计算机时钟上的时间
ntpd在和时间服务器的同步过程中,会把BIOS计时器的振荡频率偏差或者说LocalClock的自然漂移drift记录下来,这样即使网络有问题,本机仍然能维持一个相当精确的走时

常用的ntp公共时间服务器

常用的ntp公共时间服务器

常见问题

配置ntp服务之后无法同步,通过命令timedatectl查看,之后,发现ntp服务没有生效NTP enabled: no,解决此问题需要执行timedatectl set-ntp yes