ntpd

初始启动

这一页讨论了使用ntpd-标准NTP查询程序进行ntpd程序监控和调试的技巧,不管是在本地服务器还是远端机器。在特定情况下ntpdc,也是很有效,但是它的使用并不在这里涉及。ntpq程序实现了在ntp文档RFC1305,附录A所规定的功能。是用来读写NTPv4中定义的变量(指导着标准process)。另外程序可以用来发送远端配置命令到服务器。

ntpd后台程序可以在两种模式下运行,这就要看有没有-d命令行选项。没有这个选项的话,后台程序就会脱离控制终端并且自动运行。当存在-d选项的时候,后台不会脱离终端,并且会产生一些有利于调试的打印信息。通常这些打印信息需要参考源码。然而,一个-d选项只会产生一些神秘的输出,但是当调试配置和网络问题的时候将会十分有用。

有些问题是十分明显的,这当进程一开启就能看出来。最常见的就是在UNIX的/etc/services中缺少UDP端口。注意NTP不会使用任何TCP协议。也需要注意NTP源端口目的端口都是123。这些事实应该给防火墙管理员指出来。

其他问题在系统日志中是很明显的,通常在启动时的打印信息就可以看出来,还有通过有些神秘的初始化数据和计算的精确值也可以显示。在启动时和通常的操作中的事件消息被发送到可选的protostats监控文件中,就如在事件消息和状态字页描述的那样。错误信息会发到系统log中,就如ntpd系统日志消息页展示的那样。在真正紧急的事件时,后台会发送终端错误信息到系统日志并且停止操作。

最常见的问题是不正确的DNS域名。检查每一个配置文件使用到的DNS域名和每一个UNIX ping命令使用的地址。UNIX traceroute或者windows tracert工具可以用来验证部分或者全部路径的有效性。大多数问题报到NTP新闻组的并不是NTP问题,而是网络或者防火墙的配置问题。

除非使用iburst选项,客户端正常需要花费几分钟来同步到服务器。如果客户端客户端在启动时恰巧与ntp服务器相差超过1000秒,那么后台程序将会退出并且给系统日志发送一条消息,来告诉操作者手动将时间设置到1000s以内并且重启。如果时间相差在1000秒以内但是大于128秒,步进矫正将会发生,并且进程将会自动重启。

当第一次启动并且频率文件不存在时,后台为了调整频率将会进入到一个特殊的模式。这将会花费900s,这段时间时间并不会同步。当矫正完全时,后台会创建频率文件并且进入正常模式来分期偿还剩余的偏差。

ntpd命令pe,as,rv正常来说对于验证正确的操作和评估最小性能。pe命令展示了一个列表来展示每一次协商的DNS域名和IP地址伴随一些状态字和统计信息。每一行的第一个字符是标记字符,展示了哪一次写上是备选项,谁是系统对端。编码在对端状态字的select域。

as命令展示了一系列协商和协商标示符。注意条件那一栏,这反映了状态字符码。rv命令展示了系统变量,包括系统状态字。rv assocID命令,这里的assocID是协商ID,展示了对端的变量,包括对端状态字。注意,除了明确的日历日期,时间是以毫秒计算,频率是以PPM。

关于系统对端,时钟变量在面板上展示的这些的详细信息超出了这页的范围。然而,详细的介绍在NTPv4协议文档里。以下这些观察将会在调试和监控的时候非常有帮助。

1.如果服务器已经成功同步了源之后,leap对端变量将不是3。同样客户端也成功同步到服务器的话leap系统变量将不会是3.

2.reach这个对等变量是一个8位的以8进制显示的8位移位寄存器。当一个有效的包到达时,最右边的位被置位。当一个包被发出时,寄存器被左移一位让0代替最右边的位。如果reach值是非0,说明服务器是可达的。否则说明服务器是不可达的。注意及时所有的服务器都变得不可达,系统都会继续给依赖的应用展示有效时间。

3.一个关于不同问题的有效的启示是flash对端变量,这是13个有效性测试的结果。它包含了状态字位,正常叫做闪动器,展示当前协商的错误。所有这些位对于一个有效的服务器来说都应该是0。

4。这三个对端变量filtdelay,filttoffset和filtdisp展示了延迟和偏移和上一次8个测量周期的相关统计信息。这些统计信息和他们的趋势是关于服务器,客户端,和网络性能的很有价值的指示。例如,延迟和波荡很大时就意味着网络拥堵。丢失的时钟滤波阶段意味着网络上有包丢失。

5.同步距离,被单向的延迟加上离散值决定,代表着最大的错误统计。jitter代表着预期的错误统计。最大错误和预期的错误统计是从对端变量中代表到服务器的质量度量中计算出来的。最大错误和预期的错误统计从系统变量中计算出来代表客户端的质量度量。如果根同步距离对每一台服务器超过1.5s,这叫选择门限,服务器被视为无效。

大频率误差

频率误差对于不同的计算机时钟振荡器来说差距很大,有时竟能超过500PPM。后台可以处理的频率误差最大500PPM,或者每天43s,当在最低的轮询间隔时,最大100PPM。为了维持特定的振荡频率,开启ntpd在server配置命令中再加上noselect选项。

一天的时间和偏差的记录在ntpq的pe命令中。等上一个小时再记录一天的时间和偏差。计算用偏差微分除以时间微分来计算偏差频率。如果频率超过100PPM,tickadj程序可能在调整内核时钟频率时小于那个值时很有效。对于不支持这个程序的系统,可以在系统启动文件使用一条命令。

接入控制

ntpd内部集成了从选中的主机或者网络过滤不想要的流量的机制。这些控制在接入控制选项有详细的介绍,包括基于源地址和地址掩码的详细的包过滤操作。通常来说,过滤的包被丢弃是没有什么警告的,除了增加标记计数器以外。然而服务器可以配置成发送恶魔之吻的包给客户端,这可以明确配置或者在加密认证由于某些原因失败时发送。客户端协商就会被永久关闭,闪动器变量的访问控制位TEST4被置位并且消息被发送到系统日志。

访问控制策略包括从主机或者网络的速率限制。如果一个进来的包超过了速率限制,它就被丢弃并且KOD恶魔之吻被发送到来源主机。如果这种情况发生在客户端协商已经同步完成之后,那么协商将不会被禁止,但是一条消息会被发送到系统日志。参见访问控制选项页阅读更详细的介绍。

大延迟方差

在有些被报告的场景中,控制线可以用来缓和网络延迟在一天的某些时段并且缓和高延迟在其他时段。通常一个方向的延迟占主要部分,这能够造成很大的时间偏差错误,有时竟能多达几秒钟。在这种场景下整天运行ntpd并不是很方便,因为这能够导致好几次时间步进,特别是当这种超过步进门限的情况持续出现。

特殊的机制被引入ntpd来处理这种情况。这套机制被叫做huff-n-puff并且在杂项选项页被描述。另一个可选的方法在这种场景中可以使用,那就是先通过运行ntpd在连续模式下来矫正本地时钟错误并且让他将频率文件写入ntp.drift文件。然后在例行任务中让某天的某一时段运行ntpd -q。在带有微内核增强的系统中,像linux,tru64,solaris,FREEBSD中,内核会持续调整频率来让ntpd产生的残留误差小于几微妙。

加密认证

可靠的源认证需要使用对称密钥或者公钥加密,就如加密选项描述的那样。在对称密钥加密中,服务器和客户端通过密钥文件共享会话密钥,然而在公钥加密中,这就需要OPENSSL软件库,服务器提供私钥,从不分享,但是公钥却是不受限制的发布。需要的加密媒介是通过ntp-keygen程序产生。

对称密钥认证的主要问题一般是由于不匹配的密钥和trustedkey命令的滥用造成的。检查这类问题的简单方法是使用trace工具,可以通过使用ntpd -d命令来开启。每当一个包被收到之后,一条打印信息就会通过auth域的认证状态显示出来。1就意味着认证成功,否则就是认证失败。

 

posted on 2016-04-07 00:27  与非朋仔  阅读(2338)  评论(0)    收藏  举报

导航