文章目录

  • 基本概念
  • 为什么要用NTP
  • NTP的层次结构
  • NTP如何工作
  • NTP的工作模式:
  • 安装配置NTP
    • 下载安装
    • 服务器网络环境
    • 配置server端
    • 配置client端
  • 启动NTP
  • 查看NTP 运行状态
  • 设置开机启动
  • NTP配置文件(ntp.config)的一些说明
    • 关于同步权限,使用方式说明如下
    • ntpd、ntpdate的区别

基本概念

网络时间协议(NTP)用来同步网络上不同主机的系统时钟。所有受管理的主机可以与一台名为NTP服务器的指定时间服务器同步时间。另一方面,NTP服务器则与任何公共NTP服务器或者你所选择的任何服务器同步自己的时间。所有NTP管理的设备其系统时间同步时可以精确到毫秒级。

为什么要用NTP

由于制造方面的差异,所有(非原子)时钟并不完全以一样的速度运行。有些时钟往往走得快点,而有些时钟走得慢点。所以经过一段很长的时间后,一个时钟的时间与另一个时钟逐渐发生偏差,导致所谓的“时钟漂移”或“时间漂移”。为了尽量减小时钟漂移影响,使用NTP的主机应该定期与指定的NTP服务器进行联系,保持时钟同步。
不同主机之间的时间同步对计划备份、入侵检测日志、分布式任务调度或事务簿记之类的事务而言很重要,甚至可能是监管合规所需要的一个要求。

NTP的层次结构

NTP时钟以分层层次结构来加以组织。该层次结构中的每一层被称为层(stratum)。层这个概念描述了某机器距离权威时间源有多少个NTP跳。

Stratum 0含有几乎没有时间漂移的时钟,比如原子钟。这些时钟无法通过网络直接使用。Stratum N(N 》 1)服务器对照Stratum N-1服务器同步其时间。Stratum N时钟可以通过网络彼此连接。
NTP最多可支持层次结构中的15层。Stratum 16被认为不同步、无法使用。

NTP如何工作

NTP提供准确时间,首先要有准确的时间来源,这一时间应该是国际标准时间UTC。 NTP获得UTC的时间来源可以是原子钟、天文台、卫星,也可以从Internet上获取。这样就有了准确而可靠的时间源。时间按NTP服务器的等级传播。按照离外部UTC 源的远近将所有服务器归入不同的Stratun(层)中。Stratum-1在顶层,有外部UTC接入,而Stratum-2则从Stratum-1获取时间,Stratum-3从Stratum-2获取时间,以此类推,但Stratum层的总数限制在15以内。所有这些服务器在逻辑上形成阶梯式的架构相互连接,而Stratum-1的时间服务器是整个系统的基础。
计算机主机一般同多个时间服务器连接, 利用统计学的算法过滤来自不同服务器的时间,以选择最佳的路径和来源来校正主机时间。即使主机在长时间无法与某一时间服务器相联系的情况下,NTP服务依然有效运转。
为防止对时间服务器的恶意破坏,NTP使用了识别(Authentication)机制,检查来对时的信息是否是真正来自所宣称的服务器并检查资料的返回路径,以提供对抗干扰的保护机制。
在基本条件下,NTP客户端发出时间请求,与时间服务器交换时间,这个交换的结果是,客户端能计算出时间的延迟,它的弥补值,并调整与服务器时间同步。通常情况下,在设置的初始,在5至10分钟有内6次交换。 一旦同步后,每10分钟与服务器时间进行一次同步,通常要求单一信息交换。冗余服务器和不同的网络路径用于保证可靠性的精确度,除了客户端/服务器商的同步以外,NTP还支持同等计算机的广播同步。NTP在设计上是高度容错和可升级。时间按NTP服务器的等级传播。

NTP的工作模式:

主/被动对称模式(broadcast/multicast):一对一的连接,双方均可同步对方或被对方同步,先发出申请建立连接的一方工作在主动模式下,另一方工作在被动模式下。此方式适用于配置冗余的时间服务器,可以提供更高的精确度给主机。
客户/服务器模式(client/server):与主/被动模式基本相同。唯一区别在于,客户方可被服务器同步,但服务器不能被客户同步。
广播模式:一对多的连接,服务器不论客户工作在何种模式下,主动发出时间信息,客户由此信息调整自己的时间,此时网络延时d2忽略,因此在准度上有损失,但可满足秒级应用。广播模式而且配置非常的简单。但是此方式的精确度并不高,对时间精确度要求不是很高的情况下可以采用。
上述三种方式,时间信息的传输都使用UDP协议。每一个时间包内包含最近一次的事件的时间信息、包括上次事件的发送与接收时间、传递现在事件的当地时间、及此包的接收时间。在收到上述包后即可计算出时间的偏差量与传递资料的时间延迟。时间服务器利用一个过滤演算法,及先前八个校时资料计算出时间参考值,判断后续校时包的精确性,一个相对较高的离散程度,表示一个对时资料的可信度比较低。仅从一个时间服务器获得校时信息,不能校正通讯过程所造成的时间偏差,而同时与许多时间服务器通信校时,就可利用过滤算法找出相对较可靠的时间来源,然后采用它的时间来校时。

安装配置NTP

下载安装

#centos 已经默认已经安装了NTP,Ubuntu等系统可用如下命令安装。
wget http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-4.2.8p12.tar.gz
tar -xzvf ntp-4.2.8p12.tar.gz
cd ntp-4.2.8p12
./configure
make
make install

安装完成后会在/etc下添加ntp.conf配置文件,默认启动使用该文件

服务器网络环境

使用场景:局域网
server :192.168.1.102
client :192.168.1.103
身份认证 :启用

配置server端

运行命令 vim /etc/ntp.conf 打开配置文件

# For more information about this file, see the man pages
# ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).driftfile /var/lib/ntp/drift#default表示 地址0.0.0.0,掩码0.0.0.0 意为任意IP
#不允许所有IP操作 -6表示ipv6
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery#这是允许本机查询
restrict 127.0.0.1
restrict -6 ::1 # 6指ipv6#在192.168.1.0/24网段内的服务器就可以通过这台NTP Server进行时间同步了
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap# Use public servers from the pool.ntp.org project.
# 公共的NTP服务地址,因为该服务仅在内网使用,且该主机为服务器,所以配置本机地址
server  127.127.1.0
#NTP使用伪IP地址127.127.8.n 访问安装在本地计算机上的Meinberg无线电时钟。为了访问自己的系统时钟,也称为本地时钟,NTP使用伪IP地址127.127.1.0。此IP地址不得与127.0.0.1混淆,后者是本地主机的IP ,即计算机的环回接口。
#stratum 层次  根据上层server的层次而设定 作为局域网的time service provider,通常将stratum设置为10
fudge   127.127.1.0 stratum 10
# Enable public key cryptography.
#crypto
includefile /etc/ntp/crypto/pw
# Key file containing the keys and key identifiers used when operating
# with symmetric key cryptography.
# 定义1~65535个key 客户端的需要与服务器端的内容一致
keys /etc/ntp/keys
# Specify the key identifiers which are trusted.
# 指定/etc/ntp/keys文件种信任的key,只有指定的key才可以与服务器同步
trustedkey 1 2
#由于身份验证涉及额外计算,因此关键字authdelay指定此时间量
authdelay 0.000094
# Specify the key identifier to use with the ntpdc utility.
#requestkey 8
# Specify the key identifier to use with the ntpq utility.
#controlkey 8
# Enable writing of statistics records.
#statistics clockstats cryptostats loopstats peerstats

运行命令 vim /etc/ntp.conf 打开密钥文件,添加密钥

# PLEASE DO NOT USE THE DEFAULT VALUES HERE.
1   M   1111111
2   M   5555555

配置client端

运行命令 vim /etc/ntp.conf 打开配置文件

# For more information about this file, see the man pages
# ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).driftfile /var/lib/ntp/drift
# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery# Permit all access over the loopback interface.  This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict 127.0.0.1
restrict -6 ::1# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
# 指定服务器地址 和key
server 192.168.1.102 key 1# Enable public key cryptography.
#crypto
includefile /etc/ntp/crypto/pw# Key file containing the keys and key identifiers used when operating
# with symmetric key cryptography.
keys /etc/ntp/keys

运行命令 vim /etc/ntp/keys 打开密钥文件,添加密钥

# PLEASE DO NOT USE THE DEFAULT VALUES HERE.
1   M   1111111
2   M   5555555

运行命令 vim /etc/sysconfig/ntpd 打开系统配置文件,配置硬件同步

# Drop root to id 'ntp:ntp' by default.
OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid -g"
#允许硬件系统时间同步
SYNC_HWCLOCK=yes

启动NTP

运行命令service ntpd start 分别启动服务端和客户端的服务,启动后的5分钟内会进行初始化等操作,在5分钟后开始同步时间,同时需要注意的是客户端和服务端时间相差1000s时,客户端的NTP会停止,需要手动调节系统时间。
也可运行ntpd -d命令DEBUG模式启动

查看NTP 运行状态

运行 watch ntpq -p 命令 可实时查看ntp的运行情况,执行指令后出现如下界面

指令“ntpq -p”可以列出目前我们的NTP与相关的上层NTP的状态,以上的几个字段的意义如下:
remote:即NTP主机的IP或主机名称。注意最左边的符号,如果由“+”则代表目前正在作用钟的上层NTP,如果是“*”则表示也有连上线,不过是作为次要联机的NTP主机。
refid:参考的上一层NTP主机的地址
st:即stratum阶层
when:几秒前曾做过时间同步更新的操作
poll:下次更新在几秒之后
reach:已经向上层NTP服务器要求更新的次数
delay:网络传输过程钟延迟的时间
offset:时间补偿的结果
jitter:Linux系统时间与BIOS硬件时间的差异时间

设置开机启动

以centos为例,检查ntp服务是否开机启动,将其设置为开机启动。

[root@localhost ~]# chkconfig --list ntpd
ntpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@localhost ~]# runlevel
N 3
[root@localhost ~]# chkconfig ntpd on #在运行级别2、3、4、5上设置为自动运行
[root@localhost ~]# chkconfig --list ntpd
ntpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@localhost ~]#
如果要设置在运行级别上自动运行,可以使用下面命令
chkconfig --level 345 ntpd on

NTP配置文件(ntp.config)的一些说明

关于同步权限,使用方式说明如下

restrict address [mask mask] [ippeerlimit int] [flag ...]
address IP地址
mask 子网掩码
ippeerlimit 将每个IP的对等请求数量限制为int,其中值为-1意味着“无限”,默认值-1,0的值表示“没有”。通常每个IP最多有1个对等请求,但是如果远程对等请求位于代理之后,那么每个IP很可能超过1个
flag 限制限制策略,没有flag表示给予对服务器的自由访问,这些标志通常可以分为两类,一类是限制时间服务的标志,另一类是限制信息查询和尝试对服务器进行运行时重新配置的标志。可以指定下列标志中的一个或多个

flag参数
ignore
拒绝所有类型的包,包括NTPQ(1)和NTPDC(1)查询。
kod
如果在发生访问违规时设置此标志,则发送KISS O’-死亡(KOD)分组。KOD数据包的速率被限制为不超过每秒一个。如果另一个KOD包发生在最后一个之后的1秒内,则丢弃该分组。
limited
如果包间隔违反了丢弃命令中指定的下限,则拒绝服务。使用NTPD(1)的监视能力来保持客户端的历史。因此,只要有限制标志的限制条目,监视总是有效的。
lowpriotrap
声明匹配主机设置的陷阱为低优先级。服务器可以保持的陷阱数量有限(当前限制为3)。陷阱通常是在先到先服务的基础上分配的,后来的陷阱请求者被拒绝服务。此标志通过允许低优先级陷阱被稍后对正常优先级陷阱的请求覆盖来修改分配算法。
noepeer
否认短暂的同侪请求,即使他们来自一个经过验证的来源。注意,使用对称密钥进行身份验证的能力可以通过ntpkey文件的第三字段限制到一个或多个IPS或子网。默认情况下,不启用此限制,以保持向后兼容性。
nomodify
拒绝尝试修改服务器状态的ntpq(1)和ntpdc(1)查询(即运行时重新配置)。返回信息的查询被提交。
noquery
拒绝ntpq(1)和ntpdc(1)查询。时间服务不受影响。
nopeer
拒绝未经验证的数据包,这将导致新的关联。这包括当不存在配置的关联时,广播和对称活动分组。它还包括池关联,因此,如果您想使用池指令中的服务器,并且默认使用nopeer,则需要一个限制源…行也不包括nopeer指令。
noserve
拒绝ntpq(1)和ntpdc(1)查询以外的所有数据包。
notrap
拒绝为匹配主机提供模式6控制消息陷阱服务。陷阱服务是NTPQ(1)控制消息协议的子系统,它被远程事件日志记录程序所使用。
notrust
拒绝服务,除非数据包被加密验证。
ntpport
这实际上是匹配算法修饰符,而不是限制标志。它的存在使得限制条目只有在数据包中的源端口是标准的NTP UDP端口(123)时才匹配。可以指定ntpport和non-ntpport。ntpport被认为是更具体的,然后在列表中进行排序。
version
拒绝与当前NTP版本不匹配的数据包。

ntpd、ntpdate的区别

使用之前得弄清楚一个问题,ntpd与ntpdate在更新时间时有什么区别。ntpd不仅仅是时间同步服务器,他还可以做客户端与标准时间服务器进行同步时间,而且是平滑同步,并非ntpdate立即同步,在生产环境中慎用ntpdate,也正如此两者不可同时运行。

时钟的跃变,对于某些程序会导致很严重的问题。许多应用程序依赖连续的时钟——毕竟,这是一项常见的假定,即,取得的时间是线性的,一些操作,例如数据库事务,通常会地依赖这样的事实:时间不会往回跳跃。不幸的是,ntpdate调整时间的方式就是我们所说的”跃变“:在获得一个时间之后,ntpdate使用settimeofday(2)设置系统时间,这有几个非常明显的问题:

第一,这样做不安全。ntpdate的设置依赖于ntp服务器的安全性,攻击者可以利用一些软件设计上的缺陷,拿下ntp服务器并令与其同步的服务器执行某些消耗性的任务。由于ntpdate采用的方式是跳变,跟随它的服务器无法知道是否发生了异常(时间不一样的时候,唯一的办法是以服务器为准)。

第二,这样做不精确。一旦ntp服务器宕机,跟随它的服务器也就会无法同步时间。与此不同,ntpd不仅能够校准计算机的时间,而且能够校准计算机的时钟。

第三,这样做不够优雅。由于是跳变,而不是使时间变快或变慢,依赖时序的程序会出错(例如,如果ntpdate发现你的时间快了,则可能会经历两个相同的时刻,对某些应用而言,这是致命的)。

因而,唯一一个可以令时间发生跳变的点,是计算机刚刚启动,但还没有启动很多服务的那个时候。其余的时候,理想的做法是使用ntpd来校准时钟,而不是调整计算机时钟上的时间。

NTPD 在和时间服务器的同步过程中,会把 BIOS 计时器的振荡频率偏差——或者说 Local Clock 的自然漂移(drift)——记录下来。这样即使网络有问题,本机仍然能维持一个相当精确的走时。

搭建NTP服务器 开启身份验证相关推荐

  1. iis搭建ftp服务器及身份验证设置

    在win7下搭建ftp服务器: 搭建FTP安装步骤: 1.安装FTP服务器: 1)点击[开始]-[控制面板]-[程序]-[程序和功能]-[打开或关闭windows功能] 图一:安装FTP服务器(1) ...

  2. hMailServer开启身份验证,防止垃圾邮件骚扰

    Hello,I'm Shendi 搭了邮箱服务器有一段时间了,也上线了 当我偶然去查看日志的时候,发现我的邮箱服务器已经被垃圾邮件所轰炸,每秒处理几百封邮件,而且很多都发送成功了,最主要的是,垃圾邮件 ...

  3. CentOS7搭建NTP服务器

    搭建ntp服务器 查看服务器.客户端操作系统版本 2查看服务器是否安装ntp 3如果没有安装 4安装完成后重新查看服务器是否安装ntp 5查看ntp服务器状态 6修改配置文件 注释 #server 0 ...

  4. linux输入influxdb密码,influxdb开启身份验证

    influxdb在刚安装好之后,默认情况下,禁用身份验证,静默忽略所有凭据,并且所有用户都具有所有权限.这样是极不安全的. 我们这里测试通过用户名和密码身份验证方式来提高安全性,但是请注意:在实际生产 ...

  5. 虚拟化--051 vsphere linux搭建NTP服务器搭建

    051 vsphere linux搭建NTP服务器搭建 参考链接 http://url.cn/g96DNG 转载于:https://blog.51cto.com/williamliuwen/16865 ...

  6. win7制作ntp服务器,win7系统搭建ntp服务器的操作方法

    很多小伙伴都遇到过对 1.关闭windows系统自带的防火墙,否则NTP时间将无法正常同步. 2.单击"开始",选择"运行",输入regedit后确定,找到下面 ...

  7. Linux服务器搭建--NTP服务器的搭建与配置

    起因 公司内网里有多台服务器,由于是局域网下,所以时间无法与Internet进行时间同步,故想通过搭建NTP服务器,NTP服务器与Internet进行时间同步,而局域网中的其他服务器与该NTP服务器进 ...

  8. win7制作ntp服务器,win7系统搭建ntp服务器的处理步骤

    随着电脑的使用率越来越高,我们有时候可能会遇到对win7系统搭建ntp服务器进行设置,如果我们需要对win7系统搭建ntp服务器进行设置时,要怎么处理呢? 接下来给大家带来win7系统搭建ntp服务器 ...

  9. win7远程服务器发生身份验证错误,要求的函数不受支持

    远程服务器发生身份验证错误,要求的函数不受支持,远程登录服务器以前都是正常的,今天登录远程桌面就一直是这样的错误.记录一下解决方法. 方法一:卸载补丁KB4103718 1.打开控制面板,找到&quo ...

最新文章

  1. C# CreateParams的使用(解决闪屏问题)
  2. 考前自学系列·计算机组成原理·IEEE 754 单精度浮点数和真值之间的转化
  3. 详解Linux 五种IO模型
  4. 100offer接入云信专线电话,实现HR与候选人双向电话沟通
  5. Android之解决TabLayout里面每个Tab项的间距和修改指示线的长度(非反射)和修改选中字体大小
  6. 20145228 《信息安全系统设计基础》第0周学习总结
  7. 信息学奥赛一本通C++语言——1021: 打印字符
  8. Flask框架 - 初识
  9. 人脸识别 Face Recognition安装使用
  10. codeforces 679B
  11. android iso系统下载 百度云,Windows 7 SP1官方原版ISO系统镜像所有版本下载集合
  12. 深入浅出PID控制算法(二)——PID算法离散化和增量式PID算法原理及Matlab实现
  13. 《微信小程序-进阶篇》Lin-ui组件库源码分析-Icon组件
  14. PDF密码强制解除——一键解除
  15. Java实现对png图片文件电子签名操作
  16. 计算机网络——CSMA/CD协议
  17. Python代码大全,海量代码任你下载
  18. 基于SpringBoot+VUE(PC端+小程序端)的智能在线考试系统毕业设计
  19. 计算机的管理员关机命令,电脑自动关机命令是什么?怎么用
  20. Linux下堆漏洞利用(off-by-one)

热门文章

  1. Windows下LATEX排版论文攻略—CTeX、JabRef使用心得, 包括 IEEEtran.bst
  2. 云e办学习笔记(四)SpringSecurity学习(二)
  3. linux怎么打出管道命令这个符号,linux 管道命令 竖线 ‘ | ’
  4. 如何入门网络爬虫,摸索一年的心里路程
  5. python爬取链家租房信息_Python爬取链家网上海市租房信息
  6. PHP独立ip统计,通过nginx日志统计独立ip的个数 新乡独立ip 独立ipvps 独立公网i
  7. NR系统概述-架构与演进
  8. Android View 获取焦点
  9. 自己开发iOS版按键精灵--TTouch
  10. mysql的ace什么概念_ACE(03):努力了,总会有收获