eBPF入门系列:工具及重点项目

工具

bpftool

bpftool安装

依赖包安装

ubuntu 20.04 linux 5.4.169

# apt install pkg-config libelf-dev zlib1g-dev

ubuntu 21.10 linux 5.13.0

# sudo apt install  linux-tools-common linux-tools-5.13.0-51-generic linux-cloud-tools-5.13.0-51-generic

Ubuntu 22.04

# sudo apt install pkgconf build-essential libelf-dev  linux-tools-common linux-tools-`uname -r` linux-tools-generic

bpftool 安装

# git clone --recurse-submodules https://github.com/libbpf/bpftool.git
# cd bpftool/src
# make && make V=1 install

# bpftool version
bpftool v7.0.0
using libbpf v1.0
features: libbpf_strict

bpftool 常见命令

其他命令

加载程序到内核

检查加载到内核的程序

挂载到内核事件

XDP类型

查看 trace 输出

如果两种trace输出都没有内容,则需要检查 /sys/kernel/debug/tracing/tracing_on 配置是否开启,1表示开启 trace。

Map常见操作

卸载程序

删除内核加载的程序

eBPF 项目

入门必看,这个项目下有各种场景的ebpf小工具,该项目刚开始都是使用 Python 调用 eBPF 程序实现的工具,后面又用 libbpf 重写了之前的工具。

BCC依赖安装

https://github.com/iovisor/bcc/blob/master/INSTALL.md#ubuntu---source

Install and compile BCC

编译libbpf-tools

常见报错:

1、编译过程出现以下报错:

解决方式:

通过脚本语言写eBPF程序,方便写一些简单的demo程序

安装

ubuntu 20.04 linux 5.4.169

ubuntu 21.10/22.04

bpftrace常见命令

使用bpftrace跟踪短时进程

eCapture

eCapture 是一款基于 eBPF 技术实现的用户态数据捕获工具,其主要功能包括:

  • 不需要 CA 证书,即可捕获 HTTPS/TLS 通信数据的明文。

  • 在 bash 审计场景,可以捕获 bash 命令。

  • 数据库审计场景,可以捕获 mysqld/mariadDB的SQL 查询。

Cilium

Cilium 是一个基于 eBPF 的高性能容器网络方案。其主要功能特性包括:

  • 安全上,支持 L3/L4/L7 安全策略,这些策略按照使用方法又可以分为:

    • 基于身份的安全策略。

    • 基于 CIDR 的安全策略。

    • 基于标签的安全策略。

  • 网络上,支持三层平面网络(flat layer 3 network),如:

    • 覆盖网络(Overlay),包括 VXLAN 和 Geneve 等。

    • Linux 路由网络,包括原生的 Linux 路由和云服务商的高级网络路由等。

  • 提供基于 BPF 的负载均衡。

  • 提供便利的监控和排错能力。

eBPF Exporter

eBPF Exporter 是一个将自定义 eBPF 跟踪数据导出到 Prometheus 的工具,它实现了 Prometheus 获取数据的 API,Prometheus 可以通过这些 API 主动拉取到自定义的 eBPF 跟踪数据。

libbpf-bootstrap

Last updated