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

1.分析對比了正常和非正常顯示的主機中/etc/ntp.conf的配置檔案,結果相同,排除ntp指令本身以及配置的問題
2.直接通過strace ntpq -p 檢視指令執行過程如下
結果顯示,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”的結果一緻
通過分析對比測試
因為開啟了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