一般情况下,非HTTP协议的网络分析,在服务器端用tcpdump
比较多,在客户端用wireshark比较多,两个抓包软件的语法是一样的。
一、基本语法
1.1、过滤主机
- 抓取所有经过eth1,目的或源地址是192.168.1.1的网络数据。
tcpdump -i eth1 host 192.168.1.1
- 指定源地址
tcpdump -i eth1 src host 192.168.1.1
- 指定目的地址
tcpdump -i eth1 dst host 192.168.1.1
1.2、过滤端口
- 抓取所有经过eth1,目的或源端口是25的网络数据
tcpdump -i eth1 port 25
- 指定源端口
tcpdump -i eth1 src port 25
- 指定目的端口
tcpdump -i eth1 dst port 25
1.3、网络过滤
tcpdump -i eth1 net 192.168
tcpdump -i eth1 src net 192.168
tcpdump -i eth1 dst net 192.168
1.4、协议过滤
tcpdump -i eth1 arp
tcpdump -i eth1 ip
tcpdump -i eth1 tcp
tcpdump -i eth1 udp
tcpdump -i eth1 icmp
1.5、常用表达式
非 : ! or "not" (去掉双引号)
且 : && or "and"
或 : || or "or"
- 抓取所有经过eth1,目的地址是192.168.1.254或192.168.1.200端口是80的TCP数据
tcpdump -i eth1 '((tcp) and (port 80) and ((dst host 192.168.1.254) or (dst host 192.168.1.200)))'
- 抓取所有经过eth1,目标MAC地址是00:01:02:03:04:05的ICMP数据
tcpdump -i eth1 '((icmp) and ((ether dst host 00:01:02:03:04:05)))'
- 抓取所有经过eth1,目的网络是192.168,但目的主机不是192.168.1.200的TCP数据
tcpdump -i eth1 '((tcp) and ((dst net 192.168) and (not dst host 192.168.1.200)))'
如果是为了查看数据内容,建议用tcpdump -s 0 -w filename把数据包都保存下来,然后用wireshark的Follow TCP Stream/Follow UDP Stream来查看整个会话的内容。
-s 0是抓取完整数据包,否则默认只抓68字节。