tcpdump 毫无无疑是非常重要的网络分析工具,对于任何想深入理解TCP/IP的人来说,掌握该工具的使用是非常必要的。
本教程将向您展示如何以各种方式将流量基于 IP、端口、协议、应用程序层协议过滤出来,以确保您尽快找到所需的数据包内容。
基础
下面是一些用来配置 tcpdump 的选项,它们非常容易被遗忘,也容易和其它类型的过滤器比如 Wireshark 等混淆。
选项
- -i any 监听所有的网卡接口,用来查看是否有网络流量
- -i eth0 只监听eth0网卡接口
- -D 显示可用的接口列表
- -n 不要解析主机名
- -nn 不要解析主机名或者端口名
- -q 显示更少的输出(更加quiet)
- -t 输出可读的时间戳
- -tttt 输出最大程度可读的时间戳
- -X 以hex和ASCII两种形式显示包的内容
- -XX 与**-X**类似,增加以太网header的显示
- -v, -vv, -vvv 显示更加多的包信息
- -c 只读取x个包,然后停止
- -s 指定每一个包捕获的长度,单位是byte,使用-s0可以捕获整个包的内容
- -S 输出绝对的序列号
- -e 获取以太网header
- -E 使用提供的秘钥解密IPSEC流量
表达式
在 tcpdump 中,可以使用表达式过滤指定类型的流量。有三种主要的表达式类型:type,dir,proto。
- 类型(type)选项包含:host,net,port
- 方向(dir)选项包含:src,dst
- 协议(proto)选项包含:tcp,udp,icmp,ah等
示例
接下来我们介绍一些在实际工作中会经常使用到的命令示例。
1. 捕获网卡流量
捕获所有流量
tcpdump -i any
我们可以使用上面的命令查看所有网卡上发生了什么。运行下面的命令,可以监控一个指定的网络接口:
tcpdump -i eth0
2.