谁的锅?一个 ping 案例

简介:

昨天一个同事向我反馈了一个问题,虽然最后分析出和我们服务没关系,但我觉得特别有意义,特此分享给大家。当时反馈电信用户连接我们的 pop 服务有异常,听到问题后,在我的阿里云 ECS 上ping了下,正好发现连接到电信 vip,如下图:

106d0f6da36be9d3b8fef988d9faa91e1db18d7b

奇怪的是第一帧到第二帧之间特别慢(大概有15秒),但是 ping 命令整体显示的连接速度却很快,平均每一个ping的响应只有15ms,开始猜测是不是 ping 工具的内部工作机制导致的,ping 了下其他网站却非常快,不管三七二十一,先使用 tcpdump 抓个包,打算排除到 vip 的网络问题:

$ tcpdump -s 0 -i eth1 host 49.7.36.125 -w 11-17-ping1.pcap

关键输出如下:

886e50ac8ec161984134e3f7506d4ab7534843b5

可见每一对icmp包(ping背后就是icmp协议)的请求和响应非常快,基本排除了网络问题,但第2个包后15秒后才有第三个包,这让人感觉非常奇怪。

为了进一步寻找灵感,我运行了一个 strace 命令,如下:

$ strace -e trace=network -o 11-17-1.log -Tt ping pop3.sina.net -c 2

其中输出截图:

19bee48c5ccf9b2ae71b1559259674fab95e4e86

进一步验证每一对的icmp包请求响应是非常快的。但发现了一些奇怪的输出,如下图:

3849d49523a07a81fe447c0b32698df3f61bbd3c

虽然输出很多,但可以看出主要是 DNS 解析花了很长时间,其中 10.202.72.118 和 10.202.72.116 是阿里云的 local DNS,也就是说 ping pop3.sina.net 的时候,需要通过 local DNS 解析出它的 ip 地址 49.7.36.125。

为了进一步验证是 DNS 解析的问题,我又运行了下列命令:

$ strace -e trace=network -o 11-17-2.log -Tt ping 49.7.36.125 -c 2

输出非常快速,而且输出的内容也非常少(去除了很多 DNS 网络调用),从而进一步确认了 DNS 解析的问题,那是阿里云 local DNS 的问题还是我们公司 DNS 域名服务器的问题?我又测试了下:

$ strace -e trace=network -o 11-17-3.log -Tt ping www.baidu.com -c 2

运行非常快速,说明是公司 DNS 域名服务器的问题?还是 ping 内部工作机制的问题?我又单独运行了两个命令,主要抓取 DNS 解析:


$ tcpdump -s 0 -i eth0 port 53 -w 11-17-dns2.pcap #抓 ping pop3.sina.net 包
$ tcpdump -s 0 -i eth0 port 53 -w 11-17-dns3.pcap #抓 dig -t a pop3.sina.net 包

第二条命令输出很简单,如下图:

544e37d7db17edfeb602c79e8554ef18d549d3e9

说明 dig 解析 pop3.sina.net 非常快。

第一条命令输出很复杂,ping 内部在进行域名解析的时候遇到了很多问题。最后我将local dns 改为了 8.8.8.8,不管是ping还是dig,速度都非常快。

到底是谁的锅呢?阿里云local dns?公司 dns 服务器?ping 内部dns解析机制?可以一起讨论讨论。


原文发布时间为:2018-11-27

本文作者:虞大胆

本文来自云栖社区合作伙伴“高效运维”,了解相关信息可以关注“高效运维”。

相关文章
|
8月前
|
网络协议 应用服务中间件 Linux
硬核图解!断网了,还能ping通 127.0.0.1 吗?为什么?
硬核图解!断网了,还能ping通 127.0.0.1 吗?为什么?
115 0
硬核图解!断网了,还能ping通 127.0.0.1 吗?为什么?
|
11月前
|
网络协议 应用服务中间件 nginx
面试官:断网了,还能 ping 通 127.0.0.1 吗? 下
面试官:断网了,还能 ping 通 127.0.0.1 吗? 下
|
11月前
|
消息中间件 网络协议 JavaScript
面试官:断网了,还能 ping 通 127.0.0.1 吗? 上
面试官:断网了,还能 ping 通 127.0.0.1 吗? 上
|
缓存 网络协议 Unix
【网络篇】第十八篇——ping的工作原理
【网络篇】第十八篇——ping的工作原理
【网络篇】第十八篇——ping的工作原理
|
人工智能 文字识别 网络协议
关于我尝试抓包微信失败后想到的新方法居然和奥特曼有关~
关于我尝试抓包微信失败后想到的新方法居然和奥特曼有关~ 以前 微信网页版 还可以登录的时候,我们还可以使用 python 帮助我们实现 自动化操作,调用各种各样的 API ,做做机器人啥的 ,但是现在呢~ 微信网页版 好像不开放了😐 扫码登录都会出现下面的画面 😵 来到之前 很火的 python 库 wxpy, 我看到下面这个场景, 果然也是一片哀嚎 哈哈哈 wireshark 抓包 于是我做了个大胆的决定,尝试用 wireshark 去抓取微信发出的数据包~ (我实在太天真了!🙃) 在电脑上打开微信,参考下面三次握手的图~ 可以看到这里就已经 发出了这么多信息 我晕
253 0
|
域名解析 缓存 网络协议
做了这么久IT,DNS懂了吗?
做了这么久IT,DNS懂了吗?
118 0
做了这么久IT,DNS懂了吗?
|
网络协议 网络架构
ICMP 是个啥破玩意?(一)
ICMP 的全称是 Internet Control Message Protocol(互联网控制协议),它是一种互联网套件,它用于IP 协议中发送控制消息。也就是说,ICMP 是依靠 IP 协议来完成信息发送的,它是 IP 的主要部分,但是从体系结构上来讲,它位于 IP 之上,因为 ICMP 报文是承载在 IP 分组中的,就和 TCP 与 UDP 报文段作为 IP 有效载荷被承载那样。
ICMP 是个啥破玩意?(一)
|
网络协议 网络架构
ICMP 是个啥破玩意?(三)
ICMP 的全称是 Internet Control Message Protocol(互联网控制协议),它是一种互联网套件,它用于IP 协议中发送控制消息。也就是说,ICMP 是依靠 IP 协议来完成信息发送的,它是 IP 的主要部分,但是从体系结构上来讲,它位于 IP 之上,因为 ICMP 报文是承载在 IP 分组中的,就和 TCP 与 UDP 报文段作为 IP 有效载荷被承载那样。
ICMP 是个啥破玩意?(三)
|
监控 测试技术 定位技术
LoadRunner学习知多少--IP欺骗使用
使用IP欺骗功能时,需要将系统防火墙,杀毒软件关闭(如果有影响的话)   一、为什么要设置IP欺骗 1、 当某个IP的访问过于频繁,或者访问量过大时,服务器会拒绝访问请求,这时候通过IP欺骗可以增加访问频率和访问量,以达到压力测试的效果。
1897 0