首页/网络/抓包与流量分析速查/tcpdump 抓 NTP 时间同步

tcpdump 抓 NTP 时间同步

抓 UDP 123 端口 NTP 报文;时间漂移、服务不可达、认证失败(v4 扩展字段)等问题都可从请求/响应方向先判断。

抓时间同步流量

时间同步使用 UDP 123 端口,抓它的报文可以判断同步是否正常进行:请求是否发出、服务器是否响应、响应是否稳定到达。时间漂移、同步失败、以及跨机日志时间对不上,都可以先从这条流量入手判断,避免在错误的方向上花时间。

基本信息

适用平台Linux / macOS / BSD 上的 tcpdump
语法udp port 123 [and host <服务器>]
端口说明服务端口固定,客户端源端口可能为 123 或高位端口
常用选项-vv 展开协议字段、-nn 不解析名字
相关工具chrony 或 ntp 的查询命令

典型使用场景

  • 确认时间同步服务是否真的在与服务器交互
  • 排查跨机日志时间不一致,判断时钟是否漂移
  • 验证出向策略是否放行同步流量
  • 评估同步周期是否满足业务精度要求
  • 定位同步失败是本地服务问题还是网络问题

常用示例

常用示例
tcpdump -i eth0 -nn -vv 'udp port 123' -c 10                  # 抓同步流量并展开字段
tcpdump -i any -nn 'udp port 123 and host 203.0.113.9' -c 20  # 限定服务器
tcpdump -i eth0 -nn 'udp port 123' -c 50 -w /tmp/ntp.pcap     # 落盘留档

现象与处理

现象含义处理方向
只有请求没有响应服务器不可达或被拦截核对服务器地址与出向策略
请求响应周期正常同步在进行确认偏差是否收敛
响应间隔很长同步周期配置较大按业务精度要求调整
完全没有流量同步服务未运行检查服务状态
抓包时间戳来自抓包机自身时钟,跨机对比时间前先确认两台机器的时钟源是否一致。
同步失败会让时间戳整体偏移,基于时间做因果分析前先确认时钟可靠。

补充要点

  • 把同步流量与同步服务的状态输出结合看,能区分网络问题与服务问题
  • 多台服务器配置时逐台核对响应情况,避免只验证其中一台
  • 时间偏差达到秒级时,日志关联分析会明显失真,需优先处理
  • 把同步流量的抓包与日志一起归档,便于解释时间相关问题
虚拟化环境中宿主机时钟会影响虚机时间表现,排查时把宿主机一并纳入范围。

易错点

  • 用本机时钟判断同步是否正常:判断依据本身就依赖可靠时钟,容易自证循环
  • 忽略出向策略只查服务端:请求没发出时服务端自然没有响应
  • 把同步流量的缺失当作网络问题,实际是本地服务未运行

数据来源与参考

  • man 8 pcap-filter
  • RFC 5905(NTPv4)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌