如何设置本地NTP服务器?


16

我使用以下命令在Ubuntu Server 10.04上安装了NTP服务器:

sudo apt-get install ntp

NTP守护程序似乎正在工作并且正在123端口上侦听。

但是,我无法从另一台机器上获取时间:

sudo ntpdate -u my_ntp_server
23 Nov 18:48:41 ntpdate[2990]: no server suitable for synchronization found

有什么必要的配置吗?

Answers:


19

这是来自Ubuntu论坛的好方法:http : //ubuntuforums.org/showthread.php?t=862620

恶意复制面食:

HOWTO:设置NTP服务器

本教程介绍了如何将计算机设置为本地网络时间协议(NTP)服务器和/或如何使用NTP守护程序定期维护准确的系统时间。

什么是NTP?

网络时间协议(NTP)是一种旨在将本地时间时钟与网络时间服务器准确同步的协议。时间服务器的NTP网络以分层方式设置,因此任何用户都可以在某个级别将其作为服务器进入系统(有关更多详细信息,请参阅Wikipedia页面)。

NTP层次结构分为不同的级别,称为时钟层次。最精确的级别Stratum 0保留给原子钟等。下一个级别Stratum 1通常由本地连接到Stratum 0时钟的联网机器使用。层2 ... 15是NTP机器,它们依次连接到下层时钟和彼此连接。

本指南介绍了如何与Stratum 1和2机器进行准确同步,以及如何全天保持尽可能准确的系统时钟。还包括有关如何使您的计算机用作本地网络上其他计算机的Stratum 2/3服务器的内容。

我需要做一个NTP服务器吗?

不,绝对不是!如果您对网络上的时钟与标准时间(以及彼此之间)的未知差异感到满意,则不必设置NTP服务器。我在笔记本电脑上安装了一个,以便在不到1毫秒的时间内同步本地网络上的多台计算机,以进行生物工程实验。此外,还有其他优点,如下所述。

动机:

通常,未修改的Ubuntu盒使用ntpdate(/usr/sbin/ntpdate)将时钟与某些外部时间服务器定期同步。这种方法使时钟与课程分辨率同步(通常每天一次)。

电脑时钟并不完美,并且白天会从(正确的)时间服务器上漂移。此外,不同计算机的时钟中的漂移速率也不同,因此到一天结束时,不同的本地联网计算机之间可能存在显着差异,这可能会干扰某些操作(例如,在源代码之间移动源代码时,会有makefile抱怨不同的机器?)。

可以在网络上的计算机上本地运行NTP守护程序。这具有多个优点:首先,NTP守护程序逐渐“学习”本地计算机的漂移速率,并可以在一整天内对其进行校正。与上层时间服务器的同步一天发生多次,并且可以同时使用许多不同的时间服务器以使同步更加准确。这样,NTP守护程序就可以充当准确的时间客户端,从而使您的系统时钟尽可能接近标准时间。

除了保持准确的系统时钟外,NTP守护程序还允许网络上的计算机(如果需要)用作NTP时间服务器。这样可以使本地网络上的其他计算机以非常快速和准确的方式与LAN时间服务器同步,因为这样可以最大程度地减少网络延迟。这样,可以将网络上各机器之间的时钟差异保持在最小。如果您设置了Mac,甚至Windows机器也可以与NTP服务器同步。

还有其他一些不那么个人化的动机来将计算机设置为NTP服务器。首先,这样做可能会减轻高级NTP服务器的负担,因为LAN上的其他计算机可能会与本​​地建立的时间服务器同步。另外,不建议使用ntpdate,而建议对ntpd使用-q标志(模仿其功能)。因此,即使您不想在后台持续运行ntpd,ntpdate最终也会被ntpd取代,因此您可能现在想熟悉它

如何使用ntpd维护准确的系统时钟

  1. 安装NTP守护程序

首先,安装NTP守护程序(ntpd):

sudo aptitude install ntpd

如前所述,ntpd既可以充当客户端(同步系统时间),也可以充当服务器(为其他计算机提供准确的时间)。

(可选)您可能还希望删除以前的(不建议使用的)时间同步程序ntpdate。在ntpd工作之后,这样做可能更明智

sudo aptitude remove ntpdate
  1. 正确配置守护程序

ntpd的配置文件位于/etc/ntp.conf。默认的Ubuntu文件可能需要进行一些修改才能获得最佳性能。

您可能要修改的第一部分是要与其同步的服务器列表。默认部分可能如下所示:

# You do need to talk to an NTP server or two (or three).
server ntp.ubuntu.com

为了获得最准确的时间,最好与多个不同的NTP服务器通信,并使它们尽可能靠近您的物理位置。在线上有各种不同的服务器列表,最好的列表在这里。关于使用正确数量的服务器存在一些争论。一个比两个更好,并且三个或三个以上可能是一个好主意,只要您不要太过分。我使用的一些时间服务器的示例如下:

server nist1-dc.WiTime.net iburst
server ntp0.mcs.anl.gov
server 0.us.pool.ntp.org
server 1.us.pool.ntp.org
server 2.us.pool.ntp.org
server 3.us.pool.ntp.org

找到一些好的服务器后,将它们添加到列表中,排'iburst'在最有前途的服务器之后。例如:

server nist1-dc.WiTime.net iburst

启动后,这将导致ntpd与该服务器非常快速地同步。否则,ntpd会慢慢趋向于与服务器列表达成一致(就其性质而言),并且可能需要15到20分钟的时间才能充分同步,以充当网络其余部分的时间服务器。

另外,在服务器列表的底部添加一些额外的行,以在您暂时失去Internet连接时提供默认的当前本地时间:

server 127.127.1.0
fudge 127.127.1.0 stratum 10

如果您在笔记本电脑或其他计算机上间歇性地断开与Internet的连接,则在运行ntpd时可以避免任何麻烦。

总而言之,服务器列表应类似于以下内容(这是我的,您的服务器可能会有所不同):

# You do need to talk to an NTP server or two (or three).
server nist1-dc.WiTime.net iburst
server ntp0.mcs.anl.gov
server 0.us.pool.ntp.org
server 1.us.pool.ntp.org
server 2.us.pool.ntp.org
server 3.us.pool.ntp.org
server 127.127.1.0
fudge 127.127.1.0 stratum 10
  1. 确保配置有效

现在您的/etc/ntp.conf文件中有正确的服务器列表,是时候运行守护程序并查看是否正确同步了!确保您具有活动的Internet连接,然后运行:

sudo /etc/init.d/ntp restart

接下来,监视系统日志以查看是否与时间服务器同步:

tail -f /var/log/syslog

在大约10到15秒内(如果您忘记将“ iburst”放在您喜欢的服务器之后,则最多需要15到20分钟),您应该在系统日志中看到以下内容:

Jul 17 16:50:22 hostname ntpd[22402]: synchronized to 140.221.9.20, stratum 2

如果此消息永不出现,则说明您尚未与NTP服务器网络正确同步。使用以下命令检查与之通信的NTP对等方列表:

ntpq -c lpeer

如果“延迟”,“偏移”和“抖动”字段非零且您尚未同步,则可能意味着您只需要等待一会儿即可。再次检查是否已将“ iburst”参数插入服务器列表!作为参考,我的同龄人如下所示:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*milo.mcs.anl.go 192.5.41.40      2 u    4   64   77   46.213   67.753   2.207
-europium.canoni 193.79.237.14    2 u   63   64   37   97.375   71.020   1.875
-dtype.org       69.25.96.13      2 u    2   64   77   86.956   69.178   1.804
+smtp130.junkema 216.218.254.202  2 u    2   64   77   87.266   67.677   0.916
+kechara.flame.o 216.218.254.202  2 u    -   64   77   89.183   68.717   1.713
-host2.kingrst.c 99.150.184.201   2 u    -   64   77   24.306   62.121   2.608
 LOCAL(0)        .LOCL.          10 l   59   64   37    0.000    0.000   0.002
  1. 分享!(可选的)

ntpd运行并与您选择的时间服务器同步后,您可以对其进行设置,以便充当其他计算机的时间服务器。为此,请将以下内容添加到/etc/ntp.conf

# Allow LAN machines to synchronize with this ntp server
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.2.0 mask 255.255.255.0 nomodify notrap
You may add as many (or few) CIDR address blocks to allow to synchronize with your machine as you'd like. I included those commonly used with Linksys (192.168.1.*) and SMC (192.168.2.*) routers.
  1. 同步!(可选的)

使用步骤1-4设置NTP服务器后,您可以通过多种方式将网络上的其他计算机与服务器同步。我在下面概述了其中的几个:

ntpd:

如果在另一台计算机上安装了ntpd,则可以在ntp.conf文件的服务器列表中使用第一台服务器,或者可以使用-q选项进行一次同步,如下所示:

ntpd -q [IP address of your server]

ntpdate:

如果仍然在另一台计算机上安装了ntpdate,则可以使用它与服务器同步,如下所示:

ntpdate [IP address of your server]

注意:如果您在一台计算机上运行ntpd,但由于某些原因仍想使用ntpdate设置时间,则必须使用-u选项。

视窗:

Windows计算机使用称为简单网络时间协议(SNTP)的NTP简化版本,并且可以与NTP服务器同步。为了与新服务器同步,请双击时间,然后转到“ Internet时间”选项卡。将服务器的IP地址放在“服务器”字段中。我已经附上了与局域网时间服务器同步的Windows XP的屏幕截图,如果有人对此感兴趣的话。

而已!整个过程并不难,但是可能会使以前不太了解NTP网络的人感到困惑。我希望这有帮助!如果您在设置服务器时遇到任何问题,请告诉我。

麦克风

链接

我发现以下链接很有用……您也可以!

https://help.ubuntu.com/7.10/server/C/NTP.html http://linuxwave.blogspot.com/2007/0...tp-server.html http://lists.ntp.isc。 org / pipermail / q ... er / 011889.html http://www.linuxhomenetworking.com/w...Fntp.conf_File http://www.ntp.org/ntpfaq/NTP-a-faq.htm


感谢您的链接。实际上,我没有更改配置!一段时间后它才起作用。
哈立德

在您的ntp服务器上,您可以运行ntpdate -s a_stratum_1_server_address以使其立即同步。那么在您的另一台(客户端)计算机上,运行“ ntpdate -q your_local_ntp_server”应该会回应类似server your_local_ntp_server_ip, stratum 2, offset -0.012221, delay 0.02618
Keith Reynolds

仅链接答案可能会过期。请在答案中包括重要信息。
Zeta

5

关于此有很多链接,在我看来,它们使过程变得复杂。就我而言,我有一台机器充当代理服务器和防火墙,而我所有其他机器都通过它连接到Internet。我不想在防火墙上打开端口。因此,代理服务器必须是时间(ntp)服务器,其他计算机(客户端)必须从中获取时间。

您必须在所有计算机上安装ntp,并且还应在所有计算机上安装ntpq。

首先,查看ntp是否正常工作。默认情况下,ntpd(ntp守护程序)将在安装后立即运行,并且默认值应该起作用。但是,ntp不能立即工作,因此请稍等。然后,命令:

ntpq -c lpeer

应该给您的输出看起来像这样:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+golem.canonical 193.79.237.14    2 u  170 1024  377  140.458   -0.655   3.234
*gatekeeper.tss. 204.123.2.72     2 u  608 1024  377   84.650    2.168   0.471

要么:

ntpq --numeric --peers

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+91.189.89.199   193.79.237.14    2 u  652 1024  377  140.151   -0.242   2.821
*66.7.96.1       204.123.2.72     2 u   64 1024  377   85.074    2.409   0.963

如果是这样,则说明您已连接,并且时间服务器正在获取时间。如果没有,请使用

ps -e | grep "ntp" 

确保ntp在运行,然后重试。也尝试重新启动ntp:

sudo /etc/init.d/ntp restart

建立连接可能需要一些“时间”(很抱歉!)。守护程序不会非常频繁地轮询服务器。上面输出中的“时间”列显示自轮询服务器以来的时间(以秒为单位)。

现在,您必须使时间服务器将时间发送到其他计算机。

/etc/ntp.conf在服务器上编辑文件。您必须为网络添加一条线。就我而言,我有一个10.0.0.0网络。在ntp.conf文件中,添加了以下行:

broadcast 10.255.255.255

您必须为网络的每个网段添加一条广播线路。如果您的网络像我的一样简单,则只需要上面的一行即可。现在,使用上面的命令重新启动ntp,然后使用ntpq再次检查,您应该看到:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+golem.canonical 193.79.237.14    2 u   70 1024  377  140.151   -0.242   2.821
*gatekeeper.tss. 204.123.2.72     2 u  506 1024  377   84.650    2.168   0.241
 10.255.255.255  .BCST.          16 u    -   64    0    0.000    0.000   0.002

瞧,这是广播。

现在,您必须使每台客户端计算机都从广播服务器获得时间。在每个文件上,编辑文件:

/etc/ntp.conf

并且您将看到一些指定服务器的行。

加一行

server 10.10.10.1

或服务器的地址是什么。然后使用上述命令在客户端计算机上重新启动ntp。或者,您可以获取进程ID并杀死它,然后再次运行它。随你。

然后,经过足够的时间后,请与ntpq一起检查:

ntpq --numeric --peers
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*10.10.10.1      66.7.96.1        3 u  123 1024  377    0.430    1.022   1.831

您会看到客户端正在使用时间服务器。

这需要一些时间。


您可以ntpdate -s a_stratum_1_server_address在ntp服务器上运行,以强制其轮询和立即同步。
基思·雷诺兹

所有交换机都支持这种广播吗?例如,UDP广播已被大多数交换机/路由器阻止。
Tanasis

1

接受的答案(截至2018年7月)对我不起作用。此其他方法在2018年7月的Ubuntu 16.04 LTS上运行良好:

如果未安装NTP,请安装:

sudo apt-get update
sudo apt-get install ntp

编辑配置文件以允许NTP服务接收请求:

sudo nano /etc/ntp.conf --syntax=sh

取消注释此行:

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

至:

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

重新启动NTP服务:

sudo /etc/init.d/ntp restart

现在,您的NTP服务器必须正在运行,并允许其他计算机与您的计算机同步。以上任何测试,如ntpdate -u YourComputer都可以正常进行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.