记录一台 Linux 机器上的网络流量,并实时将其传输到另一台机器

记录一台 Linux 机器上的网络流量,并实时将其传输到另一台机器

我遇到过这样的情况:我想捕获一台 Linux 机器上的所有网络流量(目前使用 tcpdump),但需要将这些数据实时传输到另一台 Linux 机器上(位于另一个独立(但已连接)的网络上)。本质上,我有

[network i'm curious about]---[eth0. Linux box eth1]----[separate network]---[eth0 monitoring Linux box]

我现在正在做的是将所有内容保存到 pcap 中,并定期将 pcap 传输到监控 Linux 机器。这可行,但效率极低,而且肯定不是实时的。有没有办法让 tcpdump 将 pcap 保存到我可以代理到监控机器的数据流中,而无需设置 NFS 或 SMB 之类的东西?我认为执行 tcpdump 的 Linux 机器充其量是可疑的,并且不想在监控机器上提供可写共享。

有任何想法吗?

答案1

在monitoring_Linux_box上: # nc -l -k -p 1234 > /var/tmp/pcap

在 Linux 上: # tcpdump -U -w - | nc monitoring_Linux_box 1234

答案2

从监控箱来看:

# ssh root@otherbox tcpdump -n -i eth0 -w - | program_that_takes_pcap_on_input

答案3

通过 SSH 进行实时捕获可以工作吗?

ssh -t remotehost 'sudo tcpdump [options]'

或者如果你使用 root..

ssh root@remotehost 'tcpdump [options]'

(确保从捕获中排除 SSH 流量。)

如果您想在屏幕上观看它并将输出保存到文件,请通过管道传输到tee

相关内容