如何在 Linux 上使用 tcpdump 命令捕获和分析数据包
tcpdump
是一个有名的命令行数据包分析工具。我们可以使用 tcpdump
命令捕获实时 TCP/IP 数据包,这些数据包也可以保存到文件中。之后这些捕获的数据包可以通过 tcpdump
命令进行分析。tcpdump
命令在网络层面进行故障排除时变得非常方便。
tcpdump
在大多数 Linux 发行版中都能用,对于基于 Debian 的Linux,可以使用 apt
命令安装它。
1 |
|
在基于 RPM 的 Linux 操作系统上,可以使用下面的 yum
命令安装 tcpdump
。
1 |
|
当我们在没用任何选项的情况下运行 tcpdump
命令时,它将捕获所有接口的数据包。因此,要停止或取消 tcpdump
命令,请键入 ctrl+c
。在本教程中,我们将使用不同的实例来讨论如何捕获和分析数据包。
示例:1)从特定接口捕获数据包
当我们在没用任何选项的情况下运行 tcpdump
命令时,它将捕获所有接口上的数据包,因此,要从特定接口捕获数据包,请使用选项 -i
,后跟接口名称。
语法:
1 |
|
假设我想从接口 enp0s3
捕获数据包。
输出将如下所示,
1 |
|
示例:2)从特定接口捕获特定数量数据包
假设我们想从特定接口(如 enp0s3
)捕获 12 个数据包,这可以使用选项 -c {数量} -I {接口名称}
轻松实现。
1 |
|
上面的命令将生成如下所示的输出,
示例:3)显示 tcpdump 的所有可用接口
使用 -D
选项显示 tcpdump
命令的所有可用接口,
1 |
|
我正在我的一个 openstack 计算节点上运行 tcpdump
命令,这就是为什么在输出中你会看到数字接口、标签接口、网桥和 vxlan 接口
示例:4)捕获带有可读时间戳的数据包(-tttt
选项)
默认情况下,在 tcpdump
命令输出中,不显示可读性好的时间戳,如果您想将可读性好的时间戳与每个捕获的数据包相关联,那么使用 -tttt
选项,示例如下所示,
1 |
|
示例:5)捕获数据包并将其保存到文件(-w
选项)
使用 tcpdump
命令中的 -w
选项将捕获的 TCP/IP 数据包保存到一个文件中,以便我们可以在将来分析这些数据包以供进一步分析。
语法:
1 |
|
注意:文件扩展名必须为 .pcap
。
假设我要把 enp0s3
接口捕获到的包保存到文件名为 enp0s3-26082018.pcap
。
1 |
|
上述命令将生成如下所示的输出,
1 |
|
捕获并保存大小大于 N 字节的数据包。
1 |
|
捕获并保存大小小于 N 字节的数据包。
1 |
|
示例:6)从保存的文件中读取数据包(-r
选项)
在上面的例子中,我们已经将捕获的数据包保存到文件中,我们可以使用选项 -r
从文件中读取这些数据包,例子如下所示,
1 |
|
用可读性高的时间戳读取包内容,
1 |
|
示例:7)仅捕获特定接口上的 IP 地址数据包(-n
选项)
使用 tcpdump
命令中的 -n
选项,我们能只捕获特定接口上的 IP 地址数据包,示例如下所示,
1 |
|
上述命令输出如下,
1 |
|
您还可以使用 tcpdump
命令中的 -c
和 -N
选项捕获 N 个 IP 地址包,
1 |
|
示例:8)仅捕获特定接口上的 TCP 数据包
在 tcpdump
命令中,我们能使用 tcp
选项来只捕获 TCP 数据包,
1 |
|
示例:9)从特定接口上的特定端口捕获数据包
使用 tcpdump
命令,我们可以从特定接口 enp0s3
上的特定端口(例如 22)捕获数据包。
语法:
1 |
|
1 |
|
示例:10)在特定接口上捕获来自特定来源 IP 的数据包
在 tcpdump
命令中,使用 src
关键字后跟 IP 地址,我们可以捕获来自特定来源 IP 的数据包,
语法:
1 |
|
例子如下,
1 |
|
示例:11)在特定接口上捕获来自特定目的 IP 的数据包
语法:
1 |
|
1 |
|
示例:12)捕获两台主机之间的 TCP 数据包通信
假设我想捕获两台主机 169.144.0.1 和 169.144.0.20 之间的 TCP 数据包,示例如下所示,
1 |
|
使用 tcpdump
命令只捕获两台主机之间的 SSH 数据包流,
1 |
|
示例:13)捕获两台主机之间(来回)的 UDP 网络数据包
语法:
1 |
|
1 |
|
示例:14)捕获十六进制和 ASCII 格式的数据包
使用 tcpdump
命令,我们可以以 ASCII 和十六进制格式捕获 TCP/IP 数据包,
要使用 -A
选项捕获 ASCII 格式的数据包,示例如下所示:
1 |
|
要同时以十六进制和 ASCII 格式捕获数据包,请使用 -XX
选项。
1 |
|
这就是本文的全部内容,我希望您能了解如何使用 tcpdump
命令捕获和分析 TCP/IP 数据包。请分享你的反馈和评论。
via: https://www.linuxtechi.com/capture-analyze-packets-tcpdump-command-linux/
作者:Pradeep Kumar
选题:lujun9972
译者:ypingcn
校对:wxy