Tcpdump 和 Wireshark 是网络抓包与分析领域两大神器。两者功能相似,使用环境则各有优势,Tcpdump 精于命令行,Wireshark 精于图形界面。一般情况下,两个可单独使用,直接使用图形界面的 Wireshark 更为普遍;一些特殊情况下,则需发挥两者各自特长,将其结合使用,尤其针对服务器的网络数据分析,往往没有安装 GUI 界面,不能直接使用 Wireshark,这种情况下,先用 tcpdump 抓包,再将 tcpdump 抓好的流量包,在另外的机器上用 Wireshark 图形化界面进行分析,直观清晰,效果更显。
tcpdump 的作用是“dump traffic on a network”。dump 的中文解释是“倾倒;(内存信息)转储,转存;”本质是将一个地方的数据“转移存储”到另外一个地方,方便后续分析。tcpdump 的作用,就是将一个地方(网络适配器)的网络流量数据,转移存储到另外一个地方(如一个数据文件中)。
安装
sudo apt install tcpdump
抓包
基础命令
抓包都是针对某个特定网络适配器(网卡)进行,所以 tcpdump 的抓包要指定某个特定的网络适配器。
sudo tcpdump [-i interface_name]
如果主机有多个网络接口,则需要用 -i
参数明确指出 dump 哪个接口的数据;如果只有一个网络接口,则命令可以省略网络接口参数,直接 dump 唯一的接口数据。
获取特定 ip 的数据
sudo tcpdump host 210.27.48.1
截获 210.27.48.1 主机收到的和发出的所有的数据包。
将截获的数据存入指定文件
sudo tcpdump -w filename