我遇到过这样的情况:我想捕获一台 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
。