我想使用 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)'
记住顶点,它们很重要。