tcpdump是一个非常有用的分析网络和排查网络问题的工具。它捕获数据包,显示网络的实时情况,并将结果输出到标准输出(STDOUT)或存储在文件中。关于它的具体用途,它有很多可用的选项。在本文中,我们介绍了该命令常用的几个核心选项。1.检查可用的网络端口(接口)查询所有可用的网络端口,使用-D选项:sudotcpdump-D上面的命令会列出系统中所有可用的网络接口,包括有线和无线接口,使用--list-interfaces选项也可以达到同样的目的:sudotcpdump--list-interfaces运行结果如下图所示:2.如果该选项不适用于抓取某个网口的数据包,tcpdump会扫描所有网口,使用-i选项抓取特定网口的数据:tcpdump-i代表上述命令中的网口名称。如果我们要抓取eth0网口的数据,可以使用如下命令:sudotcpdump-ieth0注:为了方便演示,我们在后面的文章中将使用eth0或eth1作为目标网口。3.预设抓包数使用-c选项预设抓包数。例如下面的命令会抓包4个:sudotcpdump-c4-ieth0如果抓包数量没有预先设置,需要使用ctrl+c或者ctrl+z手动停止抓包操作。4.获取详细输出使用-v选项获取详细输出,如下:sudotcpdump-c6-v-ieth0详细输出,详细程度有区别,换句话说,可以使用更多-vflags,例如-vv或-vvv,会在终端产生更详细的输出:sudotcpdump-vv-ieth05,以ASCII格式打印捕获的数据有时我们希望数据以HEX或ASCII格式显示,这里可以使用-A选项以ASCII格式表示,-XX选项以ASCII和HEX格式显示数据:sudotcpdump-XX-ieth06,capturepacketssentfromasourceIP捕获来自特定源IP的数据数据包,可以使用如下命令:sudotcpdump-ieth0src比如我们查看IP192.168.56.11的数据:sudotcpdump-ieth1-c5src192.168.56.11上面例子中的count5是抓包只服用5包。7.抓取发送到特定目标IP的数据包如果要查看发送到特定目标IP地址的流量,可以使用以下命令:sudotcpdump-ieth0dst例如我们设置目标IP为192.168。56.11,查看详细流量信息:sudotcpdump-ieth1-c5dst192.168.56.118,使用tcpdump中的过滤选项tcpdump命令提供了一些过滤选项来缩小抓包数据的范围,可以过滤掉一些不需要的数据,便于分析数据。过滤方法包括主机地址、端口、协议或其他过滤条件。我们举个例子来说明。端口号如果要进行端口号(如22端口)过滤,可以执行tcpdump命令,如下:sudotcpdump-ieth0port22该命令会抓取TCP和UDP数据流。与端口号类似,proto指令根据特定流量过滤数据包捕获。这里可以使用协议名或者协议号作为参数值:sudotcpdump-ieth0prototcp或者:sudotcpdump-ieth0proto6上面两条命令是一样的,因为6是TCP的协议号。主机过滤器主机参数使用特定主机的IP来过滤来自该主机的流量:sudotcpdump-ieth0host192.168.56.10这将捕获来自该主机的所有流量。此外,可以将多个过滤器应用于主机以针对特定类型的数据包流量。例如:sudotcpdump-ieth1-c50"(host192.168.56.11)and(port443orport80)"在上面的例子中,我将多个过滤条件合并为一个规则来过滤http和https数据流,其中两个协议的端口分别是80和443。我们之前分享过一篇关于常用网口的文章。有兴趣的朋友可以参考:Linux9中常用的网络端口号。保存抓取的数据如果想保存抓取的数据,可以参考如下命令:sudotcpdump-ieth0-c10-wmy_capture.pcap应该这里需要注意的是,抓取的数据包最好预先??设置一个最小值,否则需要手动停止进程。10、读取抓取的数据我们可以使用Wireshark(https://www.wireshark.org/)或者其他图形化网络分析工具来分析抓取的数据(上例中保存在.pcap文件中的数据)。另外,你也可以使用tcpduimp本身来阅读:tcpdump-rmy_capture.pcap上面我们介绍了tcpdump命令的一些常用用法,希望能帮助你对该命令有一个大概的了解。当您进行数据包抓取时,这是一个很棒的工具。如果您想以更直观的方式分析数据包,请尝试使用Wireshark。以上就是我们这次分享的全部内容,欢迎讨论。
