`
maosheng
  • 浏览: 551150 次
  • 性别: 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 服务器

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

    H3C_NTP时钟同步基础配置案例

    H3C_NTP时钟同步基础配置案例,原创文档。 适用于H3CV7版本的网络设备,包括交换机、路由器等。 搭建环境为HCL3.0.1,适用于刚入门的网络工程师学习参考。

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

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

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

    同时也可以获取内网用户访问Internet的详细访问记录,这种记录可以精确到秒,但前提是被监控的路由器或交换机等网络设备的时间,必须与监控日志所在服务器(可以是win,也可以是LINUX系统)的时间保持绝对同步。...

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

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

    cetos7离线安装时间同步ntp需要的rpm包

    ntp-4.2.6p5-29.el7.centos.2.x86_64.rpm ntpdate-4.2.6p5-29.el7.centos.2.x86_64.rpm openssl-1.0.2k-19.el7.x86_64.rpm openssl-libs-1.0.2k-19.el7.x86_64.rpm 一键安装命令: rpm -ivh *.rpm --force --nodeps

    NTP服务器配置自动脚本(chrony)

    NTP服务器配置自动脚本(chrony)

    XEN 虚拟化在linux平台下搭建

    在linux平台下搭建xen虚拟化环境,用gfs存储服务,使用ntp时间同步协议,实现负载匀衡

    SUSE Linux实现局域网时间同步

     简单的说是选择几部主要主机 (Primary server) 调校时间,让这些 Primary Servers 的时间同步之后,再开放网络服务来让 Client 端联机,后使Client 端调整自己的时间。NTP(Network Time Protocol)是实现这个...

    Linux运维从入门到高级全套案例v3.rar

    3.1.1构建NTP时间服务器 3.1.2构建DHCP服务器 3.1.3搭建 Samba服务器 3.1.4搭建NFS服务器 3.1.5搭建FTP服务器 3.1.6构建 Apache WER服务器 3.1.7构建 MySQL服务器 3.1.8LAMP架构网站搭建 3.1.9 Cact i监控平台搭建 ...

    ntp离线安装包

    应用于linux离线安装ntp,集群中用于搭建集群同步时间等,需要的可以下载

    CentOS 7下配置ntp服务的方法教程

    对于校园网/企业用户,如果您网内所有计算机都通过互联网同步时间,在速度和精度上都有一定的折扣,并且对互联网出口带宽也有一定的影响,对于这类用户,我们建议通过自己搭建ntp服务为内部用户提供时间同步服务。...

    Linux运维从入门到高级全套案例v3

    3.1. 1 构建NTP时间服务器 25 3.1. 2 构建DHCP服务器 27 3.1. 3 搭建Samba服务器 29 3.1. 4 搭建NFS服务器 32 3.1. 5 搭建FTP服务器 33 3.1. 6 构建Apache WEB服务器 35 3.1. 7 构建MySQL服务器 38 3.1. 8 LAMP架构...

    大数据学习计划.pdf

    1、通过对 Linux 操作系统体系结构、 服务管理、包管理、NTP 协议时间 服务器、关系型数据库理论和 MySQL 数据库等相关知识的学习, 掌握⼤部分安装部署 Hadoop 集群操作系统层⾯的技能,为后续搭建 Hdoop 集群、对...

Global site tag (gtag.js) - Google Analytics