首先我们对于默认的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来做authentication,这里就不详细介绍了
NTPD服务端设置
(1)确认NTPD服务已经开启,时区设置正确,如有问题参见本章3、4、5、6条的描述。
(2)确认NTPD能够作为客户端从上级NTP服务器获取时间,如有问题参见本章3、4、5、6条的描述。
(3)NTPD服务的主要配置文件默认是/etc/ntp.conf。
(4)设置配置文件中的“restrict”项,主要用于控制客户端对服务器的访问,一般设置如下:
restrict default kod nomodify notrap nopeer noquery
#禁用全部地址对NTPD各服务的访问
restrict 127.0.0.1
#允许本机地址(127.0.0.1)对NTPD各服务的访问
restrict xx.xx.xx.xx mask xx.xx.xx.xx nomodify
#允许设置的可信任地址段对NTPD各服务的访问,但不允许此地址段内客户端修改NTPD服务器时间(nomodify)。
(5)设置配置文件中的“server”项,主要用于NTPD的上级服务器、本机时钟的同步,以及时钟的层次stratum:
server 127.127.1.0
NTPD把本地主机的时钟也看作外部时钟源来处理,分配的地址是127.127.1.0
fudge 127.127.1.0 stratum 1
#设置本地时钟源的层次为1,这样如果NTPD服务从本地时钟源获取时间的话,NTPD对外宣布的时间层次为2。
server 10.138.1.240
#设置上级时钟源为10.138.1.240,上级时钟源的层次是1,NTPD从上级时钟源获取到时间,对外宣布的时间层次为2。只有在上级时钟源失效时,NTPD才会使用127.127.1.0的本地时钟。
(6)配置完毕,重启NTPD服务,使配置更改生效。
11、NTPD服务调试过程遇到的问题
NTP时间同步失败的原因很多,但排除配置不当和外部因素后,NTP协议本身的特性也需要考虑到,在Linux NTPD服务调试的过程中,遇到以下问题:
(1)NTPD服务刚启动后,客户端无法同步时间,在过了几分钟之后,客户端才能成功成功同步时间。
(2)网络上存在多个NTP服务器时,客户端单独只从A服务器或B服务器同步时间都能成功,但如果把从A服务同步时间的客户机重新设置,改为从B服务器同步,很有可能不能成功同步时间,重启客户机上的同步服务之后,发现客户机又能成功从B服务器同步了。
层的概念
这些问题主要涉及到NTP的层(stratum)的概念,顶层是1,值为0时表示层数不明,层的值是累加的,比如NTP授时方向是A-〉B-〉C,假设A的stratum值是3,那么B从A获取到时间,B的stratum置为4,C从B获取到时间,C的值被置为5。一般只有整个NTP系统最顶层的服务器stratum才设为1。
NTP同步的方向是从stratum值较小的节点向较大的节点传播,如果某个NTP客户端接收到stratum比自己还要大,那么NTP客户端认为自己的时间比接受到的时间更为精确,不会进行时间的更新。
对于大部分NTP软件系统来说,服务启动后,stratum值初始是0,一旦NTP服务获取到了时间,NTP层次就设置为上级服务器stratum+1。对于具备卫星时钟、原子钟的专业NTP设备,一般stratum值初始是1。
NTPD的运行过程
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,客户端接收后,成功进行时间更新。
对应的/etc/ntp.conf配置项如下:
server 127.127.1.0
#NTPD把本地主机的时钟也看作外部时钟源来处理,分配的地址是127.127.1.0
fudge 127.127.1.0 stratum 1
#设置本地时钟源的层次为1,这样如果NTPD服务从本地时钟源获取时间的话,NTPD对外宣布的时间层次为2。
位置 | 标志 | 含义 |
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的分布情况。简单地说这个数值的绝对值越小,主机的时间就越精确 |
本文转自 zfno11 51CTO博客,原文链接:http://blog.51cto.com/zfno111/1944936