美文网首页程序员@IT·互联网
谁的锅?一个ping案例

谁的锅?一个ping案例

作者: 虞大胆的叽叽喳喳 | 来源:发表于2018-11-23 22:15 被阅读28次

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

    图1

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

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

    关键输出如下:

    图2

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

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

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

    其中输出截图:

    图3

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

    图4

    虽然输出很多,但可以看出主要是 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 包 
    

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

    图5

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

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

    到底是谁的锅呢?阿里云local dns?公司 dns 服务器?ping 内部dns解析机制?


    我的新书《深入浅出HTTPS:从原理到实战》,本书github地址是 https://github.com/ywdblog/httpsbook,大家可以一起讨论本书。本书豆瓣地址 https://book.douban.com/subject/30250772/(,如果你读了本书,还请在豆瓣写个评论。或者关注我的公众号(ID:yudadanwx,虞大胆的叽叽喳喳)。

    相关文章

      网友评论

        本文标题:谁的锅?一个ping案例

        本文链接:https://www.haomeiwen.com/subject/rdisqqtx.html