linux 的抓包操作(tcpdump)

这篇具有很好参考价值的文章主要介绍了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)命令查看可以抓包的网络接口

linux抓包命令,linux基础命令及脚本分享,linux,tcpdump,运维

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

linux抓包命令,linux基础命令及脚本分享,linux,tcpdump,运维

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

linux抓包命令,linux基础命令及脚本分享,linux,tcpdump,运维

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

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

linux抓包命令,linux基础命令及脚本分享,linux,tcpdump,运维

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

数据包解析

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

linux抓包命令,linux基础命令及脚本分享,linux,tcpdump,运维

         具体的字段根据不同的报文类型会有不同,但上面这个例子是一般的格式形式。第一个字段 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.]。该字段通常取值如下:

linux抓包命令,linux基础命令及脚本分享,linux,tcpdump,运维

         该字段也可以是这些值的组合,例如 [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报文:

linux抓包命令,linux基础命令及脚本分享,linux,tcpdump,运维

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

linux抓包命令,linux基础命令及脚本分享,linux,tcpdump,运维 

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

linux抓包命令,linux基础命令及脚本分享,linux,tcpdump,运维 如上所示,只抓取和显示与 54.204.39.132 有关的数据包。

 方法三.通过端口

1.tcpdump 可以根据服务类型或者端口号来筛选数据包。例如,抓取和 HTTP 服务(http 服务
器端口号为 80)相关的数据包:
linux抓包命令,linux基础命令及脚本分享,linux,tcpdump,运维

 文章来源地址https://www.toymoban.com/news/detail-600453.html

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

 linux抓包命令,linux基础命令及脚本分享,linux,tcpdump,运维

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

linux抓包命令,linux基础命令及脚本分享,linux,tcpdump,运维 方法五.多条件筛选

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

linux抓包命令,linux基础命令及脚本分享,linux,tcpdump,运维

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

linux抓包命令,linux基础命令及脚本分享,linux,tcpdump,运维

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

 检查数据包内容

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

linux抓包命令,linux基础命令及脚本分享,linux,tcpdump,运维

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

保存抓取数据  

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

linux抓包命令,linux基础命令及脚本分享,linux,tcpdump,运维

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

linux抓包命令,linux基础命令及脚本分享,linux,tcpdump,运维 

 

到了这里,关于linux 的抓包操作(tcpdump)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • LINUX 抓包工具Tcpdump下载安装(非常详细),从零基础入门到精通,看完这一篇就够了

    下载安装包 ======================================================================================== 官网地址:https://www.tcpdump.org/ 百度网盘地址: 链接:https://pan.baidu.com/s/12EPV0alwzz3_wGuT1Swv2g 提取码:pyck 由于tcpdump依赖libpcap因此两个安装包都需要下载 2.2.1 缺少gcc 环境 错误一:configure: error: no

    2024年01月22日
    浏览(60)
  • nmap的官网下载安装、简单命令的抓包测试

           Nmap (“Network Mapper”) 是用于网络探索和安全审计的开源工具。它被设计用于快速扫描大型网络,尽管它在单个主机上运行良好。Nmap以新颖的方式使用原始IP数据包来确定网络上可用的主机、这些主机提供的服务(应用程序名称和版本)、它们正在运行的操作系统(和

    2024年02月06日
    浏览(42)
  • tcpdump抓包命令

    tcpdump 是Linux下一种网络抓包命令 tcpdump 提供了大量的选型以及各种过滤表达式,使你能更好的抓到指定的数据包 Linux抓包实际情况通常用tcpdump抓取包,然后把数据包放到wireshark 工具分析数据包 下面介绍几种常用的选项和过滤表达式 tcpdump使用-选项类 ==完整例子== tcpdump选项

    2024年02月13日
    浏览(39)
  • 如何使用tcpdump命令抓包

    个人主页 : ζ小菜鸡 大家好我是ζ小菜鸡,小伙伴们,让我们一起来学习如何使用tcpdump命令抓包。 如果文章对你有帮助、 欢迎关注、点赞、收藏(一键三连) host:主机,port:端口,src:源IP,src port:源端口,dst:目的IP,dst port:目的端口,net:网段,eth:网口,tcp:协议 -i:指定监听的网络接口 -c

    2024年02月07日
    浏览(45)
  • tcpdump抓包规则命令大全

    下面的例子全是以抓取eth0接口为例,如果不加-i eth0是表示抓取所有的接口包括lo。   tcpdump -nnnv arp                 # 查找ARP攻击时确定攻击原MAC地址时常用。 tcpdump -nnnv udp port 53    # DNS服务器53端口受ARP攻击时查看攻击源时用。 tcpdump -nnnv udp and not port 53      # 可以确定

    2024年02月05日
    浏览(41)
  • 网络抓包命令tcpdump

    \\\"tcpdump -i any -nn -vv tcp port 9095 -s 0 -w dump.cap\\\"命令是一个网络抓包命令,用于捕获流经指定网络接口的TCP协议、端口号为9095的网络数据包,并将这些数据包写入到名为\\\"dump.cap\\\"的文件中。 具体参数解释: “-i any”: 指定抓包的网络接口为任意接口。 “-nn”: 不将网络地址和端口号

    2024年01月17日
    浏览(31)
  • 使用tcpdump命令进行抓包+详细示例

    tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。 可以将tcpdump理解为一个具有抓取数据包功能的命令。 tcpdump命令跟其他的Linux命令的使用类似,需

    2024年02月08日
    浏览(44)
  • 实践tcpdump命令,成为网络数据抓包高手

    大家好,又见面了,我是沐风晓月,本文是专栏【linux基本功-基础命令实战】的第57篇文章。 专栏地址:[linux基本功-基础命令专栏] , 此专栏是沐风晓月对Linux常用命令的汇总,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。 如果文章有什么需要改进的地方还请

    2024年02月03日
    浏览(35)
  • Linux 抓包工具——tcpdump

    用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮

    2024年02月12日
    浏览(43)
  • LINUX 抓包工具Tcpdump下载安装

    官网地址:https://www.tcpdump.org/ 百度网盘地址: 链接:https://pan.baidu.com/s/12EPV0alwzz3_wGuT1Swv2g 提取码:pyck 由于tcpdump依赖libpcap因此两个安装包都需要下载 2.2.1 缺少gcc 环境 错误一:configure: error: no acceptable C compiler found in $PATH 解决:安装gcc 2.2.2 缺少flex bison 错误:configure: error:

    2024年02月03日
    浏览(91)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包