eBPF挂钩TC egress时,被TCP Checksum搞死了

我最近也在尝试用eBPF TC类型程序,挂钩`egress`网络包,修改IP包、TCP包内容,实现路由跟踪的功能。除了eBPF验证器的奇葩问题外,剩下的就是`skb_buff`修改后,被客户端内核丢弃、中间路由丢弃、服务端内核丢弃的各种问题,头发那是一把一把的掉。幸运的是,我找到了这篇文章《Checksum-or-fxxk-up》,特意转来给大家分享。

Continue reading


eCapture支持boringssl TLS 1.3明文数据包捕获


一个多月前,有网友反馈Android上,TLS 1.2明文网络包正常捕获,而1.3的密钥无法捕获。笔者得知这个问题后,花了几个周末时间修复、添加了这个功能。在这期间,笔者工作繁忙以及感染新冠,整个功能拖了1个月 才完成。精力与体力,支撑起来越来越吃力。搞开源,全是靠爱发电,实属不易。

Continue reading


使用eBPF实现基于DWARF的堆栈遍历

我们是 BPF 的忠实信徒,有很多原因。从广义上讲,它允许 Linux 内核以更高的安全保证和更低的学习门槛进行编程。
在 BPF 中开发分析器非常有意义,因为一旦实现了堆栈遍历机制,我们就可以利用 perf 子系统来获取有关 CPU 周期、指令、L3 缓存未命中或我们机器中可用的任何其他性能计数器的样本。它还有助于开发其他工具,如分配跟踪器、off-CPU分析器等。

Continue reading