可以指示 tcpdump 不向特定源报告数据包吗?

可以指示 tcpdump 不向特定源报告数据包吗?

我想使用 TCPdump 监控数据包。遗憾的是,我必须远程执行此操作 - 在这种情况下,我使用 VNC 的远程桌面,但最好通过 SSH 执行此操作。

我所说的“最好”是指:我看到大量数据包发往我自己的机器。我试图监控服务器,而不是本地机器,所以我宁愿忽略发往我自己机器的任何数据包。

有什么方法可以让 tcpdump 报告除发往特定 IP 的数据包之外的所有内容?

我的解决办法是:sleep 5;tcpdump [options]在等待时终止 VNC 连接。

答案1

是的,您可以在 tcpdump 选项中添加过滤器。假设您的 IP 是 1.2.3.4,则如下所示:

tcpdump -f "not host 1.2.3.4" ...other options...

答案2

您可以通过以下命令来完成此操作:

  tcpdump -i eth0 ! host Your.own.Ip.Address. 

但是,这有点小题大做:你可能偶尔会对发往你机器的数据包感兴趣,但对与通信本身有关的数据包不感兴趣。你可以使用

  tcpdump -i eth0 ! port 22

(如果您通过 ssh 连接)这将消除来自端口 22 的远程计算机的所有数据包;但这也会丢弃来自其他计算机的往返于远程计算机的所有 ssh 数据包。

如果您想要真正完整,仅排除通过 ssh 的本地和远程计算机之间的流量,您必须发出:

  tcpdump -i etho ! '((host remote.machine.ip.address and port 22) and local.machine.ip.address)'

记住顶点,它们很重要。

相关内容