天天看點

ntpq 指令傳回“timed out, nothing received”的排查方法

多台ecs執行個體機器都能通過ntpq -p指令檢視時間同步情況,隻有其中一個執行個體使用ntpq -p指令的時候出錯:

localhost: timed out, nothing received

***request timed out

ntpq 指令傳回“timed out, nothing received”的排查方法

1.分析對比了正常和非正常顯示的主機中/etc/ntp.conf的配置檔案,結果相同,排除ntp指令本身以及配置的問題

2.直接通過strace  ntpq -p 檢視指令執行過程如下

ntpq 指令傳回“timed out, nothing received”的排查方法

結果顯示,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”的結果一緻

ntpq 指令傳回“timed out, nothing received”的排查方法

通過分析對比測試

因為開啟了ipv6 ,預設ntpq 先走ipv6的通道,而ecs  linux 預設無法直接通路ipv6位址,是以會通路逾時

關閉ipv6 後,再重新執行ntpq -p 顯示正常

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'

/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