网络时间协议(
NTP
)的安装
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
|
|
网络时间协议(
NTP
)的配置
|
ntp 是工作在 Unix 环境下的 NTP 协议第三版的实现程序,兼容第一和第二版,下面通过几方面内容介绍 ntpd 的具体工作情况。 |
首先应是怎样配置一个 NTP 子网 |
ntpd
开始运行时,读主机的原始的配置信息,一般为
etc/ntp.conf
文件,除非编译时起了另外一个名字,设置软件后,配置一配置文件是很重要的,最简单的,在文件中描述提供时间同步的服务器名,原则上
,
如果有一些时间服务器工作在广播
/
多播模式下则不用这样的描述,这种方式下客户机则应工作在
broadcast/multicast
模式。现今有许多提供时间同步的服务器,我们可用同步源跟踪反馈程序
ntptrace
来观察邻近子网,应该从已发布的时间源列表中选取同步源,而且应当选择至少三个,应选择在拓扑结构上离本机最近的服务器。
对于一个单独的工作站来讲,向 stratum-1 层请求时间同步是不明智的,因为 stratum-1 有过载的可能。因此,处于没有本地同步基础设备的工作站应从 stratum-2 服务器获取同步时间。这些服务器一般提供无限制进入,当然,要向管理者提交申请,在文件头标明进入方式和其它一些声明。 假如一个网关或服务器提供服务给一定数量的工作站或文件服务器,提供多用户的冗余的同步源和分级网络存取路径是很重要的,优选的配置是至少有三个管理上并列的时间服务器提供服务,其中每个都应和至少两个不同的外部时间源同步,宁可通过不同路径,通过不同的网关,这些时间源应工作在同一 stratum 。另外,这些同步源应和本地管理域内的其它时间服务器处于 peer 方式,且这一层中应有一外部时钟源。这样在这里共有六个外来的时钟源,加上同层(本网中处于 Peer 方式的)的时间源共有九个,在不超过十七分钟的时间内同层间就可轮询进行一次交换时间信息。 本地时间服务器网络层次的级别高低是一种技术上的选择,作为一种策略,并且为降低 primary 级服务器的负载,使用在整个管理范围内可靠、精确的更高层的同步时间服务器是必需配备的。 |
配置服务器和客户机 |
前面已提到过,配置文件一般叫
etc/ntp.conf
,其中列出了时间服务器的名字。一个时间服务器希望既从其它服务器接收同步,也向其发送同步时间,则用
peer
关键字标识,否则用
server
标识,若一本地
UTC
时间是有效的
,
则可将外部设为
peer,
内部为
server,
以便在
Internet
上永远提供。
ntpd 刚开始运行时所做的一件事就是计算出本机上时钟的频率错误,这要花费一天甚至更长时间,一旦这一初值被计算出以后将很少改变,并将这一值存于一文件中。 ntpd 灵活地支持地址棗掩码配置功能,并且要求用服务器的名字而不用其他地址,因为地址可能会改变,而机器名一般不会改变。 ntp 还包括三个询问程序,用于询问远端 NTP 实现时间准确性的评估和检查错误。它们分别是 ntptrace ,用于展示所选主机的路径,通常是无线时钟所在的 primary 主机,这一程序可工作于 NTP 第二、三版本,但不能工作于第一版本; ntpdc 用 NTP 专用模式化控制消息,对本地或远端服务器进行查询,这些消息的格式和内容指示 ntpd 的版本和一些旧的版本,程序允许检查内部计数器的性能和其它状态数据,是一个很好的测试工具, ntpdc 还提供运行时间重配制的用户界面。 ntpd 支持版本二和三中的选择性证实。在证实方式下,每个被传送的包都包括一个 32 比特的关键字 ID 和一个 64/128 比特的密码。这里可使用两种标准编码方式, DES 方式和 MDS 方式。在证实方式下,先要启动证实功能,尤其是在发送无证实包的 Peer 或发送本地服务器不能解码的证实包的 peer 发送用不适合同步的码加密的证实包时。注意,服务器可能知道很多关键字,但可能只有这些中的一个作为委托,这允许服务器实时间。另和一客户机共享关键字。在证实方式下,客户机委托服务器而不是被服务器所委托,这些都需要一定的证外,需要一些附加的参数,用于配置证实同层连接的关键字( ID )。 ntp.keys 文件则包含关键字列表和服务器所知道的关键字 ID 。因此,这里就有一个安全问题,因为关键字文件可能一定时间内不会改变,而当 Internet 的安全状态不稳定时,这一文件的内容还可能会丢失。 考虑到 NTP 三个版本兼容问题。因为当第一、二版本的实现程序收到一个第三版本服务器发来的包时,便不能做处理而丢掉它。因此和老版本进行同步是要失败的, ntpd 考虑到这一问题, ntp 可透明的给以前的 NTP 版本的客户机提供服务。在配置文件中用不同版本实现的服务器则标出其 NTP 版本,以便在不同的版本之间进行协调。 ntpd 用 tick 和 tickadj 来调整本机时钟的跳动,对频率容差违规进行处理。普通的工作站是允许 10ppm 即百万分之十的误差,若出现这一误差, NTP 将自动地对出现误差的晶振进行补偿 , 而无需进行调整。然而,对于某些平台 , 如 sun4,1,1, 这样的误差则是违规的,可用 tick 和 tickadj 进行调整。这样就能保证本机的时间取自准确的时间源,而又将本机硬件时钟的误差降到最小。 NTP 就是这样将 NTP Server 以多种模式组成遍布全网的多级网状结构,保证了国际标准时间的可靠传播,同步全网,提高了 Internet 的可靠性和准确性。 以下是 ntp.conf 的配置表: # server 的 IP 地址假设为 202.203.204.205 , 202.203.206.207 , 202.204.205.206 # peer configuration for host server 202.203.204.205 server 202.203.206.207 peer 202.204.205.206 driftfile /etc/ntp.drift statsdir \home\ntp\status\ # 记录连线状态 filegen peerstats file peerstats type day enable filegen loopstats file loopstats type day enable filegen clockstats file clockstats type day enable 其中的 server host_name 表示本机同 host_name 这台机器以 client 模式作时间矫正, peer host_name 就是以 peer 模式的方式作时间矫正 , 所以 , 就上述而言 , 本机和三台时间服务器作矫正 , 且与二台以 clientmode 的方式,一台 peer 模式。 driftfile 的用处是当 ntpd 启动后它会去计算机器内部时钟频率的误差 , 计算第一次的误差通常需要很长的时间 , 但一旦计算出来了 , 接下来的误差只要计算相对与初始值的差值就可以了 , 但若不小心在计算初始值时 ntpd 停了 , 下次启动又要花时间去重算 , 若我们在 /etc/ntp.conf 内加入这行,则 ntpd 会储存现在的值于 ntp.drift 中 , 下次启动时 , 可省下不少时间计算误差 , 所以 driftfile/etc/ntp.drift 通常都会出现在 /etc/ntp.conf 内。 |
转载于:https://blog.51cto.com/joyssue/316146