Linux NTP服务配置


一、NTP对时原理

NTP同步的方向是从stratum值较小的节点向较大的节点传播,如果某个NTP客户端接收到stratum比自己还要大,那么NTP客户端认为自己的时间比接受到的时间更为精确,不会进行时间的更新。

对于大部分NTP软件系统来说,服务启动后,stratum值初始是0,一旦NTP服务获取到了时间,NTP层次就设置为上级服务器stratum+1。对于具备卫星时钟、原子钟的专业NTP设备,一般stratum值初始是1。

NTPD启动后,stratum值初始是0,此时NTPD接收到NTP请求,回复stratum字段为0的NTP包,客户端接收后,发现stratum字段无效,拒绝更新时间,造成时间更新失败。

几分钟后,NTPD从上级服务器获取到了更新,设置了正确的stratum,回复stratum字段为n+1的NTP包,客户端接收后,确认stratum有效,成功进行时间更新。

在NTPD上级服务器不可用的情况下,NTPD将本机时钟服务模拟为一个上级NTP服务器,地址使用环回127.127.1.0,服务启动几分钟后,NTPD从127.127.1.0更新了时钟,设置了有效的stratum,客户端接收后,成功进行时间更新。


二、安装NTP软件包

检查NTP服务包已经安装

# rpm -qa | grep ntp

如果没有安装则需要手动安装

# rpm -ivh ntp-4.2.2p1-5.el5.rpm


三、修改配置文件vi /etc/ntp.conf

server字段为授时服务端地址或主机名,NTP对时时从该文件中依次读取,只有失败时才会使用后面的服务器。

server 210.72.145.44     #这是中国国家授时中心的IP
server 0.uk.pool.ntp.org
server 1.uk.pool.ntp.org

可以使用prefer设置某服务器为优先服务器

server time-nw.nist.gov prefer

也可以将本地时钟作为外部时钟源来处理,地址用127.127.1.0,stratum为时间层次,如下将本地时钟源的层次设置为1,如果NTPD服务从本地时钟源获取时间的话,NTPD对外宣布的时间层次为2。

server 127.127.1.0
fudge  127.127.1.0 stratum 1


restrict参数用来进行权限控制,格式为

restrict IP地址 子网掩码 参数

示例:

restrict 192.168.0.0 mask 255.255.0.0 nomodify

其中 IP 可以是IP地址,也可以是 default ,指所有IP 

参数有以下几个:

ignore:拒绝所有类型的NTP的连线;
nomodfiy:用户端不能使用NTPC与ntpq这两支程式来修改伺服器的时间参数,但使用者端仍可透过这部主机来进行网路校时的;
noquery:用户端不能够使用ntpq,NTPC等指令来查询发表伺服器,等于不提供的NTP的网路校时幂;
notrap:不提供陷阱这个远端事件邮箱(远程事件日志)的功能。
notrust:拒绝没有认证的用户端。
注意:如果参数没有设定,那就表示该IP或子网不受任何限制!

在实际配置时,首先我们对于默认的client拒绝所有的操作

restrict default kod nomodify notrap nopeer noquery

然后允许本机地址一切的操作

restrict 127.0.0.1

最后我们允许局域网内所有client连接到这台服务器同步时间.但是拒绝让他们修改服务器上的时间

restrict 192.168.1.0 mask 255.255.255.0 nomodify

把这三条加入到/etc/ntp.conf中就完成了我们的简单配置. NTP还可以用key来做认证,这里就不详细介绍了

driftfile的作用

每一个系统时钟的频率都有小小的误差,这个就是为什么机器运行一段时间后会不精确. NTP会自动来监测我们时钟的误差值并予以调整.但问题是这是一个冗长的过程,所以它会把记录下来的误差先写入driftfile.这样即使你重新开机以后之前的计算结果也就不会丢失了


四、NTP服务启动

执行ntpq -p或watch ntpq -p命令查看与上级NTP对时结果

watch ntpq -p
Every 2.0s: ntpq -p                                  Sat Jul  7 00:41:45 2007
     remote           refid      st t when poll reach   delay   offset  jitter
===========================================================
+193.60.199.75   193.62.22.98     2 u   52   64  377    8.578   10.203 289.032
*mozart.musicbox 192.5.41.41      2 u   54   64  377   19.301  -60.218 292.411

参数解释

位置 标志 含义
remote之前 * 响应的NTP服务器和最精确的服务器
+ 响应这个查询请求的NTP服务器
blank(空格) 没有响应的NTP服务器
列表上方 remote 响应这个请求的NTP服务器的名称
refid NTP服务器使用的更高一级服务器的名称
st 正在响应请求的NTP服务器的级别
when 上一次成功请求之后到现在的秒数
poll 本地和远程服务器多少时间进行一次同步,单位秒,在一开始运行NTP的时候这个poll值会比较小,服务器同步的频率大,可以尽快调整到正确的时间范围,之后poll值会逐渐增大,同步的频率也就会相应减小
reach 用来测试能否和服务器连接,是一个八进制值,每成功连接一次它的值就会增加
delay 从本地机发送同步要求到ntp服务器的往返时间
offset 主机通过NTP时钟同步与所同步时间源的时间偏移量,单位为毫秒,offset越接近于0,主机和ntp服务器的时间越接近
jitter 统计了在特定个连续的连接数里offset的分布情况。简单地说这个数值的绝对值越小,主机的时间就越精确


五、客户端对时

使用如下命令

ntpdate 172.30.218.114

将其写入crontab,如

30 8 * * * root /usr/sbin/ntpdate 172.30.218.114; /sbin/hwclock -w

你可能感兴趣的:(linux,ntp)