前言
Tcpdump
是用于分析网络和查找相关网络问题的出色工具。它会在数据包经过时捕获数据包,并向您显示网络上正在发生的事情和传入情况。该命令的输出显示在 STDOUT
上,也可以存储在文件中。
感谢开发人员,他们将Tcpdump
保留为开源项目。它可以在Unix和Linux系统上免费获得。视窗有一个“微海外杠TCPDUMP
用于视窗”变体,并带有相关的价格标签。
tcpdump
有一长串可用的选项。在本文中,我将重点介绍经常使用的核心选项。
检查可用接口
要检查要捕获的所有可用接口,请使用-D
标志作为:
sudo tcpdump -D
这将列出系统上的所有接口,包括无线和有线接口等。该标志也可以获得相同的功能:--list-interfaces
sudo tcpdump --list-interfaces
捕获特定接口的数据包
在不使用任何选项的情况下,Tcpdump
将扫描所有接口。该标志捕获来自特定接口的流量:-i
tcpdump -i <target-interface>
将 替换为要扫描的接口的名称。例如,在 接口 的情况下,此命令将作为:target-interfaceeth0
sudo tcpdump -i eth0
注意:从现在开始,我将使用 or 作为目标接口。因此,无论您在何处看到 -i 标志,它都将伴随界面或 eth0
eth1
eth0
eth1
预设捕获计数
该标志可用于预设要捕获的数据包数-c
例如,我们将此值设置为 4
以捕获四个数据包。在本例中,该命令将为:
sudo tcpdump -c 4 -i eth0
如果未指定计数,则将使用组合键或 手动中断捕获操作。ctrl+cctrl+z
在下面的文章中,我将根据需要将标志与其他标志一起添加。这将有助于我们清晰,轻松地理解命令的输出。-c
获取详细输出
要获取命令的详细输出,可以使用标志:tcpdump-v
sudo tcpdump -c 6 -v -i eth0
您可以使用更多标志 as 或 进一步提高详细程度。这将在终端上产生更详细的输出:-v
-vv
-vvv
sudo tcpdump -vv -i eth0
以 ASCII 格式打印捕获的数据
有时,我们可能要求 Tcp
转储输出采用十六进制或 ASCII 格式。我们可以使用 ASCII 格式以及 ASCII 和十六进制格式的选项来解决这个问题:-A-
XX
sudo tcpdump -XX -i eth0
捕获从特定源 IP 发送的数据包
如果要检查来自特定源 IP 地址的流量,请使用以下命令:
sudo tcpdump -i eth0 src <source-ip-address>
让我们将源 IP 作为并查看流量的详细信息:192.168.56.11
sudo tcpdump -i eth1 -c 5 src 192.168.56.11
此处的计数 5 将仅捕获前五个数据包。
捕获发送到特定目标 IP 的数据包
如果要检查发送到特定目标 IP 地址的流量,请使用以下命令:
sudo tcpdump -i eth0 dst <source-ip-address>
让我们将目标 IP 作为并查看流量的详细信息:192.168.56.11
sudo tcpdump -i eth1 -c 5 dst 192.168.56.11
将过滤选项与 Tcp 转储结合使用
这是缩小捕获数据范围以进行检查的好方法。这将消除不必要的流量并简化您的工作。为此,您可以根据主机、端口、协议和其他条件筛选流量。
让我们看看其中的一些:
端口号
如果要根据端口号过滤流量,例如端口 22
,则按如下方式执行命令:tcpdump
sudo tcpdump -i eth0 port 22
此命令将捕获 TCP 和 UDP 流量。
协议
与端口指令类似,该指令根据特定流量过滤数据包捕获。在这里,您可以使用协议名称或协议编号作为参数值:proto
sudo tcpdump -i eth0 proto tcp
sudo tcpdump -i eth0 proto 6
令您惊讶的是,上面的两个命令是等效的。这是因为 是 TCP 的协议编号。6
主机过滤器
host
参数只是使用其 IP 过滤来自特定主机的流量:
sudo tcpdump -i eth0 host 192.168.56.10
这将捕获所有流量并从此主机流出。有趣的是,您可以将多个过滤器应用于主机,以针对特定类型的数据包流量。
例如:
sudo tcpdump -i eth1 -c 50 “(host 192.168.56.11) and (port 443 or port 80)"
在这里,我将不同的过滤规则合并到一个规则中。您可以看到此规则是过滤和流量。这是因为该规则包含端口 80
和 443
(公共网络端口)的筛选器。http
https
保存捕获的数据
如果要将捕获的数据存储在文件中,可以这样操作。
sudo tcpdump -i eth0 -c 10 -w my_capture.pcap
将数据包计数保持在较小的值;否则,您可能需要手动停止该过程。
读取捕获的数据
您可以使用存储在文件中的数据与Wireshark
或任何其他图形网络协议分析器进行分析。.pcap
您可以使用 tcp
转储本身来读取它。
tcpdump -r my_capture.pcap
上面的屏幕截图显示了上述文件的数据。my_capture.pcap
结语
希望您对如何使用不同的方式使用tcpdump命令有一个很好的想法。当您从远程无外设计算机捕获数据包时,这是最佳选择。
如果您想要一种更直观的方式来理解数据包捕获,请尝试使用Wireshark。