如何使用 tcpdump 实时记录某些数据

如何使用 tcpdump 实时记录某些数据

我想监控网络接口,但只记录错误、冲突和丢包等信息并将其发送到标准输出。可以配置 tcpdump 来执行此操作吗?

答案1

不。

tcpdump 具有强大的过滤功能,但只有在获得更多数据时才能过滤掉您请求的内容。如果我没有记录原始数据包,我怎么知道数据包是否是重传?应用于 PCAP 捕获的所有逻辑都是由 Wireshark 等在事后完成的,并将整个捕获考虑在内。

您可能更愿意将流量记录到链接文件中,比如 1GB 大小的文件,然后在单独的进程中从命令行运行一些分析工具(如 tshark),逐个文件地分析。您可以从那里获得一些非常好的输出。

例如显示重传的数据包,包括源 IP 和目标 IP:

tshark -Y "tcp.analysis.retransmission" -Tfields -e ip.src -e ip.dst

答案2

netstat -ni

是处理 Tx/Rx 错误(例如在 NIC/驱动程序/OS 级别丢失数据包)的最佳助手。正如他们所说,冲突发生在较低级别,我猜应该在交换机上进行跟踪。

答案3

您可以使用 netstat 结合 watch linux/unix 命令来主动实时查看错误

例如

watch -n 2 netstat -in

如果你确实想记录接口错误,最好从 proc 获取信息

例如使用 eth1

  1. cat /proc/net/dev | grep eth1 >> interface_errors_eth1
  2. 然后将其作为 cron 作业

相关内容