如何设置本地NTP服务器?

我使用以下命令在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 

有没有必要的配置呢?

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

公然复制面食:

HOWTO:设置NTP服务器

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

什么是NTP?

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

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

本指南介绍如何与Stratum 1和2机器准确同步,并在一天内尽可能保持系统时钟的准确性。 有关如何允许您的计算机作为本地网络上其他计算机的Stratum 2/3服务器运行的部分也包含在内。

我是否必须制作NTP服务器?

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

动机:

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

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

可以在网络上的计算机上本地运行NTP守护程序。 这有多个优点:首先,NTP守护进程逐渐“学习”本地机器的漂移率,并且可以全天校正它。 与上层时间服务器的同步每天发生多次,并且可以同时使用许多不同的时间服务器以使同步更准确。 通过这种方式,NTP守护程序充当准确的时间客户端,使您的系统时钟尽可能接近标准时间。

除了维护准确的系统时钟外,NTP守护程序还允许网络上的计算机(如果您愿意)作为NTP时间服务器运行。 这样做将允许本地网络上的其他计算机以非常快速和准确的方式与LAN时间服务器同步,因为网络延迟最小化。 通过这种方式,网络上机器之间的时钟差异尽可能保持最小。 如果你设置一个,Mac,甚至Windows盒子也可以与NTP服务器同步。

将机器设置为NTP服务器还有其他不太个人化的动机。 首先,这样做可能会减少更高级别NTP服务器的压力,因为LAN上的其他计算机可能与本地建立的时间服务器同步。 此外,不推荐使用ntpdate,而是使用ntpd的-q标志(模仿其function)。 因此,即使您不想在后台不断运行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'放在最有希望'iburst'之后。 例如:

 server nist1-dc.WiTime.net iburst 

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

此外,在服务器列表底部添加一些额外的行,以便在暂时失去Internet连接时将当前本地时间作为默认值:

 server 127.127.1.0 fudge 127.127.1.0 stratum 10 

如果您在笔记本电脑或其他机器上运行ntpd并且间歇性地断开Internet连接,这将防止任何肮脏。

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

 # 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 

如果’delay’,’offset’和’jitter’字段不为零并且您没有同步,则可能意味着您只需要等待一段时间。 再次检查您是否已将’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与LAN时间服务器同步的屏幕截图,如果有人有兴趣的话。

而已! 整个过程并不难,但对于之前没有对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) 服务器 ,其他机器( 客户端 )必须从中获取时间。

您必须在所有计算机上安装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 

在建立连接之前可能需要一些“时间”(抱歉!)。 守护程序不会经常轮询服务器。 上面输出中的“when”列显示自轮询服务器以来的秒数。

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

编辑服务器上的文件/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 

你可以看到客户端正在使用时间服务器。

这需要一些时间。

接受的答案(截至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应该可以正常工作。