Wireshark TS | Linux 系统对时问题

问题描述

节前业务运维同事提交了一个 case ,说是部署在新业务区域的 Linux 服务器和老业务区域的 Linux 服务器无法对时,脚本里使用的是 clockdiff 命令,无法正常返回结果,而在老业务区域两台服务器之间执行命令就正常,因为跨业务区域就有问题,所以怀疑是网络或是安全上有问题,而新老区域之间并无防火墙,排除掉,遂进入疑似网络故障分析。

问题分析

拿到这样一个问题,基于经验,可以简单梳理出以下处理步骤:

  1. 新老网络环境区别;
  2. clockdiff 实现原理;
  3. 故障复现和验证;
  4. 网络抓包分析。

新老网络环境区别

老业务区域网络环境为全思科设备,由于国产化替代趋势,新业务区域网络环境为全华为设备,仅此区别,也都是传统基础路由交换环境,配置上并无任何特殊之处。如果能排除服务器或操作系统的问题,那么问题就有可能出现在思科或华为网络设备上。

clockdiff 实现原理

clockdiff 命令用于测量两个主机之间的时钟差异,具体来说 clockdiff 是使用 ICMP 时间戳报文或使用 ICMP ECHO 的 IP 时间戳选项,以 1ms 精度测量两者之间的时钟差。

bash 复制代码
使用 ICMP 时间戳报文
clockdiff 10.1.1.1

使用 ICMP ECHO 的 IP 时间戳选项
clockdiff -o 10.1.1.1

Linux clockdiff 命令参考:linux.die.net/man/8/clock...

故障复现和验证

进一步和业务运维同事明确了故障环境和现象,补充了一点说是在老业务区域下成功的两台服务器是同一网段,且命令是加参数的 -o 。 基于上述情况,临时申请了几台新老环境下的虚机服务器,用于验证。验证方式很简单,clockdiff 命令执行的成功否类似网络中的通或者不通,故障很好复现,也很方便抓包排障。

测试环境和验证结果:

执行命令 网络环境(思科) 网络环境(华为)
同网段 不同网段 同网段 不同网段
clockdiff 成功 成功 成功 成功
clockdiff -o 成功 失败 成功 成功

验证结果初步说明可能是思科区域核心网关交换机的问题,同网段二层交换机时正常,只有跨网段三层路由时有问题,而且只有加了参数 -o 也就是使用 IP 时间戳选项时有问题。

网络抓包分析

思科同网段

  1. 在虚机服务器上执行 clockdiff 成功的现象和抓包结果,如下:
bash 复制代码
[root@10-1-1-1 ~]$ clockdiff 10.1.1.2
.
host=10.1.1.2 rtt=750(187)ms/0ms delta=22ms/22ms Sun Jan 29 15:34:00 2023
[root@10-1-1-1 ~]$

clockdiff 命令 ICMP 数据包类型为 Timestamp request(Type 13)Timestamp reply (Type 14)

  1. 在虚机服务器上执行 clockdiff -o 成功的现象和抓包结果,如下:
bash 复制代码
[root@10-1-1-1 ~]$ clockdiff -o 10.1.1.2
..
host=10.1.1.2 rtt=562(280)ms/0ms delta=23ms/23ms Sun Jan 29 15:34:05 2023
[root@10-1-1-1 ~]$

clockdiff -o 命令 ICMP 数据包类型实际为普通的 Echo requestType 8)Echo reply (Type 0),区别是在 IPv4 Options 上使用 Time Stamp。

思科不同网段

在虚机服务器上执行 clockdiff 成功和 clockdiff -o 失败的现象,如下:

bash 复制代码
[root@10-1-1-1 ~]$ clockdiff 10.2.1.1
.
host=10.2.1.1 rtt=750(187)ms/0ms delta=1ms/1ms Sun Jan 29 15:34:16 2023
[root@10-1-1-1 ~]$ clockdiff -o 10.2.1.1
10.2.1.1 is down
[root@10-1-1-1 ~]$ 

从抓包结果来说:

  1. clockdiff 命令不同网段执行没有区别, ICMP 数据包类型仍为 Timestamp request(Type 13)Timestamp reply (Type 14),结果成功;
  2. clockdiff -o 命令不同网段执行结果失败 ,源服务器抓包可以看到 ICMP Echo request (Type 8)发出,但是在目的服务器上并没有抓到任何请求包,因此判断为思科区域核心网关交换机丢包

问题总结

经测试环境实际验证,判断为思科区域核心网关交换机疑似不识别 IPv4 Options 里的 TimeStamp 字段,从而造成丢包。后向原厂开 case 沟通,确认说是 N9K 网关不支持 IPv4 Options 里的时间戳的 standard timestamps,导致丢弃,同时查询内部信息,目前暂没有计划支持,也没有相关的支持配置命令,Over。

参考:

  1. linux.die.net clockdiff 命令参考页面,还有一句貌似相关的注释:Some nodes (Cisco) use non-standard timestamps, which is allowed by RFC, but makes timestamps mostly useless.
  2. RFC 791 Options: variable,The options may appear or not in datagrams. They must be implemented by all IP modules (host and gateways). What is optional is their transmission in any particular datagram, not their implementation.
相关推荐
m0_465215796 小时前
TCP & UDP Service Model
服务器·网络·tcp/ip
esmember6 小时前
电路研究9.2.6——合宙Air780EP中HTTP——HTTP GET 相关命令使用方法研究
网络·网络协议·http·at指令
weisian1519 小时前
消息队列篇--通信协议篇--STOMP(STOMP特点、格式及示例,WebSocket上使用STOMP,消息队列上使用STOMP等)
websocket·网络协议
jax不摆烂11 小时前
浅谈TCP/IP
网络·tcp/ip
追风赶月、11 小时前
【网络】传输层协议UDP
网络·网络协议·udp
霸王蟹12 小时前
http和https的区别?
网络·笔记·网络协议·学习·http·https
精通HelloWorld!12 小时前
使用HttpClient和HttpRequest发送HTTP请求
java·spring boot·网络协议·spring·http
泪不是Web妳而流13 小时前
BurpSuite抓包与HTTP基础
网络·经验分享·网络协议·安全·http·网络安全·学习方法
ybq1951334543115 小时前
javaEE-6.网络原理-http
网络·网络协议·http
我的青春不太冷16 小时前
《深入理解HTTP交互与数据监控:完整流程与优化实践》
网络·经验分享·科技·网络协议·学习·http·架构