阅读252 返回首页    go 魔兽


ntpq 命令返回“timed out, nothing received”的排查方法

问题现象

多台ecs实例机器都能通过ntpq -p命令查看时间同步情况,只有其中一个实例使用ntpq -p命令的时候出错:

localhost: timed out, nothing received

***Request timed out


5cb8c10d5a74b33602bd10821eea5c4a56fca114


排查过程

1.分析对比了正常和非正常显示的主机中/etc/ntp.conf的配置文件,结果相同,排除ntp命令本身以及配置的问题

2.直接通过strace  ntpq -p 查看命令执行过程如下

d079b650de03b270feb0375bd9c427f97379830a

结果显示,AF_INET6 即IPv6 地址向外发送sendto数据超时
推测这台主机有启用Ipv6 ,默认先走的ipv6地址

验证过程

ntpq -p 如果不指定地址的话,走的是默认ntp server

1.手动指定地址,正常显示

2. ntp -4p 即指定通过ipv4 地址获取返回值,正常显示

3.ntpq  -6p  指定通过ipv6 地址获取返回值,显示和ntpq  -p 命令返回“timed out, nothing received”的结果一致
610f272885834a311cdf6a95386a3264da636bd2


通过分析对比测试
因为开启了Ipv6 ,默认ntpq 先走Ipv6的通道,而ECS  linux 默认无法直接访问ipv6地址,因此会访问超时


解决方案

关闭Ipv6 后,再重新执行ntpq -p 显示正常


临时关闭开启Ipv6的方法如下

interface-name 为eth0/eth1


 sh -c 'echo 1 > /proc/sys/net/ipv6/conf/<interface-name>/disable_ipv6'   #关闭  
 sh -c 'echo 1 > /proc/sys/net/ipv6/conf/<interface-name>/disable_ipv6'   #开启
或者关闭所有接口(包括回环接口)的Ipv6 地址
 sh -c 'echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6'

永久关闭ipv6

/etc/sysctl.conf  中添加如下参数


# 禁用整个系统所有接口的IPv6
net.ipv6.conf.all.disable_ipv6 = 1
# 禁用某一个指定接口的IPv6(例如:eth0, eth1)
net.ipv6.conf.eth1.disable_ipv6 = 1
net.ipv6.conf.eth0.disable_ipv6 = 1





最后更新:2017-06-18 21:03:18

  上一篇:go  阿里云大学发布
  下一篇:go  深入剖析阿里云推荐引擎——新架构,新体验