在捕获数据包时将 tcpdump 生成的 pcap 文件重定向到另一台服务器

在捕获数据包时将 tcpdump 生成的 pcap 文件重定向到另一台服务器

我正在寻找这样的命令,它实现了:

  1. 将 tcpdump 生成的 pcap 文件重定向到另一台服务器
  2. 在1.的过程中,使用python脚本或者一些工具来分析每个数据包。

所以从系统用户的角度来说,在抓包的时候,他/她可以像在 wireshark 中一样查看数据包,也可以下载一个 pcap 文件。因为分析过程会消耗相当多的系统资源,所以我希望 pcap 文件可以重定向到另一台服务器,然后在那台服务器上进行分析。现在的问题是,nc监听器被杀死后就会退出tcpdump(我试过了-15),但我希望监听器还能运行,因为可能有好几台服务器在运行tcpdump

tcpdump -i eth0 port 8801 -w a.pcap | nc 192.168.12.5 9901

答案1

设置 tcpdump 将原始 PCAP 数据输出到标准输出,并利用 SSH 作为传输机制,将该数据作为连续流写入远程分析主机上的远程文件。

例子:

tcpdump -i eth0 port 8801 -w - | ssh ${remote_host} "cat >> $(hostname).pcap"

在上面的例子中,我曾经$(hostname)评估服务器的主机名(运行 tcpdump 的地方)来智能地命名远程文件,但当然,根据您的需要进行调整(也许在名称中包含一个时间戳,如果有用的话)。

使用 UNIX 时间戳远程文件命名的替代示例:

tcpdump -i eth0 port 8801 -w - | ssh ${remote_host} "cat > $(hostname)_$(date +%s).pcap"

答案2

我认为您可以使用一个单独的进程来获得想要的结果nc,该进程在服务器上进行监听tcpdump并将其复制到远程服务器。

您可以nc使用以下命令进行监听和转发(例如):

 nc -k -l localhost 9901 | nc 192.168.12.5 9901

然后你可以连接tcpdump你需要的任何会话

 tcpdump -i eth0 port 8801 -w a.pcap | nc localhost 9901

旗帜-k强制 nc 在当前连接完成后继续监听另一个连接。

请记住,如果您使用基于 Debian 的发行版,则存在一个已知错误:

Debian/Ubuntu 上的软件包netcat-traditional无法按应有的方式持续监听。在这种情况下,请使用软件包netcat-openbsd

相关内容