Linux 时间同步 04 ntp时间同步

注意:

ntpd服务在不同时区或者时间相差太大无法同步,所以在配置ntp服务器之前需要先使用ntpdate手动同步。

ntpd服务监听UDP:123,注意防火墙放行。

ntpd服务启动后,不能手动运行ntpdate更新时间(会报端口被占用),无法使用 timedatectl set-time HH:MM:SS 设置时间(想要使用除了关闭ntpd服务,还要禁用NTP时间同步timedatectl set-ntp false)。

将系统时钟和世界协调时UTC同步,精度在局域网内可达0.1ms,在互联网上绝大多数的地方精度可以达到1-50ms。

项目官网:http://www.ntp.org

使用ntpd进行时钟同步,可以保证一个时间不经历两次,它每次同步时间的偏移量不会太陡,是慢慢来的,这正因为这样,ntpd平滑同步可能耗费的时间比较长。

ntpd服务运行后, 先是每64秒与上源服务器同步一次, 根据每次同步时测得的误差值经复杂计算逐步调整自己的时间, 随着误差减小, 逐步增加同步的间隔. 每次跳动, 都会重复这个调整的过程.

安装ntp

yum -y install ntp

配置与外部时间服务器进行时间同步的客户端主机

添加服务器端的IP地址,进行时间同步(注意:此客户端的IP地址是172.16.1.41)

1、修改chronyd配置文件 /etc/ntp.conf

# restrict default nomodify notrap nopeer noquery   # 注释掉此行,允许其他客户端主机同步此time server主机

# server 1.centos.pool.ntp.org iburst        # 注释掉此行
# server 1.centos.pool.ntp.org iburst # 注释掉此行
# server 1.centos.pool.ntp.org iburst # 注释掉此行 restrict 172.16.1.0 mask 255.255.255.0 nomodify noztrap # 允许集群所在网段同步此time server主机 server 210.72.145.44 prefer # 这是中国国家授时中心的IP
server ntp1.aliyun.com iburst # iburst 加快时间同步
server ntp2.aliyun.com iburst server 127.0.0.1 # local clock
fudge 127.0.0.0 stratum 10

2、启动ntpd服务,并设置为开机启动

systemctl start ntpd
systemctl enable ntpd

配置其他客户端与以上客户端主机时间同步

其他客户端只需要与代表的客户端(即与服务器端时间同步的客户端主机)进行同步即可(即使用上面客户端IP地址:172.16.1.41进行时间同步)。

1、修改chronyd配置文件 /etc/ntp.conf

server 172.16.1.41 iburst        # 删掉其他的,添加要同步时间的客户端主机ip

2、启动ntpd服务,并设置为开机启动

systemctl start ntpd
systemctl enable ntpd

验证查看

[root@linux ~]# ntpstat          # 查看时间同步状态,查看ntp服务器有无和上层ntp连通
synchronized to NTP server(127.127.1.0) at stratum 11
time correct to within 950ms
polling server every 64 s
# 时间校正约为950*10(-6)秒。且每隔64秒会主动更新时间。

常见的错误:

25 Apr 15:30:17 ntpdate[11520]: no server suitable for synchronization found # 等待几分钟就可以了。

ntp服务器配置完毕后,需要等待5-10分钟才能与/etc/ntp.conf中配置的标准时间进行同步。

[root@linux ~]# ntptrace –n 127.0.0.1  # 列出目前NTP服务器(第一层)与上层NTP服务器(第二层)彼此之间的关系
127.0.0.1:stratum 11, offset 0.000000,synch distance 0.950951
222.73.214.125:stratum 2,offset –0.000787,synch distance 0.108575
209.81.9.7:stratum 1,offset 0.000028,synch distance 0.00436,refid ‘GPS’
ntpq -p  查看网络中的NTP服务器,查看ntp服务器与上层ntp的状态
remote:本机和上层ntp的ip或主机名,“+”表示优先,“*”表示次优先
refid:参考上一层ntp主机地址
st:stratum阶层
when:上次更新在多少秒前,指出从轮询源开始已过去的时间(秒)。
poll:下次更新在多少秒后,指出轮询间隔时间。该值会根据本地时钟的精度相应增加。
reach:是一个八进制数字,指出源的可存取性。已经向上层ntp服务器要求更新的次数
delay:网络延迟
offset:时间补偿,是源时钟与本地时钟的时间差(毫秒)。
jitter:系统时间与bios时间差

设置/etc/sysconfig/ntpd文件

让ntp服务同时同步硬件时间,默认只会同步系统时间。

echo "SYNC_HWCLOCK=yes" >> /etc/sysconfig/ntpd

/etc/ntp.conf 配置详解

# 1. 先处理权限方面的问题,包括放行上层服务器以及开放局域网用户来源:
restrict default kod nomodify notrap nopeer noquery # 拒绝所有 IPv4 的用户
restrict -6 default kod nomodify notrap nopeer noquery # 拒绝所有 IPv6 的用户
restrict 220.130.158.71 # 放行 tock.stdtime.gov.tw 进入本 NTP 的服务器
restrict 59.124.196.83 # 放行 tick.stdtime.gov.tw 进入本 NTP 的服务器
restrict 59.124.196.84 # 放行 time.stdtime.gov.tw 进入本 NTP 的服务器
restrict 127.0.0.1 # 默认,放行本机来源
restrict -6 ::1 # 默认,放行本机来源 IPv6
restrict 192.168.100.0 mask 255.255.255.0 nomodify # 放行局域网用户来源,或者列出单独IP # 2. 设定主机来源,请先将原本的 [0|1|2].centos.pool.ntp.org 的设定批注掉:
server 220.130.158.71 prefer # 以这部主机为最优先的server
server 59.124.196.83
server 59.124.196.84 # 3.默认的一个内部时钟数据,用在没有外部 NTP 服务器时,使用它为局域网用户提供服务:
# server 127.127.1.0 # local clock
# fudge 127.127.1.0 stratum 10 # 4.预设时间差异分析档案与暂不用到的 keys 等,不需要更动它:
driftfile /var/lib/ntp/drift #系统时间与BIOS事件的偏差记录
keys /etc/ntp/keys

=restrict选项格式=

restrict [ 客户端IP ] mask [ IP掩码 ] [参数]

“客户端IP” 和 “IP掩码” 指定了对网络中哪些范围的计算机进行控制,如果使用default关键字,则表示对所有的计算机进行控制,参数指定了具体的限制内容,没有参数表示该 IP (或网域)"没有任何限制",常见的参数如下:

◆ ignore:拒绝连接到NTP服务器

◆ nomodiy: 客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。

◆ noquery: 不提供客户端的时间查询

◆ notrap: 不提供trap远程登录功能,trap服务是一种远程时间日志服务。

◆ notrust: 客户端除非通过认证,否则该客户端来源将被视为不信任子网 。

◆ nopeer: 提供时间服务,但不作为对等体。

◆ 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地址或域名,随后所跟的参数解释如下所示:

◆ key: 表示所有发往服务器的报文包含有秘钥加密的认证信息,n是32位的整数,表示秘钥号。

◆ version: 表示发往上层服务器的报文使用的版本号,n默认是3,可以是1或者2。

◆ prefer: 如果有多个server选项,具有该参数的服务器优先使用。

◆ mode: 指定数据报文mode字段的值。

◆ minpoll: 指定与查询该服务器的最小时间间隔为2的n次方秒,n默认为6,范围为4-14。

◆ maxpoll: 指定与查询该服务器的最大时间间隔为2的n次方秒,n默认为10,范围为4-14。

◆ iburst: 当初始同步请求时,采用突发方式接连发送8个报文,时间间隔为2秒。

=层次(stratum)=

stratum根据上层server的层次而设定(+1)。

对于提供network time service provider的主机来说,stratum的设定要尽可能准确。

而作为局域网的time service provider,通常将stratum设置为10

0层的服务器采用的是原子钟、GPS钟等物理设备,stratum 1与stratum 0 是直接相连的,

往后的stratum与上一层stratum通过网络相连,同一层的server也可以交互。

ntpd对下层client来说是service server,对于上层server来说它是client。

ntpd根据配置文件的参数决定是要为其他服务器提供时钟服务或者是从其他服务器同步时钟。所有的配置都在/etc/ntp.conf文件中。

Linux 时间同步 04 ntp时间同步的更多相关文章

  1. 如何在linux 上配置NTP 时间同步?

    故障现象: 有些应用场景,对时间同步的要求严格,需要用到NTP同步,如何在linux上配置NTP时间同步? 解决方案: 在linux 上配置NTP 时间同步,具休操作步骤,整理如下: 1.安装软件包( ...

  2. Linux下搭建ntp时间同步服务器

    1.ntpd软件安装(略过) 2.修改ntp.conf配置文件 vi /etc/ntp.conf 第一种配置:允许任何IP的客户机都可以进行时间同步将“restrict default kod nom ...

  3. 【Linux】部署NTP时间同步服务器

    1. 查看机器的Linux版本 查看集群内所有服务器的linux版本,确保相同,不要跨大版本. [root@bigdata111 ~]# cat /etc/redhat-release CentOS ...

  4. linux(CentOS7) 之 ntp时间同步配置步骤

    下 载 百度搜索 ntp rpm 下载(或直接进入官网https://pkgs.org/download/ntp) 搜多ntp,选择centos7 64位下载,ntpdata 是依赖包也要下载 基 础 ...

  5. 多台CentOS服务器时间同步(NTP时间同步)(转)

    1.用ntpdate从时间服务器更新时间 如果你的linux系统根本没有ntpdate这个命令 yum install ntp 安装完了之后,你不要做什么配置,也不需要,直接测试一下 [root@lo ...

  6. linux ntp时间同步

    linux ntp时间同步 一.搭建时间同步服务器1.编译安装ntp serverrpm -qa | grep ntp若没有找到,则说明没有安装ntp包,从光盘上找到ntp包,使用rpm -Uvh n ...

  7. 关于linux下ntp时间同步服务的安装与配置

    1.安装ntp服务,要使用时间同步.那么服务端与客户端都需要使用如下命令安装NTP软件包 [root@ ~]# yum install ntp -y 2.如果只是作为客户端的话,配置则可以非常简单,编 ...

  8. linux服务器应用NTP配置时间同步

    linux服务器应用NTP配置时间同步 • 为什么建议使用ntpd而不是ntpdate? #####原因很简单,ntpd是步进式的逐渐调整时间,而ntpdate是断点更新,比如现在服务器时间是9.18 ...

  9. Linux集群之间配置NTP时间同步ntp

    NTP时间同步 注意事项 要注意的是,ntpd 有一个自我保护设置: 如果本机与上源时间相差太大, ntpd 不运行. 所以新设置的时间服务器一定要先 ntpdate 从上源取得时间初值, 然后启动 ...

随机推荐

  1. day3(django配置跨域)

    1.跨越原理 1. 首先浏览器安全策略限制js ajax跨域访问服务器 2. 如果服务器返回的头部信息中有当前域: // 允许 http://localhost:8080 这个网站打开的页面中的js访 ...

  2. 第8.14节 Python类中内置方法__str__详解

    一. object类内置方法__str__和函数str 类的内置方法__str__和内置函数str实际上实现的是同一功能,实际上str调用的就是__str__方法,只是调用方式不同,二者的调用语法如下 ...

  3. 第二十六章、containers容器类部件QToolBox工具箱详解

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 容器部件就是可以在部件内放置其他部件的部件,在Qt Designer中可以使用的容器部件有 ...

  4. Python中使用“模块名.__all__”查看模块建议导出的属性

    在<第10.5节 使用__all__定义Python模块导入白名单>中,老猿介绍了在自定义模块中使用定义__all__属性来提供模块对外可见的白名单,使用该机制除了可以定义访问的白名单外, ...

  5. PyQt(Python+Qt)学习随笔:部件的大小策略sizePolicy的含义

    在Qt Designer中的每个部件,除了设置部件的位置(geometry)之外,还可以指定部件的大小策略sizePolicy.部件的sizePolicy用于说明部件在布局管理中的缩放方式,当部件没有 ...

  6. 使用k8s部署springboot+redis简单应用

    准备 本文将使用k8s部署一个springboot+redis应用,由于是示例,所以功能比较简单,只有设置值和获取值两个api. (1)设置值 (2)获取值 构建Web应用 (1)创建一个spring ...

  7. 团队作业4-Day6

    团队作业4-Day6 项目git地址 1. 站立式会议 2. 项目燃尽图 3. 适当的项目截图 4. 代码/文档签入记录(部分) 5. 每人每日总结 吴梓华:今日修复了图片显示BUG,补充了排位模式出 ...

  8. HBuilder云端打包+个推

    1.个推上登记应用. 应用名称和应用标识,在HBuilder的云端打包配置中获取. 应用证书:必需要有苹果开发者账号,并且加入了"iOS Developer Program".加入 ...

  9. PHP与Mysql之间的纠缠(超详细)

    目录 第一章 PHP操作mysql数据库 index.html代码 connect.php代码如下: list.php代码如下: 第二章 PHP 会话管理和控制 一.php 会话控制 之 PHP中的C ...

  10. 推荐系统实践 0x0f AutoRec

    从这一篇开始,我们开始学习深度学习推荐模型,与传统的机器学习相比,深度学习模型的表达能力更强,并且更能够挖掘出数据中潜藏的模式.另外.深度学习模型结构也非常灵活,能够根据业务场景和数据结构进行调整.还 ...