Answers:
与时间如此不同的服务器不同步的原因记录在这里:
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
这里缺少该部分,但是您知道了。
最坏的例子是对面向LAN的GPS接收器的攻击,这已被证明是可能的,这就是为什么在这种情况下NTP会“离开”而不是立即破坏任何东西的原因。此类问题,或在NTP的设计时预期会出现突然的软件错误,并且两种情况都可能发生。
该算法中的一种保护机制是检测所谓的虚假行情,但这只能检测到一些问题,主要是在上游时钟突然发送倒退时间的情况下。
如果仅与“开始时间的时钟错误”有关:
tinker panic 0