在 tcpdump 中捕获传入流量

Posted

技术标签:

【中文标题】在 tcpdump 中捕获传入流量【英文标题】:Capture incoming traffic in tcpdump 【发布时间】:2012-05-05 06:02:33 【问题描述】:

在 tcpdump 中,如何捕获所有发往我机器的传入 IP 流量?我不关心我当地的交通。

我应该说:

tcpdump ip dst $MyIpAddress and not src net $myIpAddress/$myNetworkBytes

...还是我错过了什么?

【问题讨论】:

什么是“即将到来的 IP 流量”?广播地址的数据包也进来了。 【参考方案1】:

在 Bash shell 中试试这个:

tcpdump -i eth0 tcp and dst host $MyIpAddress and not src net $MyNetworkAddress/$myNetworkBytes

或者这个等价的表述:

tcpdump -i eth0 ip proto \\tcp and dst host $MyIpAddress and not src net $MyNetworkAddress/$myNetworkBytes

在我的系统上,这会解析为:

tcpdump -i eth0 tcp and dst host 10.0.0.35 and not src net 10.0.0.0/24

如果您想查看到目标主机的所有流量,而不仅仅是 TCP 协议流量,您可以这样做:

tcpdump -i eth0 dst host $MyIpAddress and not src net $MyNetworkAddress/$myNetworkBytes

一些注意事项:

    我将$myIpAddress/$myNetworkBytes 更改为$MyNetworkAddress/$myNetworkBytes。这是因为您的规则的明显意图是排除来自本地网络的流量,而指定网络地址的correct way 是指定网络的最低​​ IP 地址(称为网络地址)/网络掩码。如果您为网络掩码为 $myNetworkBytes 的网络指定范围内最低地址以外的任何地址,那么您将收到错误消息:

    tcpdump: non-network bits set in "10.0.0.3/24"
    

    在第一个示例中,'tcp' 是 libpcap 表达式语言 (man pcap-filter) 中的 关键字,而在第二个示例中,'tcp' 用作 ip proto。为了表明第二个实例中的“tcp”是一个值而不是另一个“tcp”关键字,我需要用双反斜杠转义“tcp”。它必须是双反斜杠,以便 Bash 解释器将单个反斜杠传递给 libpcap 解释器(Bash 吃第一个反斜杠,libpcap 获得第二个。)为了减少双转义混淆,最好进入双引号命令的整个表达式部分的习惯:

    tcpdump -i eth0 "ip proto \tcp and dst host $MyIpAddress and not src net $MyNetworkAddress/$myNetworkBytes"
    

    为避免警告和意外,最好使用接口说明符-i eth0 或任何您想要的接口。并非所有接口都必须分配一个 IP 地址,并且在没有具体说明的情况下,您可能会看到您不希望看到的流量。在运行网络管理器的系统上尤其如此,它似乎对添加哪些接口以及何时添加有自己的想法。

【讨论】:

您好,谢谢您的回答。我也对 UDP 流量感兴趣,这就是为什么我没有在上面的过滤器中放置“tcp”。我敢肯定这是微不足道的,但你能解释一下为什么我需要输入我的网络地址而不是我的 IP 地址吗?一旦我指定了网络字节数,那不应该有同样的效果吗? 编辑了地址评论的答案【参考方案2】:

上述方法都不适用于具有多个 ip 的盒子。

这在绑定了许多 ip 的 DNS 服务器上对我来说非常有效:

tcpdump -l -n -i pub dst port 53 and inbound

可能不适用于所有版本的tcpdump

# tcpdump -V
tcpdump version 4.1-PRE-CVS_2012_03_26
libpcap version 1.4.0

【讨论】:

欣赏inbound关键字【参考方案3】:

-Q方向 --direction=方向 选择数据包应该发送/接收的方向 被俘虏。可能的值为 in',out' 和 `inout'。不是 可在所有平台上使用。

【讨论】:

不错!我不知道这个选项。

以上是关于在 tcpdump 中捕获传入流量的主要内容,如果未能解决你的问题,请参考以下文章

tcpdump 命令的常用选项:一

tcpdump抓包命令Ubuntu

F5 tcpdump用法

tcpdump 命令的常用选项:三

[linux] tcpdump抓包案例

sh [tcpdump - 监控DHCP流量]通过tcpdump #tcpdump监控DHCP流量