![如何使用 tcpdump 实时记录某些数据](https://linux22.com/image/651946/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20tcpdump%20%E5%AE%9E%E6%97%B6%E8%AE%B0%E5%BD%95%E6%9F%90%E4%BA%9B%E6%95%B0%E6%8D%AE.png)
我想监控网络接口,但只记录错误、冲突和丢包等信息并将其发送到标准输出。可以配置 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
cat /proc/net/dev | grep eth1 >> interface_errors_eth1
- 然后将其作为 cron 作业