🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ### **一、语法** ``` $ tcpdump [options] expression ``` ### **二、表达式expression** expression是由一个或多个item组件,一个item之间多逻辑运算符`and`、`or`进行连接,比如: ``` $ tcpdump [options] item1 $ tcpdump [options] item1 and item2 $ tcpdump [options] '(item1 and item2) or ((item3 and item4) or item5)' ``` > 我们需要注意上面最后一个语句,当我们使用了括号时,整个expression要用单引号引起来 接下来,我们来讲解一下这些item可以由什么组成。 ##### **2.1、host、net、port 与 src dst** 第一类关键字为host、net、port三个,它们可以用src与dst修饰。比如: ``` # 监听主机为x.x.x.x的数据包(会同时监听源方向与目的方向) $ tcpdump host x.x.x.x # 监听源IP为x.x.x.x的数据包 $ tcpdump src host x.x.x.x # 监听网络为x.x.x.x/24的数据包(会同时监听源方向与目的方向) $ tcpdump net x.x.x.x/24 # 监听端口为xx的数据包(会同时监听源端口与目的端口,同时监听TCP与UDP端口 $ tcpdump port xx # 监听tcp端口为xx的数据包(会同时监听源端口与目的端口) $ tcpdump tcp port xx # 监听源端口为xx,协议为tcp的数据包 $ tcpdump tcp src port xx ``` ##### **2.2、协议关键字:tcp、udp、icmp等** ``` # 监听协议为tcp的包 $ tcpdump tcp # 监听协议为tcp,host为x.x.x.x的包 $ tcpdump host x.x.x.x and tcp ``` ##### **2.3、ipv6** ``` # 监听协议为icmp6,主机为2400:a480:f:80:c3::75的包(注意ping6使用的是icmp6协议而不是icmp协议) $ tcpdump host 2400:a480:f:80:c3::75 and icmp6 ``` ### **三、选项(Options)** ##### **3.1、 interface** `-i`可以指定监听特定网卡的数据包,比如监听网卡bond0的数据包 ``` $ tcpdump -i bond0 ``` 注意:如果该选项没有指定,则默认监听第一个网卡(一般以字母开头升序排序,不包括lo网卡)的数据包 ### **Reference** * https://packetpushers.net/masterclass-tcpdump-expressions/ * https://www.cnblogs.com/maifengqiang/p/3863168.html * https://linuxwiki.github.io/NetTools/tcpdump.html