Tcpdump是一种用于捕获传入和传出流量的网络实用程序。这是您在Linux上使用tcpdump需要知道的一切。Linux附带了大量可供选择的网络实用程序。tcpdump是一个强大的网络工具,如果您需要在Linux上排查网络错误,它可以捕获和分析网络流量。让我们开始使用tcpdump命令并探索如何使用它来捕获网络流量。在Linux中安装tcpdumptcpdump通常预装了所有主要的Linux发行版和基于安全的替代品。因此,您应该能够通过键入以sudo为前缀的tcpdump立即使用它。如果您无法运行tcpdump命令并收到“tcpdump:commandnotfound”错误,让我们学习如何在您的Linux机器上安装tcpdump。要安装tcpdump,启动终端并运行与您当前的Linux发行版相对应的命令:在Debian/Ubuntu衍生产品上,运行:┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]└─$sudoapt-getinstalltcpdump在基于Arch的系统上,运行:┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]└─$sudopacman-Stcpdump要在RHEL上安装tcpdump实用程序,请发出以下命令:┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]└─$sudodnfinstalltcpdump注意,如果要求安装libcap,输入Yes或Y,因为是核心依赖,否则tcpdump会拒绝开始。这应该安装tcpdump实用程序并解决“找不到命令”错误。现在tcpdump已安装在您的系统上,让我们探索它提供的不同选项和功能。使用tcpdump捕获网络流量tcpdump提供了许多标志来修改其执行,但它也可以作为独立命令运行。但是,在没有任何标志或参数的情况下运行tcpdump会忽略其全部潜力。根据需要使用一些标志来调整执行和输出总是更好。键入此命令以使用tcpdump监视网络传输:┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]└─$sudotcpdump现在tcpdump将开始自动捕获网络数据包,直到使用Ctrl+Z发送中断手动中断进程的信号。要限制捕获的数据包总数,请使用-c标志并在其旁边输入所需的数据包限制:┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]└─$sudotcpdump-c5如果您现在无法理解输出,则需要熟悉tcpdump输出格式:https://www.linuxmi.com/linux-tcpdump-shili.html使用tcpdump检查可用的网络接口默认情况下,tcpdump启动从任何可用的网络接口捕获流量。如果您有多个正在使用的活动网络接口,您可能需要定义tcpdump应该从中捕获数据包的网络接口。要在特定接口上启动tcpdump,您必须首先知道接口名称。以下是使用tcpdump列出所有可用网络接口的方法:┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]└─$sudotcpdump-D或者,您可以将--list-interfaces标志添加到In命令:┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]└─$sudotcpdump--list-interfaces返回的输出包含tcpdump可以侦听的所有活动网络接口的列表。要配置tcpdump以捕获来自特定网络接口的传输,请输入以下命令:sudotcpdump-iinterface_id或者,您可以将--interface标志添加到命令中:sudotcpdump--interfaceinterface_id现在我们已经捕获了一些数据包,让我们仔细看看它们,看看如何调整输出以使其更具可读性。探索tcpdump过滤器tcpdump能够在单次运行中捕获大量流量。在调查或解决特定主机或网络协议的问题时,这种信息过载会使您偏离正轨。这就是tcpdump过滤器发挥作用的地方。您可以将某些标志附加到tcpdump命令以过滤掉网络流量并捕获特定数据包。然后您可以存储这些数据包,然后分析它们以找到任何与网络相关的问题的根源。让我们学习如何在tcpdump中使用过滤器。(1)根据使用的网络协议过滤数据包要过滤通过特定协议传输的数据包,使用tcpdump命令输入协议名称,它只会捕获通过定义的网络协议传输的数据包。例如,要捕获基于ICMP的数据包,只需将icmp附加到tcpdump命令的末尾即可。如果您只想捕获UDP或TCP数据包,过程是相同的。┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]└─$sudotcpdump-c3icmp此命令只有在通过ICMP协议交换数据时才会返回输出。(2)基于host过滤数据包可以配置tcpdump使用host参数来抓取与单个主机相关的数据包。当您网络中的所有系统都在运行时,只有一个系统除外,这尤其有用。此过滤器可让您执行有针对性的调查并加快整体故障排除工作流程,因为您不会被不必要的数据分散注意力。抓取特定主机相关的数据包,使用host参数定义主机的网络地址:┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]└─$sudotcpdump-c3host192.168.174.135与网络协议过滤器类似,此命令仅在任何正在进行的传输与定义的主机相关时才返回输出。(3)基于活动端口过滤数据包tcpdump配备了一个参数,可以过滤网络流量,只捕获进出特定端口的数据包。要从特定端口捕获数据包,请将端口标志附加到tcpdump命令并在其旁边定义端口号。例如,要捕获任何传入或传出的HTTP流量,定义端口80:┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]└─$sudotcpdump-c3port80tcpdump将监听端口80,等待HTTP传输。一旦检测到网络中的HTTP数据包,它就会捕获它们。(4)将过滤器组合在一起进行高级排序前面几节讨论了如何根据端口、协议或主机过滤流量,但是如果您想使用特定网络协议从特定主机上的单个端口捕获流量怎么办?嗯,您很幸运,因为tcpdump命令能够使用逻辑运算符,所以这是可能的。使用443端口从单个主机抓包,使用如下命令:┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]└─$sudotcpdump-c3host192.168.174.135andport443check数据包捕获内容默认情况下,tcpdump在输出中显示数据包标头。虽然这在大多数情况下就足够了,但有时您可能想要或需要更深入地查看捕获的数据。您可以将某些参数传递给tcpdump命令以检查捕获的数据包的内容。下面是查看数据包内容的方法:┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]└─$sudotcpdump-c3-x该命令返回抓包中内容的十六进制数据包版本。如果想查看ASCII格式的数据,可以使用-A参数传递:┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]└─$sudotcpdump-Asavetcpdumpoutputto与几乎所有的文件一样与其他Linux命令行工具一样,您可以将tcpdump生成的输出存储到一个文件中以供以后参考。这可以通过在命令中添加-w标志来完成。执行后,tcpdump会将捕获的数据存储到一个.pcap文件中,稍后可以使用tcpdump或Wireshark等其他网络监控工具对其进行分析。键入此命令以将tcpdump命令的输出存储到文件中:┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]└─$sudotcpdump-wlinuxmi.pcap要读取.pcap文件,你可以使用带-r参数的tcpdump:┌──(linuxmi?linuxmi)-[~/www.linuxmi.com]└─$sudotcpdump-rlinuxmi.pcapLinux的最佳网络工具Linux自带很多网络工具,只要是软件方面的,就可以解决一切网络问题。无论您是管理网络的系统管理员还是日常Linux用户,了解如何使用Linux中一些最好的网络工具肯定会派上用场。由于实际可用的网络命令列表可能非常多,这里列出了一些您应该知道的最重要的Linux网络工具。
