ntpq错误"Request timed out"排查
问题
线上有部分服务器上执行 ntpq -np
提示错误:
注意:如果提示
ntpq: read: Connection refused
则表明服务器没有启动ntpd
服务
仔细对比了正常服务器和异常服务器,差异如下:
软件版本 | 正常服务器 | 异常服务器 |
操作系统 | RHEL 5.7 | RHEL 6.2 |
ntp版本 | ntp-4.2.2p1-18.1 | ntp-4.2.4p8-2.1 |
ntpd.conf
配置
ntpd.conf
配置/etc/ntpd.conf
配置文件
ntpd.conf
简单解析
ntpd.conf
简单解析driftfile /var/lib/ntp/drift
设置drift
(偏移)文件位置,这个偏移文件只包含一个在每次系统或服务启动时用于调整系统时钟频率的值。这个drift
文件是用来存储系统运行在自己名义频率(nominal frequency)和使用UTC同步保留的所需频率之间的频率偏差。如果这个文件存在,这个drift
文件包含的值就会在系统启动时读取并用于矫正时钟源。使用drift
文件可已降低达到稳定和精确时钟所需的时间。这个值是计算出来的,并且这个文件每个小时都会被ntpd
所替换。由于这个drift
文件是由ntpd
进行更新,所以必须对ntpd
这个目录可以读写。
访问控制
restrict default
表示没有明确允许则禁止访问任何内容
ntpd.conf
配置中restrict default ignore
在不同版本差异
ntpd.conf
配置中restrict default ignore
在不同版本差异验证方法:
也输出错误显示localhost: timed out, nothing received
解析:
参考 'ntpq> peers' gives error "Request timed out" after upgrading to ntp-4.2.6p5 package :早期ntp
软件包(例如RHEL 5
)中 restrict default ignore
只限制 IPv4
。这也是为何早期版本配置中会有两行restrict default
和restrict -6 default
分别用来配置IPv4和IPv6.
不过在CentOS 5上测试,即使操作系统没有启用IPv6,但是
restrict -6 default
依然不会产生影响。
在早期版本中 restrict default
只限制 IPv4,而 restrict -6 default
则没有生效,所以配置了这两行都没有导致ntpd
运行异常。
但是升级到RHEL 6.5
之后(ntp版本升级到 4.2.4
),这个restrict default
配置行将同时限制IPv4和IPv6。
对于很多部署安装,系统管理员会不经意地关闭IPv6支持,此时就会导致 restrict default
和 restrict -6 default
这样隐式和显式针对IPv6的配置出现异常查询。
解决的方法是修正ntp.conf
配置,去除不需要且影响运行的IPv6相关配置,并显式指定只使用IPv4,即将原配置
修改成
然后重启ntpd
服务
再进行NTP查询就能够正常工作
参考
Last updated