首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ubuntu上设置本地ntp服务器而不接入internet?

如何在ubuntu上设置本地ntp服务器而不接入internet?
EN

Server Fault用户
提问于 2016-09-30 09:26:13
回答 2查看 56.8K关注 0票数 7

我已经尝试过关于如何在ubuntu上设置本地ntp服务器的几个指南,但似乎没有一个正确工作。由于某种原因,我的服务器在时间上有很大的漂移,我必须让他们的时间保持在一起,因为我运行的数据库需要这样做。

  • 我有8台ubuntu 14.04 LTS服务器,没有一台可以上网
  • 我希望在一个服务器上运行ntp服务器(如果更好的话),并让所有其他服务器连接到ntp服务器(S)来设置时间。

目前,我的服务器(ip .24)运行/etc/ntp.conf:

代码语言:javascript
复制
server 127.127.1.0 prefer
fudge  127.127.1.0 stratum 10
driftfile /var/lib/ntp/drift
broadcastdelay 0.008

# Give localhost full access rights
restrict 127.0.0.1

# Give machines on our network access to query us
restrict 192.168.178.0 mask 255.255.255.0 nomodify notrap

broadcast 192.168.178.0

关于“客户”:

代码语言:javascript
复制
# Point to our network's master time server
server 192.168.178.24 iburst
fudge 192.168.178.24  stratum 10

restrict default ignore
restrict ::1
restrict 127.0.0.1
restrict 192.168.178.24 mask 255.255.255.255 nomodify notrap noquery

driftfile /var/lib/ntp/drift

minpoll 4
maxpoll 5

注意:我已经使用多选项卡Putty同时向所有ntp客户端发送以下命令。除了服务器之外,我已经停止了所有的ntp服务,使用sudo ntpdate 192.168.178.24让他们获取日期,然后重新启动ntp服务。这成功了。在命令完成后,所有服务器都显示了相同的日期。但是,大约10分钟后,我的服务器显示了以下时间:

代码语言:javascript
复制
Fr 30. Sep 11:16:53 CEST 2016
Fr 30. Sep 11:15:33 CEST 2016 (server .24) 
Fr 30. Sep 11:16:50 CEST 2016
Fr 30. Sep 11:15:33 CEST 2016
Fr 30. Sep 11:17:05 CEST 2016
Fr 30. Sep 11:15:33 CEST 2016
Fr 30. Sep 11:15:33 CEST 2016
Fr 30. Sep 11:15:33 CEST 2016

如何让它们正确地同步到ntp服务器?我怎样才能降低投票时间?看来我的服务器不同步了,所以我需要他们再次检索“正确”的时间.

对于“正确”时间,我指的是对所有服务器来说都是相同的时间。它不一定需要准确的世界时间(如果你这样称呼它)。

编辑:我已经尝试过建议的配置设置。据我所知,这就是我的服务器/客户端信任的样子。在此期间,我已经看到我的.24服务器实际上正在陷入更糟糕的时期。.20服务器是最精确的服务器,我现在使用.20服务器来承载ntp服务器。很抱歉给你造成了混乱。

服务器配置:

代码语言:javascript
复制
# Use the local clock
server 127.127.1.0 prefer
fudge  127.127.1.0
driftfile /var/lib/ntp/drift
broadcastdelay 0.008

# Give localhost full access rights
restrict default

# Give machines on our network access to query us
restrict 192.168.178.0 mask 255.255.255.0 nomodify notrap

broadcast 192.168.178.0

为客户:

代码语言:javascript
复制
# Point to our network's master time server
server 192.168.178.20 iburst

restrict default

driftfile /var/lib/ntp/drift

minpoll 4
maxpoll 5

服务器上的ntpq -as和ntpq -pe:

代码语言:javascript
复制
ntpq -c as
ind assid status  conf reach auth condition  last_event cnt
===========================================================
  1 41906  963a   yes   yes  none  sys.peer    sys_peer  3
  2 41907  8811   yes  none  none    reject    mobilize  1

ntpq -c pe
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*LOCAL(0)        .LOCL.           5 l   60   64  377    0.000    0.000   0.000
 192.168.178.0   .BCST.          16 u    -   64    0    0.000    0.000   0.000

像这样的五倍类似的输出(这些服务器在时间上漂移):

代码语言:javascript
复制
ntpq -c as
ind assid status  conf reach auth condition  last_event cnt
===========================================================
  1 62104  9024   yes   yes  none    reject   reachable  2


ntpq -c pe
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 hadoop20.xx LOCAL(0)         6 u   27   64  377    0.151  63591.8 33407.0

两个人(最有可能?)工作客户:

代码语言:javascript
复制
ntpq -c as
ind assid status  conf reach auth condition  last_event cnt
===========================================================
  1  7757  963a   yes   yes  none  sys.peer    sys_peer  3

ntpq -c pe
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*hadoop20.xx LOCAL(0)         6 u   18   64  377    0.183    7.883   3.015

编辑2:

我已经使用了sudo service ntp stopsudo ntpdate 192.168.178.20,等待ntpdate完成,sudo service ntp start在所有客户端上。仍然只有2个成功的客户和5个拒绝客户。

拒绝客户端显示此输出。delay + offset值看起来很高,因为失败的客户端会随时间变化。也许他们不信任服务器更新时间,因为延迟/偏移量太高了?

代码语言:javascript
复制
ntpq -c as
ind assid status  conf reach auth condition  last_event cnt
===========================================================
  1 20981  905a   yes   yes  none    reject    sys_peer  5

ntpq -c pe
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 hadoop20.xx LOCAL(0)         6 u   34   64    3    0.166  18665.9 16201.3

我也尝试使用这个https://askubuntu.com/a/256004答案,它工作了大约30秒,然后状态更改为“拒绝”再次!ntpdate -s 192.168.178.20也一样。这很可能与拒绝服务器时间的ntp客户端有关。有没有办法强迫他们改变时间?

EN

回答 2

Server Fault用户

回答已采纳

发布于 2016-09-30 10:41:57

不要这样做。我是认真的。只是不要。人们总是想出这样的想法: NTP的设计目的是让一堆机器都拥有相同的时间。但事实并非如此。它的设计非常谨慎,让许多机器都尽可能接近正确的时间,而这并不是一回事。

如果您可以访问一个窗口,您可以为If 50构建一个半体面阶层-1服务器,也可以为If 100构建一个很好的。你会做得更好,建立这样的东西,然后指向其他客户。正确的时间戳比仅仅是自我一致的时间戳要好得多,尤其是对法医而言。

但是如果你绝对必须做你正在做的事情,那么你需要意识到你在扭曲你的行为,这将意味着理解你在做什么。

在服务器上

代码语言:javascript
复制
server 127.127.1.0 prefer
fudge  127.127.1.0 stratum 10

意思是“使用本地无纪律的时钟,就像它是权威的”,这就是你想要的。但是,我不知道为什么要将它强制到10层;考虑删除stratum 10,让驱动程序提供它的默认层0。关于客户

代码语言:javascript
复制
server 192.168.178.24 iburst
fudge 192.168.178.24  stratum 10

一点意义都没有。fudge 127.127.x.y是为强制使用各种本地时钟驱动程序而保留的。给它其他地址是没有意义的。从客户机中删除fudge行,并将它们指向服务器。您还在使用一个封闭的网络,所以在您完成此工作之前,请删除所有的安全内容:

代码语言:javascript
复制
restrict default

如果这看起来仍然不起作用,那么我们需要在服务器上和行为恶劣的客户机上看到ntpq -c asntpq -c pe的输出,至少要经过十分钟的不间断运行。

编辑:你在下面的评论中写道:“我认为偏移量/抖动很高,因为失败的客户会在时间上漂移”。

我想你可能是对的。这家伙的博客表示,他也有过同样的经历:客户端时钟太差了,以至于让本地ntpd误以为服务器是不可靠的。他写

巨大的抖动的原因似乎终于清楚了!我们的时钟漂移得如此之快,通过我们的几次测量,偏移量将上升几秒钟。

考虑到是客户端的时间以最快的速度结束,而同步失败(将服务器标记为“拒绝”),我认为您也看到了同样的效果。他的解决方案是使用adjtimex手动调优内核时钟(调整tick值),直到系统时钟不再那么任性,此时ntpd有机会将服务器识别为OK,并与其同步。您可能应该先在最差的客户端上尝试一下,看看它是否有用。

票数 15
EN

Server Fault用户

发布于 2020-03-11 17:46:54

您可以完全放弃NTP,在“服务器”上手动设置时间并发出以下命令:

代码语言:javascript
复制
ssh root@192.168.178.xxx "date -s \"$(date "+%F %T")\""

通过你所有的“客户端”IP循环它,你就完成了!

说明:本地时间将通过SSH“复制”到远程计算机。

票数 -2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/806274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档