tcpdump:运行大过滤器文件时内存不足

网络工程 tcpdump
2022-02-21 03:48:34

我目前正在使用以下命令运行 tcpdump

tcpdump -r input.pcap -w output.pcap -F /filter_file

问题是 tcpdump 抛出这个错误

tcpdump: out of memory

我无法通过谷歌找到任何解决方案。
请注意,过滤器的大小为 630Kb

感谢您的任何意见

1个回答

虽然完全同意这些都不是完全令人满意的,但这里有一些可能会有所帮助的想法,这些想法是从多年来进行的各种大规模数据包捕获分析中收集的。

也许这些想法之一会帮助你:

  • 是否有可能以某种方式简化这种匹配条件,也许 35,000 个端口中有一个模式。(即地址聚合之类的东西)
  • 是否可以进行例如 10 场较小的比赛并加入他们?
  • tshark(或wireshark)有同样的问题吗?
  • 你能用文字完成任务吗?(即,让 tcpdump 打印数据包,与 awk/php/whatever 匹配)
  • 运行具有巨量内存的适当大型实例计算机(例如在 AWS 上)一小时
  • 编写一个小的 C 程序来完成这项工作,因为 PCAP 文件很容易使用

我通常会为大型分析编写一个小型 C 程序,特别是如果它们是我需要经常做的事情,并且就像在一大串端口号中选择一样简单。我的理解是,主要的 pcap 过滤会编译一个大表达式,这可能会占用大量内存。通常我的程序在相当小的计算机上运行。

我总是按照 Wireshark的文件格式文档从头开始编写代码,而不是使用 pcap 库。