`
maosheng
  • 浏览: 560247 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Linux 搭建 NTP 时间同步服务

NTP 
阅读更多
1、NTP简介:

NTP(Network Time Protocol)是用来使计算机时间同步化的一种协议,网络时间同步协议(NTP)是时间同步的技术基础。它可以使计算机对其服务器或时钟源做同步化,它可以提供高精准度的时间校正。

下面讲解如何在 Liunx上配置NTP服务器和NTP客户端,可使多台客户机的时间与指定的NTP服务器的时间保持一致。从而保证了多台服务器的时间同步。

2、配置环境:

本例共用5台服务器做测试,1台做为NTP服务器,4台作为NTP的客户端。4台客户端的时间与NTP服务的时间保持同步。

   NTP服务器的地址:192.101.11.156
   客户端1的地址:  192.101.11.157
   客户端2的地址:  192.101.11.158
   客户端3的地址:  192.101.1.20
   客户端4的地址:  192.101.1.21

3、NTP服务器配置(192.101.11.156):

ntp: NTP服务器的主要软件

如果不确定是否安装了ntp软件包可以用命令查询一下:

#rpm –qa|grep ntp

如果没有安装,可以用命令

#yum install -y ntp

配置文件在 /etc 目录下,打开ntp.conf文件。

#vim /etc/ntp.conf

1)允许内网其他机器同步时间网络设置

# Hosts on local network are less restricted.
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap 

配置是否为其他主机提供时间服务,限定了哪些主机可以从本NTP服务器同步时间,添加如下:

# 允许内网其他机器同步时间配置
#允许192.101.11.1--192.101.11.254网段的所有主机使用该时间服务器进行时间同步
restrict 192.101.11.0  mask 255.255.255.0 nomodify notrap
#允许192.101.1.1--192.101.1.254网段的所有主机使用该时间服务器进行时间同步
restrict 192.101.1.0  mask 255.255.255.0 nomodify notrap


===restrict选项格式===
restrict [ 客户端IP ]  mask  [ IP掩码 ]  [参数]

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

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

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

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

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

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

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

◆ kod: 向不安全的访问者发送Kiss-Of-Death报文。


2)设定NTP服务器时间源

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#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     # local clock
fudge   127.127.1.0  stratum 10

注释默认的server服务器,添加如下指定本机作为时间服务器

server  127.127.1.0     # 以本机作为时间服务器
fudge   127.127.1.0 stratum 10  #设置服务器层级

默认情况下ntp是从外网时间服务器来更新时间的,在集群中使用只要保证集群中所有的服务器时间一致即可,所以先配置其中一台服务器为时间服务器,其他服务器相对来说为这台时间服务器的客户端,从时间服务器上获取时间数据,从而避免联网,可用性更高。


===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。


===国内常用NTP服务器地址及IP===
ntp.sjtu.edu.cn 202.120.2.101 (上海交通大学网络中心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 北京大学

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

NTF服务器的配置到这里已经结束了。保存并退出后,启动NTP服务,没有错误的话,NTP服务器就可以正常工作了。

3)NTP服务器启动配置

配置开机时自动运行时间服务的命令:
#systemctl enable ntpd

启动时间服务的命令:
#systemctl start ntpd  && systemctl status ntpd


执行:ps -ef | grep ntpd 可以看到ntp进程也已经启动

执行:netstat -an | grep 123 可以看到ntp服务的123端口已经使用


===注意防火墙屏蔽ntp端口===
ntp服务器默认端口是123,如果防火墙是开启状态,在一些操作可能会出现错误,所以要记住关闭防火墙或者配置一下防火墙。

#vim /etc/sysconfig/iptables

打开防火墙配置文件。加入如下配置项:

#open port for NTP server
-A  INPUT -m state --state NEW -m udp -p udp --dport 123 -j ACCEPT

重启防火墙服务器 

#service iptables restart

NTP服务启动后大约需要3~5分钟的时间才会进行一次时间同步。如果需要立刻从指定的时间服务器同步时间,可以使用ntpdate 命令。使用ntpdate 命令时,需要先关闭ntp服务:
systemctl stop ntpd      # 先停止服务,否则ntp socket会被占用
ntpdate 192.101.11.156  # 手动执行同步
systemctl start ntpd     # 继续启动服务

即可立即完成时间的同步。

===同步硬件时钟===

Linux操作系统当中其实有两个时间,分别是:

软件时钟:Linux自己的系统时间,由1970/01/01开始记录的时间参数
硬件时钟:计算机系统在BIOS记录的实际时间,这也是硬件所记录的

在软件时钟方面,我们可以透过date这个指令来进行手动修改,但如果要修改BIOS记录的时间,就得要使用hwclock这个指令来写入才行:hwclock -w

ntp服务,默认只会同步系统软件时钟。

如果想要让ntp同时同步硬件时间,可以设置/etc/sysconfig/ntpd文件

# vi /etc/sysconfig/ntpd

SYNC_HWCLOCK=yes

# 改成 yes ,这样主机 BIOS 的时间也会跟着一起改变的,就可以让硬件时间与系统时间一起同步。

允许BIOS与系统时间立即同步,通过 hwclock -w 命令。

当我们进行完Linux时间的校时后,还需要以hwclock来更新BIOS的时间,因为每次重新启动的时候,系统会重新由BIOS将时间读出来,所以BIOS才是重要的时间依据。

hwclock -r ##读取硬件时钟时间

4、NTP客户端配置(192.101.11.157,192.101.11.158,192.101.1.20,192.101.1.21 )

ntp,ntpdate: NTP客户端的主要软件

如果不确定是否安装了ntp,ntpdate软件包可以用命令查询一下:

#rpm –qa|grep ntp
#rpm –qa|grep ntpdate

如果没有安装,可以用命令

#yum install -y ntp,ntpdate

手动执行同步:
ntpdate 192.101.11.156 (NTP服务端主机IP)

注意:手动执行同步,先停止服务,否则ntp socket会被占用
systemctl stop ntpd

配置文件在 /etc 目录下,打开ntp.conf文件。

1) 指定NTP服务器

#vim /etc/ntp.conf

客户端的配置比服务器的配置要简单一下,只需加入 server 192.101.11.156 即可,表明本机的时间服务器是192.101.11.156,即从192.101.11.156上同步时间。
NTP客户端在server部分添加如下语句,将server指向主节点:
server 192.101.11.156

同时修改一下 /etc/sysconfig/ntpdate 文件

# vi /etc/sysconfig/ntpdate

SYNC_HWCLOCK=yes

# 把 no 改成 yes ,这样主机 BIOS 的时间也会跟着一起改变的。

2) 客户端启动配置

配置开机时自动运行时间服务的命令:
#systemctl enable ntpd

启动时间服务的命令:
#systemctl start ntpd  && systemctl status ntpd

5、检查查看

查看ntp服务器有无和上层ntp连通
【命令】ntpstat
# ntpstat
synchronised to NTP server (192.101.11.156) at stratum 12
   time correct to within 44 ms
   polling server every 1024 s

查看ntp服务器与上层ntp的状态
【命令】ntpq -p
# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*hadoop004       LOCAL(0)        11 u  866 1024  377    0.177   -0.031   0.061

remote:本机和上层ntp的ip或主机名,“+”表示优先,“*”表示次优先

refid:参考上一层ntp主机地址

st:stratum阶层

when:多少秒前曾经同步过时间

poll:下次更新在多少秒后

reach:已经向上层ntp服务器要求更新的次数

delay:网络延迟

offset:时间补偿

jitter:系统时间与bios时间差


===查看网关方法===
【命令1】route -n 

【命令2】ip route show 

【命令3】netstat -r





6、配置文件:

1)NTP服务器配置文件: /etc/ntp.conf

driftfile /var/lib/ntp/drift

restrict 127.0.0.1
restrict ::1

# 允许内网其他机器同步时间设置
restrict 192.101.11.0  mask 255.255.255.0 nomodify notrap
restrict 192.101.1.0  mask 255.255.255.0 nomodify notrap


# 外部时间服务器不可用,以本地时间作为时间服务
server  127.127.1.0     # local clock
fudge   127.127.1.0  stratum 10

includefile /etc/ntp/crypto/pw

keys /etc/ntp/keys

disable monitor


2)NTP客户端配置文件: /etc/ntp.conf


driftfile /var/lib/ntp/drift

restrict default nomodify notrap nopeer noquery

restrict 127.0.0.1
restrict ::1

# 配置时间服务器为本地的时间服务器
server 192.101.11.156

includefile /etc/ntp/crypto/pw

keys /etc/ntp/keys

disable monitor


7、Linux修改时间

服务器时间与网络时间不符:

1)查看时间和日期
命令 : date

2)设置时间和日期
例如:将系统日期设定成2009年11月3日的命令

命令 : date -s 11/03/2009

将系统时间设定成下午5点55分55秒的命令

命令 : date -s 17:55:55

3.)将当前时间和日期写入BIOS,避免重启后失效
命令 : hwclock -w  或 clock -w

系统时间和CMOS时间的关系。系统时间是由linux操作系统来维护的;CMOS时间是CMOS芯片保存的时间。系统启动时,操作系统将从CMOS读出时间记录为系统时间,同时操作系统也会自动每隔一段时间将系统时间写入CMOS中。如果使用date命令修改系统时间后马上重启电脑,操作系统还没有将系统时间同步到CMOS,这样开机后就还是没有修改前的时间了,所以为了保险起见,最还还是手动使用命令 clock 将系统时间同步到CMOS中。

在系统启动时,Linux系统将时间从CMOS中读到系统时间变量中,以后修改时间通过修改系统时间实现。为了保持系统时间与CMOS时间的一致性, Linux每隔一段时间会将系统时间写入CMOS。由于该同步是每隔一段时间(大概是几分钟)进行的,在执行date -s后,如果马上重启机器,修改时间就有可能没有被写入CMOS,这就是问题的原因。

===ntpd、ntpdate的区别===

下面是网上关于ntpd与ntpdate区别的相关资料。如下所示所示:

使用之前得弄清楚一个问题,ntpd与ntpdate在更新时间时有什么区别。

ntpd不仅仅是时间同步服务器,它还可以做客户端与标准时间服务器进行同步时间,而且是平滑同步,

并非ntpdate立即同步,在生产环境中慎用ntpdate,也正如此两者不可同时运行。

时钟的跃变,对于某些程序会导致很严重的问题。

许多应用程序依赖连续的时钟——毕竟,这是一项常见的假定,即,取得的时间是线性的,

一些操作,例如数据库事务,通常会地依赖这样的事实:时间不会往回跳跃。

不幸的是,ntpdate调整时间的方式就是我们所说的”跃变“:在获得一个时间之后,ntpdate使用settimeofday(2)设置系统时间,

这有几个非常明显的问题:

【一】这样做不安全。

ntpdate的设置依赖于ntp服务器的安全性,攻击者可以利用一些软件设计上的缺陷,拿下ntp服务器并令与其同步的服务器执行某些消耗性的任务。

由于ntpdate采用的方式是跳变,跟随它的服务器无法知道是否发生了异常(时间不一样的时候,唯一的办法是以服务器为准)。

【二】这样做不精确。

一旦ntp服务器宕机,跟随它的服务器也就会无法同步时间。

与此不同,ntpd不仅能够校准计算机的时间,而且能够校准计算机的时钟。

【三】这样做不够优雅。

由于是跳变,而不是使时间变快或变慢,依赖时序的程序会出错

(例如,如果ntpdate发现你的时间快了,则可能会经历两个相同的时刻,对某些应用而言,这是致命的)。

因而,唯一一个可以令时间发生跳变的点,是计算机刚刚启动,但还没有启动很多服务的那个时候。

其余的时候,理想的做法是使用ntpd来校准时钟,而不是调整计算机时钟上的时间。

NTPD在和时间服务器的同步过程中,会把BIOS计时器的振荡频率偏差——或者说Local Clock的自然漂移(drift)——记录下来。

这样即使网络有问题,本机仍然能维持一个相当精确的走时。










  • 大小: 4.3 KB
分享到:
评论

相关推荐

    linux配置ntp时间同步.txt

    NTP服务器将本地系统的时钟与一个公共的NTP服务器同步然后作为时间主机提供服务,使本地网络的所有客户端能同步时钟。 同步时钟最大的好处就是相关系统上日志文件中的数据,如果网络中使用中央日志主机集中管理日志...

    Linux离线安装NTP服务,内网环境下配置本地时间同步

    Linux离线安装NTP服务,内网环境下配置本地时间同步 多台服务器安装 1、常用命令 rpm -qa | grep ntp #查询已安装的ntp版本信息等 rpm -e --nodeps ntp-4.2.6p5-29.el7.centos.2.x86_64 #卸载 systemctl status ...

    linux 搭建内网NTP服务器

    下面将详细介绍如何在Linux内网环境中搭建NTP服务器。 首先,我们需要了解NTP的工作原理。NTP通过与互联网上的公共NTP服务器或其他已知准确的时间源进行通信,来校准本地系统时钟。它利用UDP协议在端口123上进行...

    ESXi时间同步测试,与Windows搭建的NTPserver无法同步的原因[整理].pdf

    本文主要讨论了ESXi时间同步测试中遇到的问题,即ESXi无法与Windows搭建的NTP服务器同步,而可以与Linux搭建的NTP服务器同步。为查找问题根源,搭建了测试环境,进行抓包分析,研究其中发生的过程。 首先,我们需要...

    Linux下配置NTP架设本地的时间服务器

    Linux系统提供了多种时间同步协议,其中Network Time Protocol(NTP)是最常用的协议之一。本文将详细介绍如何在Linux系统下配置NTP架设本地的时间服务器。 一、NTP协议简介 NTP是一个基于UDP协议的网络时间同步...

    Suselinux11NTP服务器端搭建设置宣贯.pdf

    Suselinux11 NTP服务器端搭建设置宣贯 1. 查看系统时钟 在 Linux 系统中,查看系统时钟可以使用 `date` 命令。该命令将显示当前系统的日期和时间信息。系统时钟是 Linux 内核时钟,用于记录系统的当前时间。 2. ...

    linux服务器ntp配置方法

    本文将详细介绍 Linux 服务器 NTP 配置方法,包括搭建时间同步服务器、配置时间同步客户机和服务端验证。 一、搭建时间同步服务器 1. 安装 NTP 服务器 使用 RPM 包管理器安装 NTP 服务器,可以使用以下命令: `...

    linux下ntp时间服务器的搭建与配置.docx

    Linux下的NTP时间服务器搭建与配置是确保网络设备时间一致性的关键步骤,这对于系统的日志记录、监控...通过以上步骤,你可以成功地在Linux系统上搭建和配置一个NTP时间服务器,为你的网络环境提供可靠的时间同步服务。

    LINUX NTP服务器搭建和客户端配置

    综上所述,搭建NTP服务器和配置客户端是网络管理中的基本操作,它对于确保网络设备之间的时间同步、维护日志的准确性以及进行安全监控分析等都具有非常重要的作用。通过以上步骤,可以确保网络中的所有设备都能有一...

    linux 构建ntp 服务器

    NTP (server,client) 向上同步时间信息,向下提供时间同步信息 NTP Client ( windwos、linux)向上同步时间信息 Windows Linux 客户端同步时间方法 ntp服务器监听udp端口 123 安装程序 yum install ntp ntpdate -...

    局域网搭建NTP时间服务器及配置借鉴.pdf

    【搭建NTP时间服务器】 为了解决这些问题,可以在局域网内建立时间服务器,确保所有设备都能与之同步。主要有两种方案: 1. 使用第三方专业NTP软件,例如Windows平台上的NTP。 2. 利用Linux系统搭建NTP服务器。 ...

    Suselinux11NTP服务器端搭建设置.pdf

    NTP 服务日志可以用于观察时间是否在同步。 八、使用 crontab 设置时钟同步 NTP 任务计划 crontab 是 Linux 操作系统中的一个任务计划工具,可以用于设置时钟同步 NTP 任务计划。可以使用 crontab -e 命令来编辑 ...

    Linux/windows 服务端/客户端 ntp一键设置脚本

    一键设置ntp服务器和客户端,在红帽Linux和win2008R2实测。使用前请先打开脚本看清楚说明。

    局域网搭建NTP时间服务器及配置参考.pdf

    "局域网搭建NTP时间服务器及配置参考" 一、局域网中时间不同步造成的问题 作为网络管理员,需要保证网络设备的稳定运行,及时处理网络中随时出现的故障。如果无法实现时间同步,就会增加处理故障的难度。例如: *...

    Linux下NTP 的配置方式

    为了确保时间同步成功,可以使用`ntpq -p`命令查看时间服务器的状态。 Linux系统中的时间管理分为系统时钟(Kernel中的时钟)和硬件时钟(RTC,Real Time Clock)。系统时钟在启动时会从硬件时钟读取时间,然后独立...

    详解linux ntp服务器时间同步设置

    ### Linux NTP服务器时间同步设置详解 #### 一、引言 在许多场景下,确保服务器之间的时间同步是非常重要的,特别是在分布式系统或集群环境中。例如,安装Cloudera Manager (CM) 或 Cloudera Distribution ...

    Centos7-NTP时钟同步服务配置.docx

    redhat/centos 7 搭建NTP服务器,yum安装 ntp服务,并对外提供时间服务的详细说明

Global site tag (gtag.js) - Google Analytics