当前位置:首页 > 奇闻趣事

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],长度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.],seq1: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/guonei/987892.html

上一篇

医护人员联系不到核酸检测点急哭 具体怎么回事

下一篇

民政部回应婚姻登记全国通办 具体如何回应

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

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

灵活而强大的命令行工具可以帮助减轻排除网络问题的痛苦。 根据我作为系统管理员的经验,我经常发现很难解决网络连接问题。Tcpdump是这些情况下的好朋友。 Tcpdump是一个命令行实用程序,允许捕获和分析通过系统的网络流量。它通常用于帮助解决网络问题,以及安全工具。 Tcpdump是一个功能...

太原最严养狗令实施 牵引带长度超过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日正式签署。谈判过程之所以如此漫长,是因为该协议涉及产品和国家较多,不仅仅是中国与欧洲主要国家要达成一致,欧盟内部也要经过层层表决通过。...