美文网首页already网络
【ping】ping/dig/nslookup 三件套

【ping】ping/dig/nslookup 三件套

作者: Bogon | 来源:发表于2022-06-30 00:08 被阅读0次

    有时候解决问题经验、手段、工具都得兼备,才能快速搞定。

    ping/dig/nslookup 三件套很有用。

    比如程序员人人会用 ping 但是用ping来定位 MTU大小估计会的就不到10%了,但是关键时候省掉了一大堆拉通扯皮的时间,能决胜千里之外。

    如图从你的业务SocketTimeout,推断出别人的MTU设置错了 。

    重传原因何其多,为啥就直接得出MTU错了?

    这次是有经验了,第一次碰到是发个大SQL就卡住了(limit 1)就OK,但没想到MTU,于是抓包发现的。后来就有经验了。当然还有hash线路不一样也导致偶发性的不通,这也有套路定位,总之经验很重要,35岁了就不重要了,没人要了。

    计算机网络课本里说 mtu 是会拆包,并不会丢包。为啥在这里是发生了丢包?

    如果大于mtu会进行拆包的是发送端,对于接收端如果收到的包大于其mtu就会进行丢包。

    小文件没问题,大文件丢数据的时候用过这个技巧,一般都是虚拟化导致的。

    网络链路MTU测试 

    Linux:

    ping  -s 1449   -M  do  www.example.com

    Windows:

    ping  -l  1500   -f   www.example.com

    icmp header: 8 bytes

    ip header: 20 bytes

    tcp header: 20 bytes

    有个环境死活压不上去,上节点ping了一下前端LVS ip 发现压力大的时候rt抖动厉害,停掉压力rt稳定。

    然后推动LVS检查,一看CPU 100%了。

    为啥没监控?因为白屏监控数据就是错的。

    目标服务器 如 cpu使用率100% 了,那必然协议栈处理不过来 ping 包,就显得 rt 过长了。

    若干年前曾经根据我方调用超时,用dig命令可以发现对方启用了GSLB,用wget不指定协议时超慢,指定ipv4协议时超快,最终证明对方的设备默认启用了ipv6但对于不同域名却又没有配置ipv6地址,以至于在ipv4介入之前,总是要先等待ipv6 DNS lookup超时。

    Slow-DNS-Lookup问题:默认启用了 ipv6-dns-lookup 以至于必须等待超时

    https://blog.csdn.net/chuanxinhu2060/article/details/100961573

    客户系统做过一次网络变更后,大量用户反馈OA系统消息收发慢。

    从移动端日志看:

    dnsEnd [use:60ms] [domainName:www.example.com] [inetAddressList:[www.example.com/240e:600:4a00::75, www.example.com/xx.xx.xx.xx]]

    dns解析返回两个ip,第一个是ipv6的 第二个是ipv4的,客户端大概率会用ipv6的那个,但ipv6的那个ip地址是连不上的,必超时,选到ipv4的ip的话就没问题。

    看样子是从这次域名解析出问题后,配置了IPv6的解析,做了解析出的问题。

    #  dig +trace +nodnssec time.geekbang.org

    在容器中运行curl时,发现了都要5秒的延时,抓包显示,域名解析服务器访问和目标服务器连接都很正常,但是curl在发起域名解析后,硬是等待6秒后才执行服务请求。 

    查了下资料,发现如果系统开启了ipv6支持,则curl优先进行ipv6的域名解析,失败后才进行ipv4的解析。

    解析失败重试时间被限制在5秒,于是就出现了这个延时。

    决方法:

    # 强制要求使用ipv4地址

    curl   -4   https://www.wxample.com

    DNS 解析时快时慢,我该怎么办?

    https://www.jianshu.com/p/5504611a1c3e

    全球投票最受欢迎又不常见的命令第二名:python -m SimpleHTTPServer 8080 ,经常共享文件、yum仓库等、测试。

    python -m SimpleHTTPServer 8080

    python3 -m http.server 8080

    python -m json.tool  file.json

    参考

    plantegg

    https://plantegg.github.io

    GSLB概要和实现原理

    https://www.jianshu.com/p/77064fde5787

    全局负载均衡与CDN网络简介

    https://blog.csdn.net/u010340143/article/details/9062213

    Use DIG command to query with client subnet GSLB objects

    https://clouddocs.f5.com/training/community/dns/html/class4/module1/lab3.html

    GSLB概要和实现原理

    http://chongit.github.io/2015/04/15/GSLB%E6%A6%82%E8%A6%81%E5%92%8C%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86/%22

    Slow DNS on Linux fix (ipv6/ipv4 conflict)

    https://aarvik.dk/disable-ipv6/

    Slow Responses with curl and wget on CentOS 7

    https://serverfault.com/questions/858649/slow-responses-with-curl-and-wget-on-centos-7

    ubuntu – curl和wget尝试ipv6连接

    https://www.qedev.com/linux/206224.html

    ipv4/6冲突引发的血案:CentOS7使用curl和wget反应都很慢原因及方案

    https://www.jianshu.com/p/4109f42059af

    Prefer A (IPv4) DNS lookups before AAAA(IPv6) lookups

    https://askubuntu.com/questions/32298/prefer-a-ipv4-dns-lookups-before-aaaaipv6-lookups

    Slow-DNS-Lookup问题:默认启用了 ipv6-dns-lookup 以至于必须等待超时

    https://blog.csdn.net/chuanxinhu2060/article/details/100961573

    就是要你懂抓包--WireShark之命令行版tshark

    https://plantegg.github.io/2019/06/21/%E5%B0%B1%E6%98%AF%E8%A6%81%E4%BD%A0%E6%87%82%E6%8A%93%E5%8C%85--WireShark%E4%B9%8B%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%89%88tshark

    网络抓包常用命令

    https://plantegg.github.io/2022/01/01/%E7%BD%91%E7%BB%9C%E6%8A%93%E5%8C%85%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4

    DNS 解析时快时慢,我该怎么办?

    https://www.jianshu.com/p/5504611a1c3e

    程序员如何学习和构建网络知识体系?

    https://plantegg.github.io/2020/05/24/%E7%A8%8B%E5%BA%8F%E5%91%98%E5%A6%82%E4%BD%95%E5%AD%A6%E4%B9%A0%E5%92%8C%E6%9E%84%E5%BB%BA%E7%BD%91%E7%BB%9C%E7%9F%A5%E8%AF%86%E4%BD%93%E7%B3%BB

    相关文章

      网友评论

        本文标题:【ping】ping/dig/nslookup 三件套

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