同时捕获两个不同端口上的网络流量

时间:2011-11-29 10:45:46

标签: linux shell networking command tcpdump

我希望同时捕获两个不同端口上的tcpdump流量。

我试过了..

  $ tcpdump port 21 ; tcpdump port 22

虽然它有效,但问题是它首先等待端口21上的流量,当中断时它将等待端口22。

另一个问题是它不会捕获端口22上的流量,直到端口21上的流量将被捕获。

我想要一个免费的解决方案,无论数据包到达的顺序是什么,如果它们是用于端口21或22,它们应该被捕获。

请帮帮我!!!

编辑:

抱歉,在我尝试运行的实际命令之前没有指定它是这个..

  $ tcpdump -X -s0 protochain 50

  $ tcpdump -X -s0 protochain 51

现在我需要同时使用50和51 ..

4 个答案:

答案 0 :(得分:4)

嗨,你只需要像这样组成两个端口:

tcpdump -n -i $INTERFACE port 21 or port 22

其中-n将获得数字地址而无需反向解析(更快)
$INTERFACE是你嗅到交通的真实界面

答案 1 :(得分:3)

我不是tcpdump专家,但在tcpdump manpage

中找到了这一点
tcpdump 'gateway snup and (port ftp or ftp-data)'

所以试试这个

tcpdump '(port ftp or ftp-data)'

答案 2 :(得分:0)

问题解决了它实际上非常简单我应该尝试过它..

但是谢谢我只是通过查看你的答案得到了我的想法。

我认为如果我们能找到一个确切的答案,那就是stackoverflow的美妙之处,我们可以通过讨论来发明它。 ..

 $ tcpdump -X -s0 protochain 50 or 51

答案 3 :(得分:0)

就像其他贡献者所说,您可以使用and逻辑运算符,但是要注意,您也可以将其与其他运算符结合使用。为确保tcpdump能够看到它们,并且运算符优先级是您想要的优先级,请使用方括号,但仅在单引号中使用方括号,如以下示例所示: sudo tcpdump -i eth0 '(port 465 or port 587)' and src 1.2.3.4,因为如果省略单引号,则外壳程序可能会在tcpdump之前解释它们,并且b),您将不确定运算符的优先级是什么。鉴于此,您现在可以进行任何组合,就像在算术中一样。