tcpdump
【参考文章】:抓包神器 tcpdump 使用介绍
【参考文章】:tcpdump 教程及入门示例
1. 常用参数
-i eth0 抓取 eth0 网卡的数据包
-i any 抓取所有网卡的数据包
-n 不显示域名,直接显示IP
-nn 不解析域名和端口
-X 同时以16进制和 ASCII 打印报文内容
-A 只以 ASCII 打印报文数据,抓取 HTTP 请求时可考虑使用此参数
-c number 抓取 number 个报文后结束
-s size 抓取的数据包大小,默认96 bytes
-v, -vv, -vvv 显示更多信息
-w 将抓取的数据包文件写入指定文件(可以用 wireshark 解析抓取的数据包)
2. 常用的过滤规则
常用的规则有三个:协议类型,IP地址 和 端口;
对于tcp/udp协议只能监听端口号,而ip协议只能监听主机地址,tcp/udp位于传输层,而IP协议位于网际层
2.1 协议类型
tcp、udp、icmp、icmp6、igmp、igrp、pim、ah、esp、vrrp
2.2 IP地址
host 127.0.0.1 源IP或者目的IP为 127.0.0.1
src host 127.0.0.1 源IP为 127.0.0.1
dst host 127.0.0.1 目的IP为 127.0.0.1
2.3 端口
port 80 源端口或者目的端口为 80
src port 80 源端口为 80
dst port 80 目的端口为 80
2.4 表达式组合条件
推荐使用 英文字母形式,符号有些情况下需要转义,否则报错
2.4.1 and 或者 &&
tcpdump host 192.168.145.134 and dst port 21087
2.4.2 or 或者 ||
tcpdump host 192.168.145.134 or dst port 21087
2.4.3 not 或者 !
tcpdump host 192.168.145.134 and dst port not 21087
2.4.4 使用()将过滤规则括起来
使用()时需要将()进行转义,此时若使用 符号表示条件关系,则符号需要转义
tcpdump host 192.168.145.134 and \(dst port 21087 \|\| 21089\)
tcpdump host 192.168.145.134 and \(dst port 21087 or 21089\)
或者将()放在 ' ' 里面(单引号),此时不需要转义
tcpdump host 192.168.145.134 and '(dst port 21087 or 21089)'
tcpdump host 192.168.145.134 and '(dst port 21087 || 21089)'
3. 示例
tcpdump -i enp1s0 -nnXvvv src host 192.168.145.103 and src port 48547 and dst host 192.168.145.134 and dst port 21087