下面的例子全是以抓取 eth0 接口为例,如果不加”-i eth0” 是表示抓取所有的接口包括 lo
12345678910111213141516171819202122232425262728293031323334353637383940414243
# 抓取包含 172.16.1.122 的数据包 tcpdump -i eth0 -vnn host 172.16.1.122 # 抓取包含 172.16.1.0/24 网段的数据包 tcpdump -i eth0 -vnn net 172.16.1.0/24 # 抓取包含端口 22 的数据包 tcpdump -i eth0 -vnn port 22 # 抓取 udp 协议的数据包 tcpdump -i eth0 -vnn udp # 抓取 icmp 协议的数据包 tcpdump -i eth0 -vnn icmp # 抓取 arp 协议的数据包 tcpdump -i eth0 -vnn arp # 抓取 ip 协议的数据包 tcpdump -i eth0 -vnn ip # 抓取源 ip 是 172.16.1.122 数据包。 tcpdump -i eth0 -vnn src host 172.16.1.122 # 抓取目的 ip 是 172.16.1.122 数据包 tcpdump -i eth0 -vnn dst host 172.16.1.122 # 抓取源端口是 22 的数据包 tcpdump -i eth0 -vnn src port 22 # 抓取源 ip 是 172.16.1.253 且目的 ip 是 22 的数据包 tcpdump -i eth0 -vnn src host 172.16.1.253 and dst port 22 # 抓取源 ip 是 172.16.1.122 或者包含端口是 22 的数据包 tcpdump -i eth0 -vnn src host 172.16.1.122 or port 22 # 抓取源 ip 是 172.16.1.122 且端口不是 22 的数据包 tcpdump -i eth0 -vnn src host 172.16.1.122 and not port 22 # 抓取源 ip 是 172.16.1.2 且目的端口是 22,或源 ip 是 172.16.1.65 且目的端口是 80 的数据包。 tcpdump -i eth0 -vnn \( src host 172.16.1.2 and dst port 22 \) or \( src host 172.16.1.65 and dst port 80 \) # 抓取源 ip 是 172.16.1.59 且目的端口是 22,或源 ip 是 172.16.1.68 且目的端口是 80 的数据包。 tcpdump -i eth0 -vnn 'src host 172.16.1.59 and dst port 22' or 'src host 172.16.1.68 and dst port 80' # 把抓取的数据包记录存到 / tmp/fill 文件中,当抓取 100 个数据包后就退出程序。 tcpdump –i eth0 -vnn -w /tmp/fil1 -c 100 # 从 / tmp/fill 记录中读取 tcp 协议的数据包 tcpdump –i eth0 -vnn -r /tmp/fil1 tcp# 从 / tmp/fill 记录中读取包含 172.16.1.58 的数据包 tcpdump –i eth0 -vnn -r /tmp/fil1 host 172.16.1.58 # 抓取目的地址范围是 10 网段tcpdump -i any -nn 'ip[16] == 10'# 抓取目的地址范围是 192.168.1.10 ~ 192.168.1.100tcpdump -i any -nn 'ip[16] == 192 and ip[17] == 168 and ip[18] == 1 and ip[19] > 9 and ip[19] < 101'# 保存 10000 个数据包过滤条件为 443 端口,并解析来源 IPtcpdump -i any -nn -c 10000 port 443 > tcpdump.logcat tcpdump.log | awk '{print $3}' |awk -F '.' '{print $1"."$2"."$3"."$4}'| sort | uniq -c | sort -rn