• 网络问题定位工具记录


    网络问题定位工具记录

    老王内网发了一篇使用各种工具定位网络丢包问题的文章。

    里面的工具我发现都没用过。。。惭愧。。。赶紧补充linux命令知识。

    linux的nstat命令是做什么的?输出格式是什么意思?

    nstat是一个Linux命令行工具,用于显示网络接口的统计信息,包括TCP、UDP、IP和ICMP协议的数据。

    该命令的输出格式如下:

    [root@wemeet-wemeet-together-service-stke-formal-0 /app]# nstat
    #kernel
    IpInReceives                    551070             0.0
    IpInDelivers                    551006             0.0
    IpOutRequests                   296793             0.0
    IpReasmReqds                    82                 0.0
    IpReasmOKs                      18                 0.0
    IcmpInMsgs                      170                0.0
    IcmpInEchos                     170                0.0
    IcmpOutMsgs                     170                0.0
    IcmpOutEchoReps                 170                0.0
    

    其中,每个字段的含义如下:

    • IpInReceives:接收到的IP数据包数量
    • IpInDelivers:已成功交付的IP数据包数量
    • IpOutRequests:发送的IP数据包数量
    • TcpActiveOpens:主动打开的TCP连接数量
    • TcpPassiveOpens:被动打开的TCP连接数量
    • TcpCurrEstab:当前建立的TCP连接数量
    • UdpInDatagrams:接收到的UDP数据包数量
    • UdpOutDatagrams:发送的UDP数据包数量
    • UdpNoPorts:无法处理的UDP数据包数量(即找不到对应的进程)。

    这些统计信息对于网络性能分析和故障排除非常有用。

    所以文章中第一个命令

    shell> watch -d -n1 "nstat -a | grep -i -E  'drop|error|fail|loss|overflow'"
    

    意思就是获取所有的异常连接。

    [root@wemeet-wemeet-together-service-stke-formal-0 /app]# nstat -a | grep -i -E  'drop|error|fail|loss|overflow'
    IcmpInErrors                    5                  0.0
    TcpAttemptFails                 2311127            0.0
    TcpExtTCPLossUndo               15515              0.0
    TcpExtTCPSackFailures           1164               0.0
    TcpExtTCPLossFailures           2204               0.0
    TcpExtTCPLossProbes             6558920            0.0
    TcpExtTCPLossProbeRecovery      28662              0.0
    TcpExtTCPSackRecoveryFail       78405              0.0
    

    这几个网络接口数据信息是什么意思?

    • IcmpInErrors:接收到的ICMP错误报文数量。
    • TcpAttemptFails:TCP连接尝试失败的次数,通常由于目标端口未打开或网络拥塞等原因。
    • TcpExtTCPLossUndo:TCP重传数据包成功到达目标端口,但之前已经由于超时或拥塞丢失,因此被视为“撤销”丢失的数据包数量。
    • TcpExtTCPSackFailures:TCP SACK(选择性确认)失败的次数,SACK是一种用于减少丢包的技术。
    • TcpExtTCPLossFailures:TCP重传数据包失败的次数,这通常是由于网络延迟或拥塞导致的。
    • TcpExtTCPLossProbes:TCP检测到丢失的数据包数量,通常用于检测网络拥塞或丢包。
    • TcpExtTCPLossProbeRecovery:TCP检测到丢失的数据包恢复的次数。
    • TcpExtTCPSackRecoveryFail:TCP SACK恢复失败的次数。

    在文章中,通过这个工具看出,服务器的 TcpExtTCPLossProbes 指标比较大。

    TcpExtTCPLossProbes 是 Linux 内核中的一个 TCP 相关指标,用于记录 TCP 发送方因为丢包而触发的重传次数。如果一个服务器上的 TcpExtTCPLossProbes 指标比较大,说明该服务器上的 TCP 连接存在丢包现象,TCP 发送方为了保证数据可靠性会不断进行重传,从而导致了该指标的增加。

    TCP 丢包可能由多种原因引起,例如网络拥塞、链路故障、数据包篡改等。在排查该问题时,可以通过检查服务器上的系统日志或 TCP 报文捕获数据包进行进一步分析,以确定具体的原因,并采取相应的措施进行修复。例如,可以尝试优化网络拓扑、调整 TCP 参数等方式来缓解该问题。

    文章的中间是使用bcc工具来分析重试的端口,最终确认是80端口。

    然后用ngrep工具来抓取某个ip的所有请求

    ngrep工具是用来做什么的?

    ngrep 是一种网络分析工具,用于捕获和分析网络数据包。它可以通过指定匹配规则来筛选和捕获特定的数据包,以便于对网络流量进行监控和分析。ngrep 支持的匹配规则包括基于字符串、正则表达式、16进制值等多种方式。同时,ngrep 还提供了许多选项和过滤器,可以用于控制输出、限制捕获数据包的数量、过滤掉不感兴趣的数据包等。

    ngrep 工具常用于网络故障排查、安全监控、流量分析、协议分析等场景。例如,可以使用 ngrep 来捕获某个应用程序所发送和接收的数据包,以便于了解应用程序的行为和性能瓶颈;也可以使用 ngrep 来检测和分析网络攻击行为,例如检测恶意软件的行为、分析网络钓鱼攻击等。

    ngrep 抓取目标ip为1.2.3.4的所有http请求,如何写命令行?

    可以使用如下命令行来抓取目标 IP 为 1.2.3.4 的所有 HTTP 请求:

    ngrep -q -W byline 'Host: ' 'tcp and dst host 1.2.3.4 and tcp dst port 80'
    

    这个命令使用了 -q 参数来关闭详细输出,并使用了 -W byline 参数将每个匹配的行分开显示。它还使用了两个过滤器来捕获目标 IP 为 1.2.3.4 的所有 TCP 流量,并匹配所有包含 Host: 的 HTTP 请求头部。要注意的是,此命令假定 HTTP 请求是通过 TCP 端口 80 进行传输的,如果要捕获其他端口的 HTTP 请求,请相应地修改命令。

  • 相关阅读:
    RFID仓库管理系统解决方案有哪些功能模块
    基于 Openzeppelin 的可升级合约解决方案的注意事项
    数据可视化:Echarts和Tableau简介
    用yolov5图像分割做人物抠像
    苹果WWDC 2024 带来的 AI 风暴:从生产力工具到个人助理,AI 将如何融入我们的生活?
    总分420+专业140+哈工大哈尔滨工业大学803信号与系统和数字逻辑电路考研电子信息与通信工程,真题,大纲,参考书。
    Selenium—入门+案例
    open-set recognition(OSR)开集识别
    codeforces:F. Kirei and the Linear Function【暴力优化 + 避开大数运算 + 避开str切片转int】
    大数据ClickHouse进阶(四):ClickHouse的索引深入了解
  • 原文地址:https://www.cnblogs.com/yjf512/p/17174669.html