tcpdump 是一种网络数据包抓取工具,用于在 Linux 系统上监听和捕获网络流量。它能够捕获网络包,输出它们的内容,保存它们到文件中,并支持多种过滤规则。
以下是 tcpdump 常用的选项和命令:
常用选项
- -i interface: 设置监听的网络接口
- -n: 禁用 DNS 解析,只显示 IP 地址
- -v: 显示详细的信息,如协议头和标识符
- -c count: 指定抓取数据包的数量
- -w file: 将数据包保存到文件中
- -r file: 从文件中读取数据包
- -s size: 指定每个数据包抓取的字节数
- -q: 禁止打印解析信息
- -e: 打印以太网头部信息
- -X: 打印十六进制和ASCII格式的数据包内容
- -A: 输出以ASCII码打印出捕获的网络数据
常用命令
- tcpdump: 默认以实时模式抓取网络数据包
- tcpdump -i eth0: 监听 eth0 网络接口
- tcpdump -c 10: 抓取10个数据包
- tcpdump -w file: 将抓取的数据包保存到文件中
- tcpdump -r file: 从文件中读取数据包
- tcpdump -nn: 禁用DNS解析,只显示IP地址
- tcpdump -XX: 打印十六进制和ASCII格式的数据包内容
- tcpdump -nne: 打印以太网头部信息,禁止DNS解析,输出详细信息
常见过滤器
- host [ip]: 捕获指定IP的数据包
- src [ip]: 捕获源IP为指定IP的数据包
- dst [ip]: 捕获目标IP为指定IP的数据包
- port [port]: 捕获目标端口或源端口为指定端口的数据包
- tcp: 捕获 TCP 协议数据包
- udp: 捕获 UDP 协议数据包
- icmp: 捕获 ICMP 协议数据包
例如,监听 eth0 接口上的 ICMP 数据包:
tcpdump -i eth0 icmp
使用过滤器捕获源IP地址为 192.168.1.100 的 TCP 数据包:
tcpdump -i eth0 src 192.168.1.100 tcp
捕获目标端口为 80 的 UDP 数据包:
tcpdump -i eth0 udp port 80
tcpdump 是一个强大而灵活的工具,能够帮助网络管理员更好地理解和调试网络流量。学习它的使用方法将会使你更加熟练。