tcpdump 异常错误

news2024/11/16 17:36:59

tcpdump 进行抓包的时候,-w 提示 Permission denied:

sudo tcpdump -w test1.log
tcpdump: test1.log: Permission denied

开始以为是用户权限的问题,后来换用 root 账户还是不行,经搜索,是 AppArmor 的问题。
解决方案如下:
先查看当前的 tcpdump 的模式:

grep tcpdump /sys/kernel/security/apparmor/profiles
/usr/sbin/tcpdump (enforce)

上面显示是 enforce 模式,所以有这个问题,把它改成 complain 模式:

aa-complain /usr/sbin/tcpdump                        ------ This will change it to complain

再次使用 tcpdump 并写文件的时候就没问题了。
想在转换成 enforce 模式时:

aa-enforce /usr/sbin/tcpdump             ----- This will renable the AppArmor profile for tcpdump

【注】 通过命令 aa-complain 或 aa-enforce 可以切换 profile 文件的状态。这需要先安装对应的 utils 工具: sudo apt-get install apparmor-utils

在抓包完成后,抓包的大小为0

一般的原因为磁盘满了,没有办法继续储存。

解决办法:

1、遇到该问题,先用df-h 命令,看一下磁盘的可用大小,排除是否为磁盘的原因

2、每次抓包在最后加一个参数,-v可以实时看到抓包大小的变化

在敲下命令,报错提示,No Space to left

这个问题的原因一般是inodes满了导致的

可以用df -i 命令,查看

安装tcpdump

用下面的命令检查一下是否已经安装了 ​​tcpdump​​:

which tcpdump

这个截图就是没有安装tcpdump:

下面是安装了tcpdump的截图:

如果还没有安装 ​​tcpdump​​​,用如下命令安装 ​​tcpdump​​:

sudo yum install -y tcpdump

​​tcpdump​​​ 依赖于 ​​libpcap​​,该库文件用于捕获网络数据包。如果该库文件也没有安装,系统会根据依赖关系自动安装它。

用 tcpdump 抓包

使用 ​​tcpdump​​ 抓包,需要管理员权限,因此下面的示例中绝大多数命令都是以 ​​sudo​​ 开头。

首先,先用 ​​tcpdump -D​​ 命令列出可以抓包的网络接口:

sudo tcpdump -D

如上所示,可以看到我的机器中所有可以抓包的网络接口。其中特殊接口 ​​any​​ 可用于抓取所有活动的网络接口的数据包。

我们就用如下命令先对 ​​any​​ 接口进行抓包:

sudo tcpdump -i any

​tcpdump​​​ 会持续抓包直到收到中断信号。你可以按 ​​Ctrl+C​​​ 来停止抓包。正如上面示例所示,​​tcpdump​​​ 抓取了超过 10000 个数据包。在这个示例中,由于我是通过 ​​ssh​​​ 连接到服务器,所以 ​​tcpdump​​ 也捕获了所有这类数据包。

​​-c​​​ 选项可以用于限制 ​​tcpdump​​ 抓包的数量:

sudo tcpdump -i any -c 3

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

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

sudo tcpdump -i any -c 3 -nn

理解抓取的报文

​​tcpdump​​​ 能够抓取并解码多种协议类型的数据报文,如 TCP、UDP、ICMP 等等。虽然这里我们不可能介绍所有的数据报文类型,但可以分析下 TCP 类型的数据报文,来帮助你入门。更多有关 ​​tcpdump​​​ 的详细介绍可以参考其 ​ ​帮助手册​​​。​​tcpdump​​ 抓取的 TCP 报文看起来如下:

12:43:24.047063 IP 202.106.2.140.22 > 202.106.2.116.52980: Flags [P.], seq 4020757562:4020757774, ack 1254862904, win 274, length 212

1列:12:43:24.047063 是该数据报文被抓取的系统本地时间戳。

​​2列:IP​​​ 是网络层协议类型,这里是 ​​IPv4​​​,如果是 ​​IPv6​​​ 协议,该字段值是 ​​IP6​​。

​​3列:202.106.2.140​​ 是源 IP 地址和端口号 22

​​4列:202.106.2.116​​ 是目的 IP 地址和端口号 52980

5列: TCP 报文标记段 ​​Flags [P.]​​​。该字段也可以是这些值的组合,例如 ​​[S.]​​​ 代表 ​​SYN-ACK​​ 数据包。该字段通常取值如下:
 

标志类型描述
SSYNConnection Start
FFINConnection Finish
PPUSHData push
RRSTConnection reset
.ACKAcknowledgment

6列:接下来是该数据包中数据的序列号。对于抓取的第一个数据包,该字段值是一个绝对数字,后续包使用相对数值,以便更容易查询跟踪。例如此处 seq 4020757562:4020757774代表该数据包包含该数据流的第 XX 到 XXX 字节。

7列:接下来是 ack 值:ack 1254862904。该数据包是数据发送方,ack 值为 XXX。在数据接收方,该字段代表数据流上的下一个预期字节数据。

8列:接下来字段是接收窗口大小 ​​win 274​​​,它表示接收缓冲区中可用的字节数,后跟 TCP 选项如 MSS(最大段大小)或者窗口比例值。更详尽的 TCP 协议内容请参考 ​ ​Transmission Control Protocol(TCP) Parameters​​。

9列:​​length 212​​代表数据包有效载荷字节长度。这个长度和 seq 序列号中字节数值长度是不一样的。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1130965.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一台服务器成了哆啦A梦的神奇口袋

如果我有一台服务器,那简直就像打开了哆啦A梦的神奇口袋!可以做的事情可太多啦,比如: 学习和探险 首先嘛,当然是用来学习和探险啦!我可以安装和配置各种操作系统、编程语言和工具,深入了解计…

优优嗨聚集团:美团外卖,让美好儿童餐计划触手可及

在当今这个快节奏的社会,父母们对于孩子的饮食健康越来越关注。如何让孩子吃得健康、吃得安心,是每一个家长都非常关心的问题。而美团外卖,作为中国最大的外卖平台之一,一直在积极推动美好儿童餐计划,让家长们能够更方…

docker(2)部署前后端分离springboot+vue项目

前置知识 虚拟网桥 docker容器需要在同一个网段才能通信,当启动一个容器时会自动连接一个docker中默认网桥段但此默认网桥段非本容器固定,当下次容器启动分配的ip会变,并且不可用名称直接访问。 自定义网段将需要互通的容器放入&#xff0c…

容联七陌入选沙利文2023中国AI技术变革典型企业

近日,全球增长咨询公司弗若斯特沙利文(Frost & Sullivan,简称“沙利文”)发布《2023年中国AI技术变革企业服务白皮书》,白皮书显示,容联七陌以大模型为支撑,通过生成式一体化智能客服全方位…

首枚开源社正式成员纪念徽章来啦

各位尊敬的开源社正式成员: 2023年10月16日,开源社刚过完第九个成立生日,开源社与您共同迎接第十年的到来! 首枚开源社正式成员纪念徽章,满载作为开源人的归属感和荣誉感,设计上我们采用开源社 logo 的经典…

【Java集合类面试十八】、ConcurrentHashMap是怎么分段分组的?

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:ConcurrentHashMap是怎么…

使用BASE64实现编码和解码

系列文章目录 SpringBoot整合RabbitMQ并实现消息发送与接收 解析JSON格式参数 & 修改对象的key VUE整合Echarts实现简单的数据可视化 Java中运用BigDecimal对字符串的数值进行加减乘除等操作 List<HashMap<String,String>>实…

如何在Puppeteer中设置User-Agent来绕过京东的反爬虫机制?

概述 京东作为中国最大的电商平台,为了保护其网站数据的安全性,采取了一系列的反爬虫机制。然而,作为开发者,我们可能需要使用爬虫工具来获取京东的数据。 正文 Puppeteer 是一个由 Google 开发的 Node.js 库,它提供…

【无标题】读书笔记之《智能化社会:未来人们如何生活、相爱和思考》

《智能化社会:未来人们如何生活、相爱和思考》:Digital vs Human_ how well live, love, and think in the future ,由中信出版社于2017年06月出版。作者是澳大利亚的理查德沃特森(Richard Watson)。Richard Watson在伦敦帝国理工学院从事未来…

国债1万亿,你该学点什么

what: 底层逻辑:国家信用向社会募资 why: ① 战争时代-筹措military purpose ② 平衡财政收支(大部分时期都是deficit的状态,一般方法有levy.taxing,print money,national debt,当taxing与print money都困难的时候&a…

【Java集合类面试二十】、请介绍LinkedHashMap的底层原理

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:请介绍LinkedHashMap的底…

什么是React中的高阶组件(Higher Order Component,HOC)?它的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

shopee商品链接获取shopee商品评论数据(用 Python实现shopee商品评论信息抓取)

在网页抓取方面,可以使用 Python、Java 等编程语言编写程序,通过模拟 HTTP 请求,获取shopee网站上的商品详情页面评论内容。在数据提取方面,可以使用正则表达式、XPath 等方式从 HTML 代码中提取出有用的信息。值得注意的是&#…

Linux系统安装redis并配置为服务

一、Linux环境 1、下载 官网提供的源码下载地址: https://github.com/redis/redis/archive/7.0.5.tar.gz 2、将源码上传至服务器 3、解压缩 # 将解压缩后的文件放置在同目录的source文件夹下 tar -zxvf redis-7.0.5.tar.gz -C ./source4、编译安装 对源码进行编…

【微信小程序】数字化会议OA系统之投票模块(附源码)

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《微信小程序开发实战》。🎯&#x1f3a…

有粉丝被机器视觉培训机构忽悠培训贷款

最近有13个粉丝私下联系我,咨询我培训贷款,当时我听了,挺懵的。我详细了解后,我上大学毕业的时候,也遇到过此类学校鼓励我们去培训。合理维权,切不可采用极端手段,生命比什么都重要。不要做傻事…

Vue-dvadmin-d2-crud-plus-自定义后台菜单-添加页面

文章目录 1.新建数据模型2.新建数据序列类3.新建数据视图4.配置路由5.前端新建View组件6.配置后台7.总结 django-vue-admin是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。 🧑‍🤝‍🧑前端采用D2Admin 、Vue、Eleme…

搭建nuxt3项目(框架构建)

需求 目标:我想搭建一个nuxt3的框架,实现一些基本的组件和路由、页面,方便后续遇到相关ssr项目直接复用。 同时:记录关于nuxt3的使用介绍关于Nuxt(详解以及周边) Nuxt 框架 1、一种基于 Node.js 的服务端…

Java-多线程进阶

文章目录 Java多线程进阶锁的类型乐观锁vs悲观锁读写锁重量级锁vs轻量级锁自旋锁公平锁vs非公平锁可重入锁vs不可重入锁 CASCAS介绍和原理CAS应用自旋锁CAS 的 ABA 问题 Synchronized 原理Callable 接口JUC常见类ReentrantLock原子类线程池信号量 SemaphoreCountDownLatch 线程…

Unity之ShaderGraph如何实现旋涡效果

前言 今天我们来通过ShaderGraph来实现一个旋涡的效果 如下图所示: 主要节点 Distance:返回输入 A 和输入 B 的值之间的欧几里德距离。除了其他方面的用途,这对于计算空间中两点之间的距离很有用,通常用于计算有符号距离函数 (…