1. 安装NTP服务

ntp在线安装方式很简单,只需要执行以下命令即可帮你安装好NTP以及所依赖的包。

# apt-get install ntp

查看NTP服务是否启动

# service --status-all

或者

# ps -aux | grep ntp


2. NTP配置运行观察

2.1 NTP配置文件/etc/ntp.conf

ntp即是服务器,又是客户端,只需要通过配置即可。根据上面的说明,我们最终可以取得这样的配置文件内容。

# vim /etc/ntp.conf


// 配置文件内容
# /etc/ntp.conf,configuration for ntpd; see ntp.conf(5) for help

driftfile /var/lib/ntp/ntp.drift

# Enable this if you want statistics to be logged.
#statsdir /var/log/ntpstats/

statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable

# Specify one or more NTP servers.

# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board
# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for
# more information.
pool 0.ubuntu.pool.ntp.org iburst
pool 1.ubuntu.pool.ntp.org iburst
pool 2.ubuntu.pool.ntp.org iburst
pool 3.ubuntu.pool.ntp.org iburst

# Use Ubuntu's ntp server as a fallback.
pool ntp.ubuntu.com

# Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for
# details. The web page <http://support.ntp.org/bin/view/Support/AccessRestrictions>
# might also be helpful.
#
# Note that "restrict" applies to both servers and clients,so a configuration
# that might be intended to block requests from certain clients Could also end
# up blocking replies from your own upstream servers.

# By default,exchange time with everybody,but don't allow configuration.
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited

# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1

# Needed for adding pool entries
restrict source notrap nomodify noquery

# Clients from this (example!) subnet have unlimited access,but only if
# cryptographically authenticated.
#restrict 192.168.123.0 mask 255.255.255.0 notrust


# If you want to provide time to your local subnet,change the next line.
# (Again,the address is an example only.)
#broadcast 192.168.123.255

# If you want to listen to time broadcasts on your local subnet,de-comment the
# next lines. Please do this only if you trust everybody on the network!
#disable auth
#broadcastclient

#Changes recquired to use pps synchonisation as explained in documentation:
#http://www.ntp.org/ntpfaq/NTP-s-config-adv.htm#AEN3918

#server 127.127.8.1 mode 135 prefer # Meinberg GPS167 with PPS
#fudge 127.127.8.1 time1 0.0042 # relative to PPS for my hardware

#server 127.127.22.1 # ATOM(PPS)
#fudge 127.127.22.1 flag3 1 # enable PPS API

2.2 NTP配置文件项

  • 使用driftfile记录时间差异

设定方式:

driftfile [可以被ntpd写入的目录与档案]

因为预设的NTP Server本身的时间计算是依据BIOS的芯片震荡周期频率来计算的,但是这个数值与上层Time Server不见得一致。所以NTP daemon (ntpd) 会自动的去计自己主机的频率与上层Time server的频率,并且将两个频率的误差记录下来,记录下来的文件就是在driftfile后面接的完整文件名当中。关于文件名,你必须要知道:

driftfile 后面接的档案需要使用完整路径文件名;
该档案不能是连结档;
该档案需要设定成ntpd这个daemon可以写入的权限;
该档案所记录的数值单位为:百万分之一秒 (ppm);
driftfile后面接的文件会被ntpd自动更新,所以他的权限一定要能够让ntpd写入才行。

  • 使用statsdir和filegen开启统计分析

设定方式:

statsdir directory_path

filegen name file filename [type type] [link | nolink] [enable | disable]

当打开统计分析时,ntp会在directory_path目录下产生filegen中所设定的统计文件。

  • 使用restrict管理权限控制

设定方式:

restrict [address] mask [mask] [parameter]

其中parameter的参数主要有下面这些:ignore: 拒绝所有类型的NTP联机;nomodify: 客户端不能使用ntpc与ntpq这两个程序来修改服务器的时间参数,但客户端仍可透过这个主机来进行网络校时;noquery: 客户端不能使用ntpq,ntpc等指令来查询时间服务器,等于不提供NTP的网络校时;notrap: 不提供trap这个远程事件登录(remote event logging)的功能;notrust: 拒绝没有认证的客户端;

如果你没有在 parameter 的地方加上任何参数的话,这表示该IP或网段不受任何限制。

  • 使用server设定上层NTP服务器

设定方式:

server [address] [options...]

在server后面填写服务器地址(可以使IP或主机名),之后是命令参数主要包括autokey,brust,ibrust,key key,minpoll minpoll,maxpoll maxpoll,mode option,noselect,preempy,prefer,true,ttl ttl,version version,xleave。这里最长使用的prefer,表示优先使用的服务器。其它参数的详细说明可参考NTP的帮助文档。

2.3 NTP运行

配置好ntp.conf文件后,通过如下命令重启NTP服务:

# service ntp restart

重启后通过如下命令观察NTP的运行状态:

# watch ntpq -p

Every 2.0s: ntpq -p      Tue Apr 17 11:04:48 2018

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 0.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.002
 1.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.002
 2.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.002
 3.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.002
 ntp.ubuntu.com  .POOL.          16 p    -   64    0    0.000    0.000   0.002
-mx.comglobalit. 128.227.205.3    2 u    7   64  377  208.655   -5.511  19.965
+time4.aliyun.co 10.137.53.7      2 u   20   64  377   36.855   -4.177   2.523
+120.25.115.20   10.137.53.7      2 u   15   64  377   44.108   -3.279   1.075
-61-216-153-106. 211.22.103.157   3 u   14   64  377   51.587   -6.215   2.993
*time5.aliyun.co 10.137.38.86     2 u   22   64  377    2.782   -3.453   2.444
-static-5-103-13 .GPS.            1 u    9   64  357  186.930   -6.467   4.159
-pugot.canonical 17.253.34.125    2 u   41   64  377  323.893  -21.803   9.484

这个命令可以列出目前我们的NTP与上层相关NTP的状态,上面几个字段的意义为:

remote: 本地机器所连接的远程NTP服务器;

refid: 给远程服务器提供时间同步的服务器IP; st: 远程服务器的层级别(stratum)。由于NTP是层型结构,有顶端的服务器、多层的Relay服务器、再到客户端。所以服务器级别从高到低可以设定为1-16。为了减缓负荷和网络堵塞,原则上应该避免直接连接到级别为1的服务器; when: 几秒钟前曾经做过时间同步更新的动作; poll: 本地主机和远程服务器多少时间进行一次同步(单位:s);一开始运行NTP时,这个poll值会比较小,这样和服务器同步的频率也就增加了,可以尽快调整到正确的时间范围;之后poll值会逐渐增大,同步的频率也就会相应减小; reach: 已经向上层NTP服务器要求更新的次数; delay: 网络传输过程当中延迟的时间(单位:10^(-6)s,微秒); offset: 时间补偿的结果(单位与:10^(-3)s,毫秒); jitter: Linux系统时间与BIOS硬件时间的差值(单位:10^(-6)s,微秒)。简单地说这个数值的绝对值越小,主机和对时服务器的时间就越接近; *: 远端的服务器已经被确认为主NTP Server,系统时间将由这台机器所提供; +: 作为辅助的NTP Server,与带有*号的服务器一起为我们提供同步服务. 当```*```号服务器不可用时,它就可以接管; -: 远程服务器被clustering algorithm认为是不合格的NTP Server; x: 远程服务器不可用;

注意:要让你的NTP Server/Client真的能运作,在上述的动作中得注意:

  • 上述watch ntpq -p的输出结果中,你的NTP服务器真的要能够连结上层NTP客 户端才行,否则你的客户端将无法对你的NTP服务器进行同步更新。
  • 你的NTP服务器时间不可与上层差异太多。


3. 使用ntpdate更新时间

  • 安装ntpdate
# apt install ntpdate
  • 关闭ntp进程

ntpdate命令是要在ntp进程退出的情况下执行,如果执行上述命令出错,那么请先关闭ntp进程,具体操作日下所示:

# ntpdate 10.138.16.232
17 Apr 10:36:03 ntpdate[9730]: the NTP socket is in use,exiting

// ntpdate命令是要在ntp进程退出的情况下执行
# service ntp stop

// 检查ntp服务是否停止
# ps -aux | grep ntp 

// 与阿里云ntp服务器对时
# ntpdate ntp1.aliyun.com

17 Apr 10:42:42 ntpdate[10778]: adjust time server 182.92.12.11 offset -0.018098 sec

// 启动ntp服务
# service ntp start

// 观察NTP的运行状态
# watch ntpq -p

阿里云提供的7个NTP时间服务器,也就是Internet时间同步服务器地址:

ntp1.aliyun.com

ntp2.aliyun.com

ntp3.aliyun.com

ntp4.aliyun.com

ntp5.aliyun.com

ntp6.aliyun.com

ntp7.aliyun.com


4. 参考文章

https://www.cnblogs.com/xwdreamer/p/3448773.html

ubuntu下配置NTP对时服务的更多相关文章

  1. HTML5 Web缓存和运用程序缓存(cookie,session)

    这篇文章主要介绍了HTML5 Web缓存和运用程序缓存(cookie,session),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. ios – Objective-C中的Google用户serverAuthCode nil

    我正在尝试将GoogleSignIn框架集成到iOS应用程序中,并对服务器上的用户进行身份验证.我设法登录用户,但在–(void)signIn:(GIDSignIn*)signIndidSignInForUser:(GIDGoogleUser*)用户withError:(NSError*)错误委托方法,user.serverAuthCode为nil,我需要通过此服务器身份验证代码,嗯,验证服务器上

  3. ios – CloudKit – 如何保存记录如果不存在

    我正在尝试创建一个包含唯一值的记录类型,并将作为另一个记录类型的目标引用对象.例如,录制类型–电影将包含用户提交的唯一电影列表.而且FavoriteMovies将包含用户参考和电影参考.用户可以从现有电影列表中进行选择,也可以向其中添加新电影.如果我创建一个新的电影记录,而另一个用户创建一个具有相同名称的新记录(在我检索电影列表之后,但在我尝试添加新电影之前),则会出现问题.这两个新记录被认为是具

  4. 让你真正明白cinder与swift、glance的区别

    Cinder——提供块存储,类似于Amazon的EBS块存储服务,目前仅给虚机挂载使用。Cinder包含以下三个主要组成部分APIservice:Cinder-api是主要服务接口,负责接受和处理外界的API请求,并将请求放入RabbitMQ队列,交由后端执行。Cinder目前提供VolumeAPIV2Schedulerservice:处理任务队列的任务,并根据预定策略选择合适的VolumeService节点来执行任务。目前版本的cinder仅仅提供了一个SimpleScheduler,该调度器选择卷数量

  5. swift – 如何编码非托管到base64以发送到另一台服务器?

    我正在尝试使用密钥对加密来验证我的应用程序和我的PHP服务器之间的身份.为此,我需要在我的应用程序中生成公钥后将公钥发送到服务器.publicKey的类型为Unmanaged.我在上面的代码中得到的错误是:调用中的额外参数’base64EncodedData’我该怎么办?有没有更好的办法?编辑:这是密钥对的生成方式:编辑2:所以问题是SecKey不是NSData,所以我的问题应该是:如何将publicKey:SecKey转换为NSData?您似乎可以将密钥临时存储到钥匙串,然后将其恢复并将其转换为数据:

  6. 如何在android中设置多个SMTP服务器?

    我的问题是如何设置多个SMTP服务器在Android中发送邮件,如:雅虎,hotmail,gmail,rediff任何类型的域名将在发送邮件时起作用.任何人都可以建议任何网站或任何想法吗?请帮帮我,谢谢你.解决方法以下是GMail,Yahoo!的测试设置.和Hotmail.使用适用于Android的JavaxMail端口进行测试.

  7. 如何在Android服务器上发布大型视频?

    我想发布一个大视频.我正在使用FTP将视频发送到服务器,但上传会在一段时间后停止.在服务器上视频崩溃,但我可以上传较小的视频.我还使用HTTP将视频发送到服务器,作为Base64编码字符串发送,但编码时出现内存不足异常.我试图将视频上传为文件,但没有成功.将大型视频上传到服务器的最佳方法是什么?

  8. android rest客户端不支持的媒体类型

    我尝试从android模拟器发送请求到一个安静的服务器.但我总是得到错误:415UnsupportedMediaType.客户代码:服务器的代码:解决方法问题是服务器不知道客户端请求的媒体类型.在客户端代码中尝试这样的事情:request.setHeader(“Content-Type”,“application/json”);

  9. 浅谈HTML5 服务器推送事件(Server-sent Events)

    这篇文章主要介绍了浅谈HTML5 服务器推送事件(Server-sent Events) ,具有一定的参考价值,有兴趣的可以了解一下

  10. Android NTP 时间同步机制详解

    这篇文章主要为大家介绍了Android NTP时间同步机制实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

随机推荐

  1. crontab发送一个月份的电子邮件

    ubuntu14.04邮件服务器:Postfixroot收到来自crontab的十几封电子邮件.这些邮件包含PHP警告.>我已经解决了这些警告的原因.>我已修复每个cronjobs不发送电子邮件(输出发送到>/dev/null2>&1)>我删除了之前的所有电子邮件/var/mail/root/var/spool/mail/root但我仍然每小时收到十几封电子邮件.这些电子邮件来自cronjobs,

  2. 模拟两个ubuntu服务器计算机之间的慢速连接

    我想模拟以下场景:假设我有4台ubuntu服务器机器A,B,C和D.我想在机器A和机器C之间减少20%的网络带宽,在A和B之间减少10%.使用网络模拟/限制工具来做到这一点?

  3. ubuntu-12.04 – 如何在ubuntu 12.04中卸载从源安装的redis?

    我从源代码在Ubuntu12.04上安装了redis-server.但在某些时候它无法完全安装,最后一次makeinstallcmd失败.然后我刚刚通过apt包安装.现在我很困惑哪个安装正在运行哪个conf文件?实际上我想卸载/删除通过源安装的所有内容,只是想安装一个包.转到源代码树并尝试以下命令:如果这不起作用,您可以列出软件自行安装所需的步骤:

  4. ubuntu – “apt-get source”无法找到包但“apt-get install”和“apt-get cache”可以找到它

    我正在尝试下载软件包的源代码,但是当我运行时它无法找到.但是当我运行apt-cache搜索squid3时,它会找到它.它也适用于apt-getinstallsquid3.我使用的是Ubuntu11.04服务器,这是我的/etc/apt/sources.list我已经多次更新了.我尝试了很多不同的debs,并没有发现任何其他地方的错误.这里的问题是你的二进制包(deb)与你的源包(deb-src)不

  5. ubuntu – 有没有办法检测nginx何时完成正常关闭?

    &&touchrestarted),因为即使Nginx没有完成其关闭,touch命令也会立即执行.有没有好办法呢?这样的事情怎么样?因此,pgrep将查找任何Nginx进程,而while循环将让它坐在那里直到它们全部消失.你可以改变一些有用的东西,比如睡1;/etc/init.d/Nginx停止,以便它会休眠一秒钟,然后尝试使用init.d脚本停止Nginx.你也可以在某处放置一个计数器,这样你就可以在需要太长时间时发出轰击信号.

  6. ubuntu – 如何将所有外发电子邮件从postfix重定向到单个地址进行测试

    我正在为基于Web的应用程序设置测试服务器,该应用程序发送一些电子邮件通知.有时候测试是使用真实的客户数据进行的,因此我需要保证服务器在我们测试时无法向真实客户发送电子邮件.我想要的是配置postfix,以便它接收任何外发电子邮件并将其重定向到一个电子邮件地址,而不是传递到真正的目的地.我正在运行ubuntu服务器9.10.先感谢您设置本地用户以接收所有被困邮件:你需要在main.cf中添加:然后

  7. ubuntu – vagrant无法连接到虚拟框

    当我使用基本的Vagrantfile,只配置了两条线:我看到我的虚拟框打开,但是我的流氓日志多次显示此行直到超时:然后,超时后的一段时间,虚拟框框终于要求我登录,但是太久了!所以我用流氓/流氓记录.然后在我的物理机器上,如果我“流氓ssh”.没有事情发生,直到:怎么了?

  8. ubuntu – Nginx – 转发HTTP AUTH – 用户?

    我和Nginx和Jenkins有些麻烦.我尝试使用Nginx作为Jenkins实例的反向代理,使用HTTP基本身份验证.它到目前为止工作,但我不知道如何传递带有AUTH用户名的标头?}尝试将此指令添加到您的位置块

  9. Debian / Ubuntu – 删除后如何恢复/ var / cache / apt结构?

    我在ubuntu服务器上的空间不足,所以我做了这个命令以节省空间但是现在在尝试使用apt时,我会收到以下错误:等等显然我删除了一些目录结构.有没有办法做apt-getrebuild-var-tree或类似的?

  10. 检查ubuntu上安装的rubygems版本?

    如何查看我的ubuntu盒子上安装的rubygems版本?只是一个想法,列出已安装的软件包和grep为ruby或宝石或其他:)dpkg–get-selections

返回
顶部