在NTP中禁用Tinker Panic 0有什么缺点?


10

有时我们会遇到这样的问题,即新服务器的BIOS中的时间有误,因此可能要花一个月的时间。

当您在VMware中挂起VM并取消挂起时,时间也会关闭。由于NTP在最大偏移量后不同步,因此我正在考虑在/etc/ntp.conf中使用tinker panic 0。

默认最大偏移量为1000秒会导致NTP停止同步时间的原因是什么?我们正在使用Puppet来设置NTP,我正在考虑使其在ntp.conf中设置tinker panic 0,因此NTP仍将同步。这样做的缺点是什么?


Answers:


8

与时间如此不同的服务器不同步的原因记录在这里

5.1.1.4。如果参考时间发生变化会怎样?

理想情况下,世界各地的参考时间都是相同的。同步后,操作系统的时钟和参考时钟之间不应有任何意外的变化。因此,NTP没有特殊的方法来处理这种情况。

取而代之的是,ntpd的反应将取决于本地时钟与参考时间之间的偏移量。对于一个很小的偏移量,ntpd将照常调整本地时钟。对于较小和较大的偏移量,ntpd会暂时拒绝参考时间。在后一种情况下,操作系统的时钟将继续执行最后一次更正,而新的参考时间将被拒绝。一段时间后,较小的偏移量(明显少于一秒钟)将被摆放(缓慢调整),而较大的偏移量将导致时钟步进(重新设置)。巨大的偏移量将被拒绝,并且ntpd会终止自身,以为一定发生了非常奇怪的事情。

在我的当前NTP配置(也由中控制)下puppet,我在ntp.conf文件中使用tinker panic和,并在守护程序设置(/etc/sysconfig/ntpd)中强制与服务器同步,如ntpd(8)联机帮助页所述:

-g通常,如果偏移量超出了紧急阈值(缺省值为1000 s),则ntpd会退出并向系统日志显示一条​​消息。此选项允许将时间无限制地设置为任何值。但是,这只能发生一次。如果超过此阈值,ntpd将退出,并向系统日志发送一条消息。该选项可与-q和-x选项一起使用。

我这样做是因为我可以信任要连接的NTP服务器。

适用于客户端的模块的相关部分如下:

class ntp (
  $foo
  $bar
  ...
  ){

  $my_files = {
    'ntp.conf'      => {
      path    => '/etc/ntp.conf',
      content => template("ntp/ntp.conf.$template.erb"),
      selrole => 'object_r',
      seltype => 'net_conf_t',
      require => Package['ntp'], },
    'ntp-sysconfig' => {
      path    => '/etc/sysconfig/ntpd',
      source  => 'puppet:///modules/ntp/ntp-sysconfig',
      require => Package['ntp'], },
      ...
  }

  $my_files_defaults = {
    ensure   => file,
    owner    => 'root',
    group    => 'root',
    mode     => '0644',
    selrange => 's0',
    selrole  => 'object_r',
    seltype  => 'etc_t',
    seluser  => 'system_u',
  }

  create_resources(file, $my_files, $my_files_defaults)

  exec { 'ntp initial clock set':
    command     => '/usr/sbin/ntpd -g -q -u ntp:ntp',
    refreshonly => true,
    timeout     => '-1',
    subscribe   => File['/etc/ntp.conf'],
  }

}

引用文件的内容为:

$ cat devops/puppet/modules/ntp/files/ntp-sysconfig
# Drop root to id 'ntp:ntp' by default.
OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid -g -a"

和:

$ cat devops/puppet/modules/ntp/templates/ntp.conf.RedHat.erb
# HEADER: This file was autogenerated by puppet.
# HEADER: While it can still be managed manually, it
# HEADER: is definitely not recommended.
tinker panic 0
<% server.each do |ntpserver| -%>
server <%= ntpserver %> autokey
<% end -%>
server  127.127.1.0     # local clock
fudge   127.127.1.0 stratum 10
driftfile /var/lib/ntp/drift
crypto pw hunter2
crypto randfile /dev/urandom
keysdir /etc/ntp

hiera这里缺少该部分,但是您知道了。


3

最坏的例子是对面向LAN的GPS接收器的攻击,这已被证明是可能的,这就是为什么在这种情况下NTP会“离开”而不是立即破坏任何东西的原因。此类问题,或在NTP的设计时预期会出现突然的软件错误,并且两种情况都可能发生。

该算法中的一种保护机制是检测所谓的虚假行情,但这只能检测到一些问题,主要是在上游时钟突然发送倒退时间的情况下。

如果仅与“开始时间的时钟错误”有关:

  • 您可以使用/ etc / ntp / step-tickers(在RHEL *上,Debian从未想到过)。step-tickers文件在启动ntpd本身之前,需要一个或多个NTP服务器对其运行ntpdate。
  • 另外(或另外),ntpd-g选项,它允许使用丑陋的偏移量,但仅在开始时才找到它们。
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.