如何测试丢弃数据包的进程?

网络工程 线鲨 监控 包分析
2022-03-01 23:56:13

我通过连接两个虚拟机(即攻击机和受害机)模拟了拒绝服务攻击。攻击机器向运行应用程序(Web 服务器)的受害机器发送大量流量 (http)。

我对受害者运行 tshark。在监控会话结束时,我看到一条 tshark 消息,表明一些数据包被丢弃。

我如何知道是谁丢弃了数据包:tshark、应用程序(Web 服务器)或机器(在本例中为 Ubuntu)或任何其他我没有想到的资源?我可以执行哪些测试来验证这一点?

1个回答

tsharck不会告诉您有关 Web 服务器或任何其他应用程序或守护程序丢弃的数据包的信息。它不会告诉您在源头丢弃的数据包。它只会告诉网络上收到的无法处理的数据包。

可以在以下任何步骤中丢弃数据包,如果该步骤无法处理的话:

  • 网卡驱动接收数据包
  • 内核接收和复制数据包以发送到 tshark
  • tshark 读取数据包(如果需要,则进行过滤或解码)
  • tshark 处理数据包的输出,显示或磁盘。

为了防止丢包,请尝试减轻这些步骤,从后面的步骤开始。例如,尝试

  • 通过将原始数据包转储到磁盘和足够快的磁盘(建议使用 SSD 速度或类似速度)来减少数据包处理
  • 抓包到磁盘时,看看是不是因为文件写入跟不上导致丢包,检查是否抓包/dev/null减少丢包。如果是这样,请再次尝试捕获到文件,但使用-B <size in MiB>选项增加捕获缓冲区,例如-B 100.
  • 查找系统上的瓶颈(网卡或驱动程序过载、CPU 或 IRQ 过载等)