阅读:3389回复:4
云原生进阶:eBPF暴力入门篇 --正在做补充课时
eBPF是一种内核技术,可在不修改内核源代码的情况下实现高效的数据包过滤、系统跟踪和安全增强。
所谓的无侵入可观测,就可以利用eBPF技术,直接在内核态拦截、修改譬如网络流量、数据包。 如果你学过Java,很像AOP。如果你只会golang,那么理解为中间件也勉强可以。 由于课程体系很庞大,而且学习有一定门槛,所以会分为多课程来建设,本课程是暴力入门篇。不涉及过多难懂的概念,就是干,先写代码,让大家了解到全貌。然后单开新课程逐模块讲解。 本课程内核态是C写的(其实不难的,没多少复杂的代码,咱又不用C写业务), 用户态是 golang写的(业务代码在这)。 本课程大约20课时左右,就是做个粗暴入门。网络篇已经开课,戳这里 本课程由于众所周知的原因,会故意留坑。VIP学员一对一口述破解 第1讲:开开张课、暴力入门eBPF概念 试听 老套弄的开张课,粗暴的入门下概念。为后面的课时做准备 第2讲:搭建运行环境、第一个eBPF程序运行 我们先搭建一个方便快速的环境,运行出第一段程序。后面再讲知识点。找到感觉很重要 第3讲:练习课:监控Go程序的IO行为 今天做个练习课程,监控GO写的程序中的io行为。仅仅为了快速入门。 第4讲:kprobe 简单入门、监控GO程序写入 由于后面需要单开kprobe的演示,所以我们快速先入门个概念。后面要同步开单知识点章节 第5讲:kprobe 简单入门(2)根据进程名过滤监控 上节课是ID,太粗暴。今天我们来通过进程名过滤 第6讲:网络XDP粗暴入门(1) 基本写法和运行方式 后面会有专门的课程,今天粗暴入门 第7讲:网络XDP粗暴入门(2) 获取流量的协议 、拦截ping 今天我们来获取流量的协议,拦截Ping 第8讲:网络XDP粗暴入门(3) 获取流量的IP地址 粗暴入门IP地址的获取 第9讲:用户态开发(1) clilium/ebpf入门、用户态调用 今天我们进入用户态的开发 第10讲:eBPF Map入门(1): 基本创建、接收事件 今天我们简单粗暴的入门下map。把内核态数据传给用户态 第11讲:eBPF Map入门(2): 传递struct给用户态并解析 上节课我们传递是字符串。今天我们演示下如何传递struct 第12讲:eBPF Map入门(3): ring buffer入门 今天我们来入门一个特殊的MAP:ring buffer 第13讲:用户态和xdp交互入门、拦截来源IP 之前我们的xdp缺少用户态,今天我们结合golang来做个来源IP的拦截 第14讲:用户态和xdp(2) 获取tcp数据、端口等(选学) 本课时选学,已经开了专门的网络篇在讲这个 第15讲:用户态和xdp(3) 禁止指定IP访问 从eBPF角度如何禁止指定IP访问。 第16讲:进程篇(1) 获取新建进程的列表 试听 后面我们花几课时稍微讲一下进程的获取 第17讲:进程篇(2) 获取进程的父ID、读取内核数据 沿着上节课我们稍微进阶下 第18讲:进程篇(4) 进程调度切换捕获 进程调度涉及到CPU切换,今天我们可以来捕获它 第19讲:(打桩)uprobe入门、监控本机bash执行信息 ebpf著名的一个功能就是可以进行"打桩",其中一种做法就是使用uprobe。今天我们来入个门 第20讲:uprobe入门(2) 监听golang任意函数的返回值 上节课我们监听的是bash,不刺激。今天我们来搞golang程序。后面我们考虑对k8s进行打桩 第21讲:基于docker的开发环境快速启动和基操(golang+cilium) 补充课时 专门做了一个镜像给大家,方便大家无基础快速部署开发环境。后面还会更新和升级 本课程会时不时的补充课时 |
|
最新喜欢:ygj64
|