我的编程空间,编程开发者的网络收藏夹
学习永远不晚

linux 的抓包操作(tcpdump)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

linux 的抓包操作(tcpdump)

linux 查看网络状况(netstat)

使用 netstat 命令用来打印网络连接状况、系统所开放端口、路由表等信息。最常用的关于netstat 的命令就是:
netstat -lnp //打印当前系统启动哪些端口
以及
netstat -an  //打印网络连接状况
如果你所管理的服务器是一台提供 web 服务(80 端口)的服务器,那么你就可以使用 netstat -an |grep 80 开查看当前连接 web 服务的有哪些 IP 了。

抓取操作流程

1.首先确定系统有没有安装 tcpdump 工具,使用命令:
which tcpdump
如果打印出/usr/sbin/tcpdump 说明有安装,如果没有则去安装一个 tcpdump 工具:

sudo apt-get install tcpdump

2.开始抓包,使用 tcpdump -D(如果没有权限加 sudo)命令查看可以抓包的网络接口

 3.如上所示,可以看到我的机器中所有可以抓包的网络接口。其中特殊接口 any 可用于抓取所有活动的网络接口的数据包。现在就可以对网络接口进行抓包,例如我们使用 sudo tcpdump -I any 命令对 any 接口进行抓包:

         tcpdump 会持续抓包直到收到中断信号。你可以按 Ctrl+C 来停止抓包。正如上面示例所示,tcpdump 抓取了超过 9000 个数据包。在这个示例中,由于是通过 ssh 连接到服务器,所以 tcpdump 也捕获了所有这类数据包。-c 选项可以用于限制 tcpdump 抓包的数量:例如:可以使用 sudo tcpdump -I any -c 5 指定抓 5 个包分析

         如上所示,tcpdump 在抓取 5 个数据包后自动停止了抓包。这在有些场景中十分有用 ,比如你只需要抓取少量的数据包用于分析。当我们需要使用过滤规则抓取特定的数据包(如下所示)时,-c 的作用就十分突出了。

        在上面示例中,tcpdump 默认是将 IP 地址和端口号解析为对应的接口名以及服务协议名称。而通常在网络故障排查中,使用 IP 地址和端口号更便于分析问题;用-n 选项显示IP 地址,-nn 选项显示端口号:例如:

         如上所示,抓取的数据包中显示 IP 地址和端口号。这样还可以阻止 tcpdump 发出 DNS查找,有助于在网络故障排查中减少数据流量。

数据包解析

        tcpdump 能够抓取并解码多种协议类型的数据报文,如 TCP、UDP、ICMP 等等。这里只分析下 TCP 类型的数据报文。更多有 tcpdum 的详细介绍可以参考其帮助手册。 tcpdump 抓取的 TCP 报文看起来如下:

         具体的字段根据不同的报文类型会有不同,但上面这个例子是一般的格式形式。第一个字段 08:41:13.729687 是该数据报文被抓取的系统本地时间戳。然后,IP 是网络层协议类型,这里是 IPv4,如果是 IPv6 协议,该字段值是 IP6。192.168.64.28.22 是源 ip 地址和端口号,紧跟其后的是目的 ip 地址和其端口号,这里是 192.168.64.1.41916。

        在源 IP 和目的 IP 之后,可以看到是 TCP 报文标记段 Flags [P.]。该字段通常取值如下:

         该字段也可以是这些值的组合,例如 [S.] 代表 SYN-ACK 数据包。

        接下来是该数据包中数据的序列号 。对于抓取的第一个数据包,该字段值是一个绝对数字,后续包使用相对数值,以便更容易查询跟踪。例如此处 seq 196:568 代表该数据包包含该数据流的第 196 到 568 字节。         接下来是 ack 值:ack 1。该数据包是数据发送方,ack 值为 1。在数据接收方,该字段代表数据流上的下一个预期字节数据 ,例如,该数据流中下一个数据包的 ack 值应该是 568。接下来字段是接收窗口大小 win 309,它 表示接收缓冲区中可用的字节数 ,后跟 TCP 选项如 MSS(最大段大小)或者窗口比例值。更详尽的 TCP 协议内容请参考 Transmission Control Protocol (TCP) Parameters (iana.org)         最后,length 372 代表数据包有效载荷字节长度 。这个长度和 seq 序列号中字节数值长度是不一样的。

数据包过滤

        正如上面所提,tcpdump 可以抓取很多种类型的数据报文,其中很多可能和我们需要查找的问题并没有关系。举个例子,假设你正在定位一个与 web 服务器连接的网络问题,就不必关系 SSH 数据报文,因此在抓包结果中过滤掉 SSH 报文可能更便于你分析问题。tcpdump 有很多参数选项可以设置数据包过滤规则,例如根据源 IP 以及目的 IP 地址,端口号,协议等等规则来过滤数据包。下面就介绍一些最常用的过滤方法。 方法一:通过协议 1. 在命令中指定协议便可以按照协议类型来筛选数据包。比方说用如下命令只要抓取 ICMP报文:

2. 再打开一个终端,去 ping 其他网络地址,例如:

 

 3. 回到运行 tcpdump 命令的终端中,可以看到它筛选出了 ICMP 报文。这里 tcpdump 并没 有显示有关 opensource.com 的域名解析数据包: 方法二.通过主机 1. 用 host 参数只抓取和特定主机相关的数据包:

 如上所示,只抓取和显示与 54.204.39.132 有关的数据包。

 方法三.通过端口

1.tcpdump 可以根据服务类型或者端口号来筛选数据包。例如,抓取和 HTTP 服务(http 服务 器端口号为 80)相关的数据包:

 

方法四.ip 地址/主机名 1.同样,你也可以根据源 IP 地址或者目的 IP 地址或者主机名来筛选数据包。例如抓取源 IP 地址为 192.168.122.98 的数据包:

 

        注意此处示例中抓取了来自源 IP 地址 192.168.122.98 的 53 端口以及 80 端口的数据包,它们的应答包没有显示出来因为那些包的源 IP 地址已经变了。相对的,使用 dst 就是按目的 IP/主机名来筛选数据包。

 方法五.多条件筛选

 1.当然,可以使用多条件组合来筛选数据包,使用 and 以及 or 逻辑操作符来创建过滤规则。例 如,筛选来自源 IP 地址 192.168.122.98 的 HTTP 数据包:

 也可以使用括号来创建更为复杂的过滤规则,但在 shell 中请用引号包含你的过滤规则以防止被识别为 shell 表达式:

        上面例子中我们只抓取了来自源 IP 为 192.168.122.98 或者 54.204.39.132 的 HTTP (端号 80)的数据包。使用该方法就很容易抓取到数据流中交互双方的数据包了。

 检查数据包内容

        有时我们需要分析网络连接问题,可能需要分析数据包中的内容来判断什么内容需要被发 送、什么内容需要被接收等。tcpdump 提供了两个选项可以查看数据包内容,-X 以十六进制打印出数据报文内容,-A 打印数据报文的 ASCII 值。         例如,HTTP 请求报文内容如下:

        这对定位一些普通 HTTP 调用 API 接口的问题很有用。当然如果是加密报文,这个输出也就没多大用了。

保存抓取数据  

        1.tcpdump 提供了保存抓包数据的功能以便后续分析数据包。例如,你可以夜里让它在那里抓包,然后早上起来再去分析它。同样当有很多数据包时,显示过快也不利于分析,将数据包保存下来,更有利于分析问题。         使用 -w 选项来保存数据包而不是在屏幕上显示出抓取的数据包:

        该命令将抓取的数据包保存到文件 webserver.pcap。后缀名 pcap 表示文件是抓取的数据包格式。         正如示例中所示,保存数据包到文件中时屏幕上就没有任何有关数据报文的输出,其中 - c10 表示抓取到 10 个数据包后就停止抓包。如果想有一些反馈来提示确实抓取到了数据包,可以使用 -v 选项。         2.tcpdump 将数据包保存在二进制文件中,所以不能简单的用文本编辑器去打开它。使用 -r 选项参数来阅读该文件中的报文内容:

 

 

来源地址:https://blog.csdn.net/jiu_yue_ya/article/details/130885221

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

linux 的抓包操作(tcpdump)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Linux中tcpdump抓包的原理是什么

这篇文章主要介绍“Linux中tcpdump抓包的原理是什么”,在日常操作中,相信很多人在Linux中tcpdump抓包的原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux中tcpdump抓包
2023-06-27

Linux系统抓包工具tcpdump怎么用

今天给大家介绍一下Linux系统抓包工具tcpdump怎么用。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。tcpdump是Linux系统中一个数据包解析工具,
2023-06-28

Linux下抓包工具tcpdump怎么样

这篇文章主要介绍了Linux下抓包工具tcpdump怎么样,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在传统的网络分析和测试技术中,嗅探器(sniffer)是最常见,也是最
2023-06-13

linux中tcpdump抓取HTTP包的示例分析

这篇文章将为大家详细讲解有关linux中tcpdump抓取HTTP包的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。tcpdumptcpdump是linux系统自带的抓包工具,主要通过命令行的方式
2023-06-10

Linux下怎么使用tcpdump进行抓包

这篇文章主要讲解了“Linux下怎么使用tcpdump进行抓包”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux下怎么使用tcpdump进行抓包”吧!tcpdump是Linux下面的一
2023-06-09

Linux网络抓包工具tcpdump的详细介绍

这篇文章主要介绍“Linux网络抓包工具tcpdump的详细介绍”,在日常操作中,相信很多人在Linux网络抓包工具tcpdump的详细介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux网络抓包工具
2023-06-13

linux系统下使用tcpdump进行抓包方法

我先看下实例代码:1.常见参数tcpdump -i eth0 -nn -s0 -v port 80-i 选择监控的网卡-nn 不解析主机名和端口号,捕获大量数据,名称解析会降低解析速度OVxMs-s0 捕获长度无限制-v 增加输出中显示的详
2022-06-04

如何在linux系统中使用tcpdump抓包工具

本篇文章给大家分享的是有关如何在linux系统中使用tcpdump抓包工具,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1.1 tcpdump选项它的命令格式为:tcpdump
2023-06-13

在 Linux 命令行中使用 tcpdump 抓包的一些功能

tcpdump 是一款灵活、功能强大的抓包工具,能有效地帮助排查网络故障问题。 以我作为管理员的经验,在网络连接中经常遇到十分难以排查的故障问题。对于这类情况, tcpdump 便能派上用场。 tcpdump 是一个命令行实用工具,允许你抓
2022-06-04

Linux中如何使用wireshark分析tcpdump抓取的数据包

这篇文章将为大家详细讲解有关Linux中如何使用wireshark分析tcpdump抓取的数据包,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。很多时候我们的系统部署在Linux系统上面,在一
2023-06-06

运维必备,Linux服务器抓包工具 tcpdump 示例详解

在本文中,我们将详细讨论 tcpdump 命令,以及一些有关如何在 Linux 系统上安装和使用 tcpdump 的指南。

Android设备上非root的抓包实现方法(Tcpdump方法)

通常我们在Android应用中执行某个命令时会使用“Runtime.getRuntime().exec("命令路径")”这种方式,但是当我们执行抓包操作时,使用这条命令无论如何都不行,通过下面代码打印结果发现,该命令一定要在root权限下才
2022-06-06

用户态 tcpdump 如何实现抓到内核网络包的?

按照小编的风格,不搞到最底层的原理咱是不会罢休的。所以我对相关的源码进行了深入分析。通过本文,你将彻底搞清楚了以下这几个问题。

Linux中RPM包的安装和查询操作

这篇文章主要介绍“Linux中RPM包的安装和查询操作”,在日常操作中,相信很多人在Linux中RPM包的安装和查询操作问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux中RPM包的安装和查询操作”的疑
2023-06-09

Linux下Wireshark的网络抓包用法介绍

这篇文章主要介绍“Linux下Wireshark的网络抓包用法介绍”,在日常操作中,相信很多人在Linux下Wireshark的网络抓包用法介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux下Wir
2023-06-12

Linux中软件包升级与降级操作

在Linux中,软件包的升级和降级操作可以通过包管理器来实现升级操作:对于基于Debian的系统(如Ubuntu):sudo apt updatesudo apt upgrade对于基于RPM的系统(如Fedora、CentOS):s
Linux中软件包升级与降级操作
2024-09-24

Linux操作系统下的软件安装包有哪些

这篇文章主要介绍Linux操作系统下的软件安装包有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一:rpm包rpm包,分两种,binary rpm 跟 source rpmbinary rpm,就是我们平时用的最
2023-06-17

Linux操作系统下安装rpm包的方法步骤

这篇文章主要介绍“Linux操作系统下安装rpm包的方法步骤”,在日常操作中,相信很多人在Linux操作系统下安装rpm包的方法步骤问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux操作系统下安装rpm
2023-06-09

编程热搜

目录