[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
- 常用命令
- 用户与用户组
- 创建用户与用户组
- 快速脚本
- umask
- Yum源
- 基础Yum源
- Epel源
- 制作Yum源
- 同步Yum源
- 为Yum源配置代理
- 下载RPM及依赖
- 系统与内核
- 获取内核的rpm包
- 升级内核
- Iptables
- 基本语法
- 匹配条件
- 基础匹配条件
- 扩展匹配条件
- Addrtype
- Set
- TCP
- Mark
- Multiport
- 目标
- 基本目标
- 扩展目标
- DNAT
- LOG
- CT
- NOTRACK
- MARK
- IP set
- 连接追踪
- 初识连接追踪
- 连接追踪详解
- NAT
- 思路与参考汇总
- 数据结构
- FAQ
- Keepalived
- 单网卡多VIP
- 安装Keepalived
- 双网卡绑VIP
- 别名VIP和辅助VIP
- LVS
- 安装LVS
- Ipvsadm命令
- 磁盘与分区
- 基础知识
- 创建分区
- 格式化与挂载
- Fstab
- LVM
- LVM扩容
- Swap分区
- Tmpfs
- 网络相关
- 重命名网卡
- resolv.conf
- Tcpdump
- nslookup与dig
- ifcg-xxx
- 主机名
- 软件安装
- NFS
- Squid
- Redsocks
- Shadowsocks
- 时钟同步
- Chrony
- FTP
- 文件句柄
- 简介
- 设置文件句柄
- 其他
- SSH密钥登录
- 进程组-会话-终端
- X11转发
- 环境变量
- 常见问题
- 系统进程数
- 系统调用
- 系统调用FAQ
- 用户程序如何进行系统调用