当前位置:首页 > 教育

tcpdump命令详解 在Linux命令行中使用tcpdump「超详细」

灵活而强大的命令行工具可以帮助减轻排除网络问题的痛苦。

根据我作为系统管理员的经验,我经常发现很难解决网络连接问题。Tcpdump是这些情况下的好朋友。

Tcpdump是一个命令行实用程序,允许捕获和分析通过系统的网络流量。它通常用于帮助解决网络问题,以及安全工具。

Tcpdump是一个功能强大、用途广泛的工具,有许多选项和过滤器,可以在各种情况下使用。由于它是一个命令行工具,所以最好在远程服务器或图形用户界面不可用的设备上运行,以收集稍后可以分析的数据。它也可以在后台启动,或者使用cron等工具作为计划作业启动。

在本文中,我们将介绍tcpdump的一些最常见的功能。

1.在Linux上安装

Tcpdump包含在几个Linux发行版中,所以很可能已经安装好了。使用以下命令检查系统上是否安装了tcpdump:

$ whichtcpdump

/usr/sbin/tcpdump

如果没有安装tcpdump,您可以使用分发包管理器安装它。例如,在CentOS或红帽企业版Linux上,如下所示:

$ sudoyum install-ytcpdump

Tcpdump需要libpcap,这是一个用于网络数据包捕获的库。如果没有安装,它将作为依赖项自动添加。

现在你准备好开始抓包了。

2.使用tcpdump抓取数据包

为了获取用于故障排除或分析的数据包,tcpdump需要提升其权限,因此在下面的示例中,大多数命令都以sudo作为前缀。

首先,使用命令tcpdump -D查看哪些接口可用于捕获:

$ sudotcpdump -D

1.eth0

2.virbr0

3.etp

4 .任意(在所有接口上捕获的伪设备)

5 . lo[环回]

在上面的例子中,您可以看到计算机中所有可用的接口。特殊界面允许在任何活动界面中捕捉。

让我们开始捕获一些数据包。通过运行以下命令捕获任何接口上的所有数据包:

$ sudotcpdump -iany

tcpdump:抑制详细输出,使用-vor-vvffull协议解码

监听任何链接类型的LINUX_SLL (Linux熟),捕获大小262144字节

09:56:18 . 293641 IP rhel 75 . local domain . ssh & gt;192.168.64.1.56322: Flags [P.],seq3770820720:3770820916,ack 3503648727,win 309,options [nop,nop,TS val 76577898ecr 510770929],length 196

09:56:18 . 293794 IP 192 . 168 . 64 . 1 . 56322 >rhel75.localdomain.ssh: Flags [。],ack 196,win 391,选项[nop,nop,TS val 510771017ecr 76577898],长度0

09:56:18.295058IP rhel75.59883 >gateway.domain: 2486+ PTR?1 . 64 . 168 . 192 . in-addr . arpa(43)

09:56:18.310225 IP gateway . domain >rhel 75.59883:2486 Nxdomain * 0/1/0(102)

09:56:18 . 312482 IP rhel 75 . 49685 & gt;gateway.domain: 34242+ PTR?28 . 64 . 168 . 192 . in-addr . arpa(44)

09:56:18.322425 IP gateway . domain >rhel 75.49685:34242 Nxdomain * 0/1/0(103)

09:56:18 . 323164 IP rhel 75 . 56631 & gt;gateway.domain: 29904+ PTR?1 . 122 . 168 . 192 . in-addr . arpa(44)

09:56:18.323342 IP rhel 75 . local domain . ssh & gt;192.168.64.1.56322: Flags [P.],seq196:584,ack 1,win 309,options [nop,nop,TS val 76577928ecr 510771017],length 388

09:56:18 . 323563 IP 192 . 168 . 64 . 1 . 56322 >rhel75.localdomain.ssh: Flags [。],ack 584,win 411,选项[nop,nop,TS val 510771047ecr 76577928],长度0

09:56:18.335569 IP gateway . domain >rhel 75.56631:29904 Nxdomain * 0/1/0(103)

09:56:18 . 336429 IP rhel 75 . 44007 & gt;gateway.domain: 61677+ PTR?98 . 122 . 168 . 192 . in-addr . arpa(45)

09:56:18 . 336655 IP gateway . domain >rhel 75.44007:61677 * 1/0/0PTR rhel 75。(65)

09:56:18 . 337177 IP rhel 75 . local domain . ssh & gt;192.168.64.1.56322:标志[P.],seq584:1644,ack 1,win 309,选项[nop,nop,TS val 76577942ecr 510771047],长度1060

-跳过长输出-

09:56:19 . 342939 IP 192 . 168 . 64 . 1 . 56322 >rhel75.localdomain.ssh: Flags [。],ack 1752016,win 1444,选项[nop,nop,TS val 510772067ecr 76578948],长度0

C

9003捕获的数据包

过滤器接收到9010数据包

7内核丢弃的数据包

$

Tcpdump继续捕获数据包,直到收到中断信号。可以按Ctrl+C中断捕捉。如您在本例中所见,tcpdump捕获了9000多个数据包。在这种情况下,由于我使用ssh连接到这个服务器,tcpdump捕获了所有这些包。要限制捕获的数据包数量并停止tcpdump,请使用-c选项:

$ sudotcpdump -iany -c5

tcpdump:抑制详细输出,使用-vor-vvffull协议解码

监听任何链接类型的LINUX_SLL (Linux熟),捕获大小262144字节

11:21:30.242740 IP rhel 75 . local domain . ssh & gt;192.168.64.1.56322: Flags [P.],seq3772575680:3772575876,ack 3503651743,win 309,options [nop,nop,TS val 81689848ecr 515883153],length 196

11:21:30 . 242906 IP 192 . 168 . 64 . 1 . 56322 >rhel75.localdomain.ssh: Flags [。],ack 196,win 1443,选项[nop,nop,TS val 515883235ecr 81689848],长度0

11:21:30.244442IP rhel75.43634 >gateway.domain: 57680+ PTR?1 . 64 . 168 . 192 . in-addr . arpa(43)

11:21:30.244829 IP gateway . domain >rhel 75.43634:57680 nxdomain 0/0/0(43)

11:21:30.247048IP rhel75.33696 >gateway.domain: 37429+ PTR?28 . 64 . 168 . 192 . in-addr . arpa(44)

5捕获的数据包

过滤器收到12个数据包

0内核丢弃的数据包

$

在这种情况下,tcpdump会在捕获五个数据包后自动停止捕获。这在不同的场景中很有用,例如,如果您排除连接并捕获一些初始包。当我们应用过滤器来捕获特定的数据包时,这就更有用了(如下所示)。

默认情况下,tcpdump将IP地址和端口解析为名称,如上例所示。排除网络故障时,通常更容易使用IP地址和端口号。使用选项-n和端口解析以及-nn禁用名称解析:

$ sudotcpdump -iany -c5-nn

tcpdump:抑制详细输出,使用-vor-vvffull协议解码

监听任何链接类型的LINUX_SLL (Linux熟),捕获大小262144字节

23:56:24 . 292206 IP 192 . 168 . 64 . 28 . 22 >192.168.64.1.35110: Flags [P.],seq166198580:166198776,ack 2414541257,win 309,options [nop,nop,TS val 615664ecr 540031155],length 196

23:56:24 . 292357 IP 192 . 168 . 64 . 1 . 35110 >192.168.64.28.22:标志[。],ack 196,win 1377,选项[nop,nop,TS val 540031229ecr 615664],长度0

23:56:24 . 292570 IP 192 . 168 . 64 . 28 . 22 >192.168.64.1.35110: Flags [P.],seq196:568,ack 1,win 309,options [nop,nop,TS val 615664ecr 540031229],length 372

23:56:24 . 292655 IP 192 . 168 . 64 . 1 . 35110 >192.168.64.28.22:标志[。],ack 568,win 1400,选项[nop,nop,TS val 540031229ecr 615664],长度0

23:56:24 . 292752 IP 192 . 168 . 64 . 28 . 22 >192.168.64.1.35110:标志[P.],seq568:908,ack 1,win 309,选项[nop,nop,TS val 615664ecr 540031229],长度340

5捕获的数据包

6过滤器接收的数据包

0内核丢弃的数据包

如上所示,捕获输出现在显示了IP地址和端口号。它还防止tcpdump发布DNS查找,这有助于在排除网络问题时减少网络流量。

现在我们可以捕获网络数据包了,让我们探索一下这些输出意味着什么。

3.理解输出格式

Tcpdump可以捕获和解码很多不同的协议,比如TCP、UDP、ICMP等等。虽然这里不能一一介绍,但是为了帮助入门,我们来探索一下TCP包。您可以在tcpdump的手册页中找到关于不同协议格式的更多详细信息。tcpdump捕获的典型TCP数据包如下:

08:41:13 . 729687 IP 192 . 168 . 64 . 28 . 22 >192.168.64.1.41916: Flags [P.],seq 196:568,ack 1,win 309,options [nop,nop,TS val 117964079 ecr 816509256],length 372

这些字段可能因发送的数据包类型而异,但这是一种通用格式。

第一个字段08: 41: 13.729687表示根据本地时钟接收的数据包的时间戳。

接下来,IP代表网络层协议——在本例中是IPv4。对于IPv6数据包,该值为IP6。

下一个字段192.168.64.28.22是源IP地址和端口。接下来是目的IP地址和端口,用192.168.64.1.41916表示。

TCP标签[P.]可以在源和目的之后找到。该字段的典型值包括:

值标记类型描述SSYN连接开始FFIN连接结束PPUSH数据 pushRRST连接重置.ACK确认

该字段也可以是这些值的组合,例如同步确认包的[s]。

接下来是数据包中包含的数据的序列号。对于捕获的第一个数据包,这是一个绝对数字。随后的数据包使用相对编号,以便于遵从。在这个例子中,序列是seq 196:568,这意味着包包含流的字节196到568。

接下来是Ack号:ack 1。这种情况下是1,因为这是发送数据的一方。对于接收数据的一方,该字段指示流上的下一个预期字节(数据)。例如,这个过程中下一个数据包的Ack号是568。

下一个字段是窗口大小win 309,它指示接收缓冲区中可用的字节数,后跟TCP选项,如MSS(最大段大小)或窗口比率。有关传输控制协议选项的更多信息,请参见传输控制协议参数。

最后,我们有包长度,长度372,它表示有效载荷数据的长度(以字节为单位)。长度是序列号中最后一个字节和第一个字节之间的差值。

现在让我们学习如何过滤包来缩小结果,更容易地解决具体问题。

4.过滤数据包

如上所述,tcpdump可以捕获太多的软件包,其中一些甚至与正在排除故障的问题无关。例如,如果您正在解决一个与网络服务器的连接问题,您对SSH流量不感兴趣,因此从输出中删除SSH数据包可以更容易地处理真正的问题。

tcpdump最强大的功能之一,就是可以用各种参数过滤捕获的数据包,比如源和目的IP地址、端口、协议等等。让我们来看看一些最常见的参数。

协议

要根据协议过滤数据包,请在命令行中指定协议。例如,仅使用以下命令捕获互联网控制消息协议:

$ sudotcpdump -iany -c5icmp

tcpdump:抑制详细输出,使用-vor-vvffull协议解码

监听任何链接类型的LINUX_SLL (Linux熟),捕获大小262144字节

在另一台终端上,尝试ping另一台机器:

$ pingopensource.com

PING opensource.com(54 . 204 . 39 . 132)56(84)字节的数据。

来自ec2-54-204-39-132.compute-1.amazonaws.com的64字节(54 . 204 . 39 . 132):icmp _ seq = 1ttl = 47 time = 39.6毫秒

回到tcpdump捕获,注意tcpdump只捕获和显示与ICMP相关的数据包。在这种情况下,tcpdump不显示解析opensource.com名称时生成的名称解析包:

09:34:20.136766IP rhel75 >ec2-54-204-39-132 . compute-1 . Amazon AWS . com:ICMP echo request,id20361,seq1,length 64

09:34:20.176402 ec2-54-204-39-132.compute-1.amazonaws.com;rhel75: ICMP echoreply,id20361,seq1,长度64

09:34:21.140230IP rhel75 >ec2-54-204-39-132 . compute-1 . Amazon AWS . com:ICMP echo request,id20361,seq2,length 64

ec2-54-204-39-132.compute-1.amazonaws.com时间09:34:21.180020;rhel75: ICMP echoreply,id20361,seq2,长度64

09:34:22.141777IP rhel75 >ec2-54-204-39-132 . compute-1 . Amazon AWS . com:ICMP echo request,id20361,seq3,length 64

5捕获的数据包

5过滤器接收的数据包

0内核丢弃的数据包

主机

使用主机过滤器将捕获限制为与特定主机相关的数据包:

$ sudotcpdump-iany-C5-nnhost 54.204.39.132

tcpdump:抑制详细输出,使用-vor-vvffull协议解码

监听任何链接类型的LINUX_SLL (Linux熟),捕获大小262144字节

09:54:20 . 042023 IP 192 . 168 . 122 . 98 . 39326 >54.204.39.132.80:标志[S],seq1375157070,win 29200,选项[mss 1460,sackOK,TS val 122350391ecr 0,nop,wscale 7],长度0

09:54:20 . 088127 IP 54 . 204 . 39 . 132 . 80 >192.168.122.98.39326: Flags [S.],seq1935542841,ack 1375157071,win 28960,options [mss 1460,sackOK,TS val 522713542ecr 122350391,nop,wscale 9],length 0

09:54:20 . 088204 IP 192 . 168 . 122 . 98 . 39326 >54.204.39.132.80:标志[。],ack 1,win 229,选项[nop,nop,TS val 122350437ecr 522713542],长度0

09:54:20 . 088734 IP 192 . 168 . 122 . 98 . 39326 >54.204.39.132.80: Flags [P.],seq1:113,ack 1,win 229,options [nop,nop,TS val 122350438ecr 522713542],length 112: HTTP: GET /HTTP/1.1

09:54:20 . 129733 IP 54 . 204 . 39 . 132 . 80 >192.168.122.98.39326:旗帜[。],ack 113,win 57,选项[nop,nop,TS val 522713552ecr 122350438],长度0

5捕获的数据包

5过滤器接收的数据包

0内核丢弃的数据包

在本例中,tcpdump仅捕获和显示进出主机54.204.39.132的数据包。

港市

要根据所需的服务或端口过滤数据包,请使用端口过滤器。例如,使用以下命令捕获与网络服务相关的数据包:

$ sudotcpdump -iany -c5-nnport 80

tcpdump:抑制详细输出,使用-vor-vvffull协议解码

监听任何链接类型的LINUX_SLL (Linux熟),捕获大小262144字节

09:58:28 . 790548 IP 192 . 168 . 122 . 98 . 39330 >54.204.39.132.80:标志[S],seq1745665159,win 29200,选项[mss 1460,sackOK,TS val 122599140ecr 0,nop,wscale 7],长度0

09:58:28 . 834026 IP 54 . 204 . 39 . 132 . 80 >192.168.122.98.39330: Flags [S.],seq4063583040,ack 1745665160,win 28960,options [mss 1460,sackOK,TS val 522775728ecr 122599140,nop,wscale 9],长度0

09:58:28 . 834093 IP 192 . 168 . 122 . 98 . 39330 >54.204.39.132.80:标志[。],ack 1,win 229,选项[nop,nop,TS val 122599183ecr 522775728],长度0

09:58:28 . 834588 IP 192 . 168 . 122 . 98 . 39330 >54.204.39.132.80: Flags [P.],seq1:113,ack 1,win 229,options [nop,nop,TS val 122599184ecr 522775728],length 112: HTTP: GET /HTTP/1.1

09:58:28 . 878445 IP 54 . 204 . 39 . 132 . 80 >192.168.122.98.39330:旗帜[。],ack 113,win 57,选项[nop,nop,TS val 522775739ecr 122599184],长度0

5捕获的数据包

5过滤器接收的数据包

0内核丢弃的数据包

跟踪IP/主机名

您还可以根据源或目标IP地址或主机名过滤数据包。例如,要从主机192.168.122.98捕获数据包:

$ sudotcpdump-iany-C5-nns RC 192 . 168 . 122 . 98

tcpdump:抑制详细输出,使用-vor-vvffull协议解码

监听任何链接类型的LINUX_SLL (Linux熟),捕获大小262144字节

10:02:15 . 220824 IP 192 . 168 . 122 . 98 . 39436 & gt;192.168.122.1.53: 59332+ A?opensource.com。(32)

10:02:15 . 220862 IP 192 . 168 . 122 . 98 . 39436 >192.168.122.1.53: 20749+ AAAA?opensource.com。(32)

10:02:15 . 364062 IP 192 . 168 . 122 . 98 . 39334 >54.204.39.132.80:标志[S],seq1108640533,win 29200,选项[mss 1460,sackOK,TS val 122825713ecr 0,nop,wscale 7],长度0

10:02:15 . 409229 IP 192 . 168 . 122 . 98 . 39334 >54.204.39.132.80:标志[。],ack 669337581,win 229,选项[nop,nop,TS val 122825758ecr 522832372],长度0

10:02:15 . 409667 IP 192 . 168 . 122 . 98 . 39334 >54.204.39.132.80: Flags [P.],seq0:112,ack 1,win 229,options [nop,nop,TS val 122825759ecr 522832372],length 112: HTTP: GET /HTTP/1.1

5捕获的数据包

5过滤器接收的数据包

0内核丢弃的数据包

请注意,tcpdumps捕获源IP地址为192.168.122.98的数据包,这些数据包用于各种服务,如名称解析(端口53)和HTTP(端口80)。由于源IP不同,因此不会显示响应数据包。

相反,您可以使用dst筛选器按目标IP/主机名进行筛选:

$ sudotcpdump-iany-C5-nndst 192 . 168 . 122 . 98

tcpdump:抑制详细输出,使用-vor-vvffull协议解码

监听任何链接类型的LINUX_SLL (Linux熟),捕获大小262144字节

10:05:03 . 572931 IP 192 . 168 . 122 . 1 . 53 >192 . 168 . 122 . 98 . 47049:22481/0/0A 54.204.39.132(48)

10:05:03 . 572944 IP 192 . 168 . 122 . 1 . 53 >192.168.122.98.47049: 337700/0/0(32)

10:05:03 . 621833 IP 54 . 204 . 39 . 132 . 80 >192.168.122.98.39338: Flags [S.],seq3474204576,ack 3256851264,win 28960,options [mss 1460,sackOK,TS val 522874425ecr 122993922,nop,wscale 9],长度0

10:05:03 . 667767 IP 54 . 204 . 39 . 132 . 80 >192.168.122.98.39338:旗帜[。],ack 113,win 57,选项[nop,nop,TS val 522874436ecr 122993972],长度0

10:05:03 . 672221 IP 54 . 204 . 39 . 132 . 80 >192.168.122.98.39338: Flags [P.],seq1:643,ack 113,win 57,options [nop,nop,TS val 522874437ecr 122993972],length 642:HTTP:HTTP/1.1302 found

5捕获的数据包

5过滤器接收的数据包

0内核丢弃的数据包

复杂过滤

您也可以使用逻辑运算符来组合筛选器或创建更复杂的表达式。例如,要从源IP地址192.168.122.98和仅支持HTTP的服务中过滤数据包,请使用以下命令:

$ sudotcpdump-iany-C5-nns RC 192 . 168 . 122 . 98和端口80

tcpdump:抑制详细输出,使用-vor-vvffull协议解码

监听任何链接类型的LINUX_SLL (Linux熟),捕获大小262144字节

10:08:00 . 472696 IP 192 . 168 . 122 . 98 . 39342 >54.204.39.132.80:标志[S],seq2712685325,win 29200,选项[mss 1460,sackOK,TS val 123170822ecr 0,nop,wscale 7],长度0

10:08:00 . 516118 IP 192 . 168 . 122 . 98 . 39342 >54.204.39.132.80:标志[。],ack 268723504,win 229,选项[nop,nop,TS val 123170865ecr 522918648],长度0

10:08:00 . 516583 IP 192 . 168 . 122 . 98 . 39342 >54.204.39.132.80: Flags [P.],seq0:112,ack 1,win 229,options [nop,nop,TS val 123170866ecr 522918648],length 112: HTTP: GET /HTTP/1.1

10:08:00 . 567044 IP 192 . 168 . 122 . 98 . 39342 >54.204.39.132.80:标志[。],ack 643,win 239,选项[nop,nop,TS val 123170916ecr 522918661],长度0

10:08:00 . 788153 IP 192 . 168 . 122 . 98 . 39342 >54.204.39.132.80:标志[F.],seq112,ack 643,win 239,选项[nop,nop,TS val 123171137ecr 522918661],长度0

5捕获的数据包

5过滤器接收的数据包

0内核丢弃的数据包

您可以通过用括号将筛选器分组来创建更复杂的表达式。在这种情况下,请用引号将整个筛选器表达式括起来,以防shell将它们与shell表达式混淆:

$ sudotcdump-iany-C5-nn“端口80和(src 192.168.122.98或src 54.204.39.132)”

tcpdump:抑制详细输出,使用-vor-vvffull协议解码

监听任何链接类型的LINUX_SLL (Linux熟),捕获大小262144字节

10:10:37 . 602214 IP 192 . 168 . 122 . 98 . 39346 >54.204.39.132.80:标志[S],seq871108679,win 29200,选项[mss 1460,sackOK,TS val 123327951ecr 0,nop,wscale 7],长度0

10:10:37 . 650651 IP 54 . 204 . 39 . 132 . 80 >192.168.122.98.39346: Flags [S.],seq854753193,ack 871108680,win 28960,options [mss 1460,sackOK,TS val 522957932ecr 123327951,nop,wscale 9],长度0

10:10:37 . 650708 IP 192 . 168 . 122 . 98 . 39346 >54.204.39.132.80:标志[。],ack 1,win 229,选项[nop,nop,TS val 123328000ecr 522957932],长度0

10:10:37 . 651097 IP 192 . 168 . 122 . 98 . 39346 >54.204.39.132.80: Flags [P.],seq1:113,ack 1,win 229,options [nop,nop,TS val 123328000ecr 522957932],length 112: HTTP: GET /HTTP/1.1

10:10:37 . 692900 IP 54 . 204 . 39 . 132 . 80 >192.168.122.98.39346:旗帜[。],ack 113,win 57,选项[nop,nop,TS val 522957942ecr 123328000],长度0

5捕获的数据包

5过滤器接收的数据包

0内核丢弃的数据包

在这个例子中,我们只过滤HTTP服务(端口80)和源IP地址192.168.122.98或54.204.39.132的数据包。这是一种快速检查同一流程两端的方法。

5.检查包装内容

在前面的例子中,我们只检查数据包的报头,以获取源、目的地和端口等信息。有时,这就是解决网络连接问题所需要的全部。然而,有时我们需要检查数据包的内容,以确保我们发送的消息包含我们需要的消息或我们收到的预期响应。为了查看数据包内容,tcpdump提供了两个附加标志:-X以十六进制格式打印内容,而ASCII或-A以ASCII格式打印内容。

例如,检查网页请求的HTTP内容,如下所示:

$ sudotcpdump-iany-C10-nn-Aport 80

tcpdump:抑制详细输出,使用-vor-vvffull协议解码

监听任何链接类型的LINUX_SLL (Linux熟),捕获大小262144字节

13:02:14 . 871803 IP 192 . 168 . 122 . 98 . 39366 >54.204.39.132.80:标志[S],seq2546602048,win 29200,选项[mss 1460,sackOK,TS val 133625221ecr 0,nop,wscale 7],长度0

E..& lt..@.因特网网址中.....zb6。'....P...因特网网址中......r............

............................

13:02:14 . 910734 IP 54 . 204 . 39 . 132 . 80 >192.168.122.98.39366: Flags [S.],seq 1877348646,ack 2546602049,win 28960,options [mss 1460,sackOK,TS val 525532247 ecr 133625221,nop,wscale 9],长度0

E..& lt..@./..a6。'...zb。P..o..& amp...A..q a..........

. R.W.......................

13:02:14 . 910832 IP 192 . 168 . 122 . 98 . 39366 >54.204.39.132.80:标志[。],ack 1,win 229,选项[nop,nop,TS val 133625260ecr 525532247],长度0

E..四..@.因特网网址中.....zb6。'....P...嗷..”...........

.....R.W................

13:02:14 . 911808 IP 192 . 168 . 122 . 98 . 39366 >54.204.39.132.80: Flags [P.],seq1:113,ack 1,win 229,options [nop,nop,TS val 133625261ecr 525532247],length 112: HTTP: GET /HTTP/1.1

E.....@.因特网网址中..一..zb6。'....P...嗷..”...........

.....WGET共和国

用户代理:Wget/1.14(linux-gnu)

接受:*/*

主持人:opensource.com

连接:保持活力

................

13:02:14 . 951199 IP 54 . 204 . 39 . 132 . 80 >192.168.122.98.39366:旗帜[。],ack 113,win 57,选项[nop,nop,TS val 525532257ecr 133625261],长度0

E..4.F@。/.."6.'...zb。P..“哦…”.......9.2 .....

. R.a....................

13:02:14 . 955030 IP 54 . 204 . 39 . 132 . 80 >192.168.122.98.39366:标志[P.],seq 1:643,ack 113,win 57,选项[nop,nop,TS val 525532258 ecr 133625261],长度642: HTTP: HTTP/1.1 302 Found

E....G@。/...6.'...zb。P..“哦…”.......9 .......

. R.b....HTTP/1.1 302找到

服务器:nginx

日期:孙2018年9月23日格林尼治时间17:02:14

内容——类型:文本/html;charset=iso-8859-1

内容-长度:207

X-内容-类型-选项:否

地点:https://opensource.com/

缓存控制:最大年龄=1209600

到期日:孙,2018年10月7日17:02:14格林尼治时间

x-Request-ID:v-6 baa 3a cc-bf52-11e 8-9195-22000 ab 8 cf 2d

x-清漆:632951979

年龄:0

过孔:1.1清漆(清漆/5.2)

超高速缓存:缺失

连接:保持活动

& lt!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN " >;

& lthtml>。& lthead>。

& lttitle>。302找到& lt/title>。

& lt/head>。& ltbody>。

& ltp>。已找到<。/p>。

& ltp>。文档已移动& lta href = " https://open source . com/" gt。这里& lt/a>。。& lt/p>。

& lt/body>。& lt/html>。

................

13:02:14 . 955083 IP 192 . 168 . 122 . 98 . 39366 >54.204.39.132.80:标志[。],ack 643,win 239,选项[nop,nop,TS val 133625304 ecr 525532258],长度0

E..四..@.因特网网址中.....zb6。'....P....o..............

.....R.b................

13:02:15 . 195524 IP 192 . 168 . 122 . 98 . 39366 >54.204.39.132.80:标志[F .,seq 113,ack 643,win 239,选项[nop,nop,TS val 133625545 ecr 525532258],长度0

E..四..@.因特网网址中.....zb6。'....P....o..............

.....R.b................

13:02:15 . 236592 IP 54 . 204 . 39 . 132 . 80 >192.168.122.98.39366:标志[F.],seq 643,ack 114,win 57,选项[nop,nop,TS val 525532329 ecr 133625545],长度0

E..4.H@。/..6.'...zb。P..o..........9.我.....

。稀有......................

13:02:15 . 236656 IP 192 . 168 . 122 . 98 . 39366 >54.204.39.132.80:标志[。],ack 644,win 239,选项[nop,nop,TS val 133625586 ecr 525532329],长度0

E..四..@.因特网网址中.....zb6。'....P....o..............

.....稀有..................

捕获10个数据包

过滤器收到10个数据包

0个数据包被内核丢弃

这有助于解决API调用问题,假设调用使用普通的HTTP。该输出对于加密连接不是很有用。

6.将捕获保存到文件中

tcpdump提供的另一个有用的特性是能够将捕获保存到一个文件中,以便以后对结果进行分析。例如,这允许您以批处理模式捕获数据包,并在早上验证结果。当有太多数据包需要分析时,这也很有帮助,因为实时捕获可能发生得太快。

要将包保存到文件而不是显示在屏幕上,请使用选项-w:

$ sudotcpdump-iany-C10-nn-wweb server . pcap端口80

[sudo]recordo的密码:

侦听任何链接类型的LINUX_SLL (Linux烹饪),捕获大小262144字节

捕获了10个数据包

10过滤器收到的数据包

0内核丢弃的数据包

此命令将输出保存在名为webserver.pcap的文件中。pcap扩展名代表“数据包捕获”,这是这种文件格式的约定。

如本例所示,屏幕上不显示任何内容,根据选项-c10捕获10个数据包后完成捕获。如果您需要一些反馈来确保数据包被捕获,请使用-v选项。

Tcpdump以二进制格式创建一个文件,所以不能简单地用文本编辑器打开它。要读取文件的内容,请使用-r选项执行tcpdump:

$ tcpdump -nn-rwebserver.pcap

从filewebserver.pcap读取,链接类型LINUX_SLL (Linux熟)

13:36:57 . 679494 IP 192 . 168 . 122 . 98 . 39378 >54.204.39.132.80:标志[S],seq3709732619,win 29200,选项[mss 1460,sackOK,TS val 135708029ecr 0,nop,wscale 7],长度0

13:36:57 . 718932 IP 54 . 204 . 39 . 132 . 80 >192.168.122.98.39378: Flags [S.],seq1999298316,ack 3709732620,win 28960,options [mss 1460,sackOK,TS val 526052949ecr 135708029,nop,wscale 9],length 0

13:36:57 . 719005 IP 192 . 168 . 122 . 98 . 39378 >54.204.39.132.80:标志[。],ack 1,win 229,选项[nop,nop,TS val 135708068ecr 526052949],长度0

13:36:57 . 719186 IP 192 . 168 . 122 . 98 . 39378 >54.204.39.132.80: Flags [P.],seq1:113,ack 1,win 229,options [nop,nop,TS val 135708068ecr 526052949],length 112: HTTP: GET /HTTP/1.1

13:36:57 . 756979 IP 54 . 204 . 39 . 132 . 80 >192.168.122.98.39378:旗帜[。],ack 113,win 57,选项[nop,nop,TS val 526052959ecr 135708068],长度0

13:36:57 . 760122 IP 54 . 204 . 39 . 132 . 80 >192 . 168 . 122 . 98 . 39378:Flags[p]. seq 1:643,ack 113,win 57,options [nop,nop,TS val 526052959ecr 135708068],length 642:HTTP:HTTP/1.1302 found

13:36:57 . 760182 IP 192 . 168 . 122 . 98 . 39378 >54.204.39.132.80:标志[。],ack 643,win 239,选项[nop,nop,TS val 135708109ecr 526052959],长度0

13:36:57 . 977602 IP 192 . 168 . 122 . 98 . 39378 >54.204.39.132.80:标志[F.],seq113,ack 643,win 239,选项[nop,nop,TS val 135708327ecr 526052959],长度0

13:36:58 . 022089 IP 54 . 204 . 39 . 132 . 80 >192.168.122.98.39378:标志[F.],seq643,ack 114,win 57,选项[nop,nop,TS val 526053025ecr 135708327],长度0

13:36:58 . 022132 IP 192 . 168 . 122 . 98 . 39378 >54.204.39.132.80:标志[。],ack 644,win 239,选项[nop,nop,TS val 135708371ecr 526053025],长度0

$

因为不再直接从网络接口捕获数据包,所以不需要sudo来读取文件。

您也可以使用我们讨论过的任何过滤器来过滤文件的内容,就像使用实时数据一样。例如,通过执行以下命令,从源IP地址54.204.39.132检查捕获文件中的数据包:

$ tcpdump-nn-rwebserver . pcap src 54.204.39.132

从filewebserver.pcap读取,链接类型LINUX_SLL (Linux熟)

13:36:57 . 718932 IP 54 . 204 . 39 . 132 . 80 >192.168.122.98.39378: Flags [S.],seq1999298316,ack 3709732620,win 28960,options [mss 1460,sackOK,TS val 526052949ecr 135708029,nop,wscale 9],length 0

13:36:57 . 756979 IP 54 . 204 . 39 . 132 . 80 >192.168.122.98.39378:旗帜[。],ack 113,win 57,选项[nop,nop,TS val 526052959ecr 135708068],长度0

13:36:57 . 760122 IP 54 . 204 . 39 . 132 . 80 >192.168.122.98.39378: Flags [P.],seq1:643,ack 113,win 57,options [nop,nop,TS val 526052959ecr 135708068],length 642:HTTP:HTTP/1.1302 found

13:36:58 . 022089 IP 54 . 204 . 39 . 132 . 80 >192.168.122.98.39378:标志[F.],seq643,ack 114,win 57,选项[nop,nop,TS val 526053025ecr 135708327],长度0

下一步是什么?

tcpdump的这些基本技能会帮助你开始使用这个强大的多功能工具。有关更多信息,请参见tcpdump网站和手册页。

Tcpdump命令行界面为捕获和分析网络流量提供了极大的灵活性。如果您需要图形工具来理解更复杂的过程,请查看Wireshark。

Wireshark的一个优点是可以阅读。tcpdump捕获的pcap文件。可以用tcpdump在没有GUI的远程计算机上捕获数据包,用Wireshark分析结果文件,不过这是另外一个话题。

原始链接:

https://opensource.com/article/18/10/introduction-tcpdump

1.《tcpdump命令详解 在Linux命令行中使用tcpdump「超详细」》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《tcpdump命令详解 在Linux命令行中使用tcpdump「超详细」》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/jiaoyu/987880.html

上一篇

黎智英被加控勾结外国今日提讯 具体是什么情况

下一篇

中国特工出国审中国公民?中方驳斥 具体是什么情况

太原最严养狗令实施 牵引带长度超过1.2米被罚款

太原最严养狗令实施 牵引带长度超过1.2米被罚款

太原实行最严格的养犬秩序从11月1日起,被网民称为“最严格的养犬秩序”的《太原市养犬管理条例》开始实施。条例明确规定,在重点管理区域,牵引带未系好或者牵引带长度超过1.2米的,处以50元罚款;主动避开行人,尤其是老人、残疾人、孕妇、儿童,乘坐电梯时应避开乘坐电梯高峰期,或给狗戴上口罩。此外,遗弃或虐待狗也要受...

单次长度最长闪电 具体有多长

单次长度最长闪电 具体有多长

近日,单次最长闪电的消息引发网友热议。新闻详情如下:单长最长的闪电世界气象组织25日宣布,迄今探测到的最长单次闪电为709公里,最长单次闪电持续时间为16.73秒。世界气象组织网站发表声明称,2018年10月31日巴西南部发生了单次最长闪电,2019年3月4日阿根廷北部发生了单次最长闪电。这两项新记录是以前记...

中欧地理标志协定生效 互利合作迈入新阶段 事件详情始末介绍!

中欧地理标志协定生效 互利合作迈入新阶段 事件详情始末介绍!

3月1日,中国和欧盟签署的《中欧地理标志协定》正式生效。该协定历经了8年22轮正式谈判和上百次非正式磋商,于2020年9月14日正式签署。谈判过程之所以如此漫长,是因为该协议涉及产品和国家较多,不仅仅是中国与欧洲主要国家要达成一致,欧盟内部也要经过层层表决通过。...

中欧地理标志协定生效 互利合作迈入新阶段 究竟是怎么一回事?

3月1日,中国和欧盟签署的《中欧地理标志协定》正式生效。该协定历经了8年22轮正式谈判和上百次非正式磋商,于2020年9月14日正式签署。谈判过程之所以如此漫长,是因为该协议涉及产品和国家较多,不仅仅是中国与欧洲主要国家要达成一致,欧盟内部也要经过层层表决通过。...

中欧地理标志协定生效 互利合作迈入新阶段 事件详细经过!

中欧地理标志协定生效 互利合作迈入新阶段 事件详细经过!

3月1日,中国和欧盟签署的《中欧地理标志协定》正式生效。该协定历经了8年22轮正式谈判和上百次非正式磋商,于2020年9月14日正式签署。谈判过程之所以如此漫长,是因为该协议涉及产品和国家较多,不仅仅是中国与欧洲主要国家要达成一致,欧盟内部也要经过层层表决通过。...

中欧地理标志协定生效 互利合作迈入新阶段 登上网络热搜了!

3月1日,中国和欧盟签署的《中欧地理标志协定》正式生效。该协定历经了8年22轮正式谈判和上百次非正式磋商,于2020年9月14日正式签署。谈判过程之所以如此漫长,是因为该协议涉及产品和国家较多,不仅仅是中国与欧洲主要国家要达成一致,欧盟内部也要经过层层表决通过。...

中欧地理标志协定生效 互利合作迈入新阶段 真相到底是怎样的?

3月1日,中国和欧盟签署的《中欧地理标志协定》正式生效。该协定历经了8年22轮正式谈判和上百次非正式磋商,于2020年9月14日正式签署。谈判过程之所以如此漫长,是因为该协议涉及产品和国家较多,不仅仅是中国与欧洲主要国家要达成一致,欧盟内部也要经过层层表决通过。...

治疗艾滋病白血病新方法什么情况标志着什么

近日,《新英格兰医学杂志》发表了一篇题为《艾滋病并发急性淋巴细胞白血病患者用CRISPR基因编辑的成人造血干细胞长期重建》的研究论文,标志着全球首例通过基因编辑干细胞移植艾滋病和白血病患者由中国科学家完成!据悉,这是世界第一!北京大学教授用基因编辑干细胞治疗艾滋病和白血病。网友热;乔木奇奇:希望医学越来越好。...