閱讀252 返回首頁    go 阿裏雲 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  深入剖析阿裏雲推薦引擎——新架構,新體驗