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

问题现象

多台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 显示正常

临时关闭开启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

时间: 2024-10-25 20:37:25

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

ssh-模拟SSH服务器,实现解析命令返回数据

问题描述 模拟SSH服务器,实现解析命令返回数据 项目中需要使用ssh的方式采集数千台设备上的数据,但是在开发环境中却没有那么多台设备供连接使用.头就想出了用Java搞一个模拟的SSH服务器的方式,搞一千多个线程来响应查询,返回数据的方式也很简单,就是直接用一个xml文件,KV的方式返回数据.目前活在我手里,悲剧的是,实现一个模拟的SSH实在是难.我查询了一些资料,包括j2ssh-fork,均不能很好滴解决.所以来求助万能的CSDN了.大家有没有见到过这种小实例呢.

mysql-Mysql命令返回&amp;amp;quot;n&amp;amp;quot; Sid错误是怎么回事??

问题描述 Mysql命令返回"n" Sid错误是怎么回事?? 系统环境:phpstudy 2013 凡是mysql命令都会返回一行信息:"n" Sid: S-1-5-21-740959277-904983777-1984901902-1000,MySQL dump命令也都会返回并输出这条信息,导致dump出来的文件无端地多了这一行无用的信息.求助这是怎么回事?是什么意思?如何消除这一行奇怪的信息? 解决方案 有人帮解答么?谢谢了 解决方案二: 等回答等回答等回答等回

vc++编程问题-串口通讯writefile输入命令,返回值仍然是输入的命令

问题描述 串口通讯writefile输入命令,返回值仍然是输入的命令 串口通讯writefile输入命令,readfile( )返回值仍然是输入的命令,串口打开正常,这是怎么回事? 解决方案 串口工具SecureCRT不能输入命令的问题

db2-Perl外部命令返回值问题

问题描述 Perl外部命令返回值问题 问题背景:用Perl直接打开db2方式执行sql 问题描述:我得到的16位的返回值,分为高8位和低8位,高8位是返回的状态,低8位是描述出现状态的原因,我可以直接得到$? >>8 这个返回值得状态的具体值 问题的点在于,这个高8位的编码依据是什么?比如我sql报错 我可以获得$?的值,在移位之前是2048,移位之后的二进制是100,我想知道这个100是怎样得来的?规则是什么? 解决方案 http://bbs.chinaunix.net/thread-418

java socket list命令-java socket 实现ftp服务器 list命令 返回数据格式

问题描述 java socket 实现ftp服务器 list命令 返回数据格式 boolean commandLIST() { try { dsocket = new Socket(remoteHost,remotePort,InetAddress.getLocalHost(),20); PrintWriter dout = new PrintWriter(dsocket.getOutputStream(),true); if(param.equals("") || param.equ

Windows Powershell 命令返回数组_PowerShell

当我们把一个命令的执行结果保存到一个变量中,可能会认为变量存放的是纯文本. 但是,事实上Powershell会把文本按每一行作为元素存为数组.如果一个命令的返回值不止一个结果时,Powershell也会自动把结果存储为数组. PS C:Powershell> $IPcfg=ipconfig PS C:Powershell> $IPcfg Windows IP Configuration Ethernet adapter Local Area Connection: Connection-spe

java-注意不要编写返回引用可变对象的访问器方法.--------要怎么证明呢

问题描述 注意不要编写返回引用可变对象的访问器方法.--------要怎么证明呢 import java.util.Date;import java.util.GregorianCalendar;public class Employee { private String name; private double salary; private Date hireDay; public Employee(String ndouble sint yearint monthint day ){ na

在Linux系统的命令行中为MySQL创建用户的方法

  这篇文章主要介绍了在Linux系统的命令行中为MySQL创建用户的方法,包括对所建用户的权限管理,需要的朋友可以参考下 要访问一个MySQL服务器,你需要使用一个用户帐号登录其中方可进行.每个MySQL用户帐号都有许多与之相关连的属性,例如用户名.密码以及权限和资源限制."权限"定义了特定用户能够在MySQL服务器中做什么,而"资源限制"为用户设置了一系列服务器资源的使用许可.创建或更新一个用户涉及到了对用户帐号所有属性的管理. 下面展示了如何在Linux中创建

ie发送ajax请求返回上一次结果的解决方法

 这篇文章主要介绍了ie发送ajax请求返回上一次结果的解决方法,需要的朋友可以参考下 问题出现原因:    1. ie下面只会建立一次 ajax 请求,将响应结果放在浏览器缓存里 下次调用该ajax请求时 从缓存里读取    get方式时,获取数据,因发送参数和地址都一致,故IE浏览器会从缓存中取,而不会去请求服务器端,而post方式因为参数的不同,不会产生这个问题    2. 火狐下面 每次激活事件 都会重新建立一次ajax请求    解决方法:    1: 在AJAX请求的页面后加个随机函