使用NTP进行即时同步

时间:2014-05-30 09:04:51

标签: linux rhel ntpd

我正在使用两台PC:PC1(服务器)和PC2(客户端),我正在尝试将它们的时间与NTP同步。 PC1未配置为与任何外部时间源同步。我只是想在PC1上有任何时间,PC2应该按照它同步。我做了以下更改 - :

在PC1(服务器) - :

#vi /etc/ntp.conf
server 127.127.1.0
fudge 127.127.1.0 stratum 1
restrict 127.0.0.1
restrict 192.168.50.0 mask 255.255.255.0 nomodify notrap
driftfile /var/lib/ntp/drift
:wq!

#vi /etc/ntp/step-tickers
# List of servers used for initial synchronization.
127.127.1.0
:wq!

#vi /etc/init/rc.conf
ntpd_enable=\"YES\"
:wq!

在PC2(客户端) - :

#vi /etc/ntp.conf
server 192.168.50.201
fudge 127.127.1.0 stratum 2
restrict 127.0.0.1
driftfile /var/lib/ntp/drift
restrict 192.168.50.201 mask 255.255.255.255 notrap nomodify
:wq!

#vi /etc/ntp/step-tickers
192.168.50.201
:wq!

#crontab -e
1 * * * * ntpdate -s -b -u 192.168.50.201
:wq!

#vi /etc/init/rc.conf
ntpd_enable=\"YES\"
:wq!

我还通过添加这些行更改了两侧的防火墙设置 -

#vi /etc/sysconfig/iptables
-I INPUT -p udp --dport 123 -j ACCEPT
-I OUTPUT -p udp --sport 123 -j ACCEPT
:wq!

但是,我无法将PC2日期与PC1日期同步,即当我在PC1中更改日期时,更改不会立即反映在PC2中。我使用的是RHEL 6.2。

谁能告诉我哪里出错?

2 个答案:

答案 0 :(得分:2)

NTP的中心算法旨在同步时钟并使它们在很长一段时间内保持同步;当一个时钟相对于另一个发生变化时,不要将两个时钟保持在锁定步骤中。

它的目的是在互联网规模上工作,而不是在本地网络规模上工作。

为了做到这一点,它从连接到它的NTP服务器获取初始时间,并使用它来确定本地时间和服务器时间之间的差异。然后将其转换为曲线的斜率,用于调整本地时钟以匹配服务器时钟并使它们彼此保持同步。

通过连续轮询远程服务器来调整此斜率。使用minpollmaxpoll间隔配置远程服务器轮询之间的间隔。这些间隔被定义为轮询之间的两个秒数(并且记住那些轮询间隔严格的时间,它具有随机性以防止在发生的情况下请求泛滥大量服务器同时启动)。默认轮询间隔为minpoll = 6(== 64秒),maxpoll = 10(== 1024秒)。

当第一次轮询发生时,第二次是64秒之后,随着从服务器获得更多样本,这个间隔移出,假设本地时钟和远程时钟的模型保持相对稳定,即随着时间的推移,轮询率会随着模型的确定而降低。

如果您调整服务器上的时钟,则需要重新计算模型。这将需要一些时间,因为算法将在确定当前预期差异时考虑先前的时间差异。

如果您将服务器的minpollmaxpoll设置为4,那么它将每16秒大致轮询一次服务器,这将加速时钟模型的调整,但它仍然会花时间让时钟彼此同步。这是在您正在轮询相对较近的服务器的LAN环境中运行时执行的有用设置。

正在运行ntpd正在注册时钟的长期稳定性,正在运行ntpdate正在注册时钟与远程服务器同步的时间段,在其他任何时候时钟将与远程时间不同步,因为它没有一个模型可以调整本地时间以使其与远程服务器保持同步。

  

ntpdate运行时无法运行ntpd,除非您使用-u标志,这会导致它不使用123的默认ntp端口。否则,您会收到the NTP socket is in use, exiting消息。

答案 1 :(得分:1)

您的问题意味着您希望pc2能够快速确定pc1上的时间已经发生变化,并相应地更新,这是您正在寻找的行为吗?如果是这样,我不认为ntp本身会真的这样做,因为ntp并不真的希望服务器改变它的时间

您也可以尝试使用ntpdate -s立即设置时间。