来自:Linux迷
链接:

您是否正在尝试捕获数据包以分析网络上的流量?也许您是一名服务器管理员,遇到了问题并想要监控网络上传输的数据。无论情况如何,tcpdump Linux 实用程序都是您所需要的。
在本文中,我们将详细讨论 tcpdump 命令,以及一些有关如何在 Linux 系统上安装和使用 tcpdump 的指南。
什么是 tcpdump 命令?
Tcpdump 是一个强大的网络监控工具,它允许用户有效地过滤网络上的数据包和流量。您可以获得有关 TCP/IP 和网络上传输的数据包的详细信息。Tcpdump 是一个命令行实用程序,这意味着您可以在没有显示的 Linux 服务器上运行它。
系统管理员还可以将 tcpdump 实用程序与 cron集成,以便自动执行各种任务,例如日志记录。由于其众多功能使其非常通用,因此 tcpdump 既可以用作故障排除工具,也可以用作安全工具。
如何在 Linux 上安装 tcpdump
虽然大多数时候您会发现 tcpdump 预装在您的系统上,但某些 Linux 发行版并未随附该软件包。因此,您可能必须在系统上手动安装该实用程序。
您可以使用 which命令检查系统上是否安装了 tcpdump 。
┌──(linuxmi㉿linuxmi)-[~/
如果输出显示目录路径 ( /usr/bin/tcpdump),则您的系统已安装该软件包。但是,如果没有,您可以使用系统上的默认包管理器轻松完成。
要在基于 Debian 的发行版(例如 Ubuntu)上安装 tcpdump:
┌──(linuxmi㉿linuxmi)-[~/
在基于 Arch 的系统上,运行:
┌──(linuxmi㉿linuxmi)-[~/
要在 Fedora、CentOS 和 RHEL 上安装 tcpdump 实用程序,请发出以下命令:
┌──(linuxmi㉿linuxmi)-[~/
请注意,tcpdump 包需要 libcap作为依赖项,因此请确保您也将其安装在系统上。
在 Linux 上捕获网络数据包的 Tcpdump 示例
现在您已经在 Linux 机器上成功安装了 tcpdump,是时候监控一些数据包了。由于 tcpdump 需要超级用户权限才能执行大多数操作,因此您必须将 sudo添加到您的命令中。
1.列出所有网络接口
要检查哪些网络接口可用于捕获,请在 tcpdump 命令中使用 -D标志。
tcpdump-D
将--list-interfaces标志作为参数传递将返回相同的输出。
┌──(linuxmi㉿linuxmi)-[~/
输出将是系统上存在的所有网络接口的列表。
获得网络接口列表后,是时候通过捕获系统上的数据包来监控网络了。尽管您可以指定要使用的接口,但 any参数命令 tcpdump 使用任何活动接口捕获网络数据包。
┌──(linuxmi㉿linuxmi)-[~/
2. tcpdump 输出格式
从第三行开始,输出的每一行表示 tcpdump 捕获的特定数据包。这是单个数据包的输出的样子。
请记住,并非所有数据包都以这种方式捕获,但这是大多数数据包遵循的一般格式。
输出包含以下信息。
接收数据包的时间戳
接口名称
包流
网络协议名称
IP 地址和端口详细信息
TCP 标志
数据包中数据的序号
确认数据
窗口大小
数据包长度
第二个和第三个字段表示使用的接口和数据包的流向。在上面的代码片段中, eth0是无线接口的名称, Out是数据包流。
第四个字段包括与网络协议名称有关的信息。通常,您会发现两种协议- IP和 IP6,其中 IP 表示 IPV4,IP6 表示 IPV6。
下一个字段包含 IP 地址或源和目标系统的名称。IP 地址后跟端口号。
输出中的第六个字段由 TCP 标志组成。tcpdump 输出中使用了各种标志。
标志名称
值
描述
SYN
S
连接开始
FIN
F
连接完成
PUSH
O
数据被推送
RST
R
连接已重置
ACK
确认
输出还可以包含多个 TCP 标志的组合。例如, FLAG [f.]代表一个 FIN-ACK 包。
输出中的第九个字段包含窗口大小( win 62780),即接收缓冲区中可用的字节数。窗口大小后面还有几个其他字段,包括最大段大小 (MSS)。
最后一个字段( length 39)包含 tcpdump 捕获的整个数据包的长度。
3.限制抓包数
第一次运行 tcpdump 命令时,您可能会注意到系统会继续捕获网络数据包,直到您传递中断信号。 您可以通过使用-c标志预先指定要捕获的数据包计数来覆盖此默认行为。
┌──(linuxmi㉿linuxmi)-[~/
上述命令将从任何活动的网络接口捕获3个数据包。
4.根据字段过滤数据包
当您对问题进行故障排除时,在终端上获取大量文本输出并不会使其变得更容易。这就是 tcpdump 中的过滤功能发挥作用的地方。您可以根据主机、协议、端口号等各种字段过滤数据包。
要仅捕获 TCP 数据包,请键入:
┌──(linuxmi㉿linuxmi)-[~/
同样,如果要使用端口号过滤输出:
┌──(linuxmi㉿linuxmi)-[~/
上述命令只会检索通过指定端口传输的数据包。
要获取特定主机的数据包详细信息:
tcpdump--interfaceany-c5 host112.123.13.145
如果要过滤特定主机发送或接收的数据包,请在命令中使用 src或 dst参数。
tcpdump--interfaceany-c5 src112.123.13.145 tcpdump--interfaceany-c5 dst112.123.13.145
您还可以使用逻辑运算符 and和 or将两个或多个表达式组合在一起。例如,要获取属于源 IP 112.123.13.145的数据包并使用端口 80:
tcpdump--interfaceany-c10 src112.123.13.145 andport80
可以使用 括号将复杂表达式组合在一起,如下所示:
tcpdump--interfaceany-c10 "( src112.123.13.145 orsrc234.231.23.
234) and (port 45 or port 80)"
5.查看包的内容
您可以在 tcpdump 命令中使用 -A和 -x标志来分析网络数据包的内容。 -A标志代表 ASCII格式,-x表示 十六进制格式。
查看系统捕获的下一个网络数据包的内容:
tcpdump -- interfaceany- c1 - Atcpdump -- interfaceany- c1 - x
6. 将捕获数据保存到文件
如果您想保存捕获数据以供参考,tcpdump 可以帮助您。只需使用默认命令传递 -w标志即可将输出写入文件而不是在屏幕上显示。
tcpdump -- interfaceany- c10 - wdata. pcap
.pcap文件扩展名代表数据包捕获数据。您还可以使用- v标志以详细模式发出上述命令。
tcpdump -- interfaceany- c10 - wdata. pcap- v
要使用 tcpdump 读取 .pcap文件,请使用 -r标志,后跟文件路径。 -r代表 读取。
tcpdump-rdata.pcap
您还可以从文件中保存的数据包数据中过滤网络数据包。
tcpdump-rdata.pcap port80
在 Linux 上监控网络流量
如果您被分配了管理 Linux 服务器的任务,那么 tcpdump 命令是一个很好的工具,可以包含在您的武器库中。您可以通过实时捕获网络上传输的数据包轻松解决与网络相关的问题。
但在此之前,您的设备必须连接到互联网。对于 Linux 初学者来说,即使通过命令行连接 Wi-Fi 也可能有点挑战。但是,如果您使用正确的工具,那就轻而易举了。
END
官方站点:
Linux命令大全:
(新群,火热加群中……)
标签: linux服务器运维