在公司涉及到网络问题的故障,比如远程命令未实现,与前端设备交互失败,网络数据异常等问题,很可能是网络方面的故障,而在pc机上抓包,采用wireshark 即可,但在linux设备中,tcpdump 这个强大的抓包工具就会显得重要了。
tcpdump工具很强大,通过命令行指定一系列参数可以实现网络包抓取功能。
tcpdump 工具有好多关键字:
host :主机 ef:192.168.11.120
net:网络地址 eg: 202.103.55.67
lo:回环地址,linux 回环地址一般为 127.0.0.1
src :指明ip包中源地址
dst :指明ip包中目的地址
arp: 指明抓取arp协议包
tcp :指明抓取tcp协议包
udp:指明抓取udp协议包
tcpdump 工具有好多参数,下面仅仅介绍我目前常用的,其他的大家可以网络搜索一下:
-c 在收到指定的数量的分组后,tcpdump就会停止。
-f 将外部的Internet地址以数字的形式打印出来。
-i 指定监听的网络接口。
-b 在数据-链路层上选择协议,包括ip、arp、rarp、ipx都是这一层的。
-n 不把网络地址转换成名字。
-t 在输出的每一行不打印时间戳。
-r 从指定的文件中读取包(这些包一般通过-w选项产生)。
-vv 输出详细的报文信息。
-w 直接将分组写入文件中,而不是不分析并打印出来。
下面举例说明:
- 查看网卡1上所有流过的数据包
tcpdump -vv - 查看固定主机的网络包
tcpdump host 192.168.11.120 - 查看 固定主机的某个网卡的所有数据包
tcpdump -i eth2 host 192.168.11.120 - 查看 固定主机的某个网卡的某个端口数据包
tcpdump -i eth2 host 192.168.11.120 and port 80 - 过滤数据源IP地址
tcpdump -i eth1 src net 192.168 - 过滤数据目的端口号
tcpdump -i eth1 dst port 80 - 过滤协议
tcpdump -i eth1 tcp - 保存到文件
tcpdump -w 123.pcap (文件为pcap格式,在wireshark可以查看) - 抓取回环地址的数据包
tcpdump -i lo - 抓取所有网卡的数据包
tcpdump -i any
个人觉得,简单使用抓包工具,抓取一定条件的数据包,保存后通过wireshark 工具查看,可实现精准定位分析,tcpdump 和 wireshark 相结合,可使得网络包分析更加容易。