当谈到包过滤/管理时,我从来不知道内核内部发生了什么。有很多不同的工具作用于数据包,无论是来自用户空间(修改内核空间子系统)还是直接在内核空间。
每个工具是否有任何地方记录与其他工具的交互,或者它们在哪里起作用。我觉得应该在某个地方有一个图表,说明技术不够的人去阅读内核代码的情况。
所以这是我的例子:
在我的一个网络接口上收到一个数据包,我有:
- UFW
- iptables
- IPv4 子系统(路由)
- IPV
- eBPF
好的,所以我知道 UFW 是 iptables 的前端,而 iptables 是 Netfiler 的前端。所以现在我们在内核空间,我们的工具是 Netfiler、IPV、IPv4 和 eBPF。
同样,Netfilter 和 IPv4 子系统之间的交互很容易找到,因为这些都是非常旧的(不是坏的)子系统,所以缺少文档会很奇怪。此图是交互的概述:
但是 IPV 和 eBPF 呢?当这两个在内核中时,内核子系统对数据包起作用的实际顺序是什么?
我总能找到一些了不起的人,他们试图深入内心并帮助他人理解,例如,http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.filter_rules.html
但这不应该以更正式的方式记录吗?我不是在这里寻找关于这些子模块如何交互的解释,我知道我可以通过搜索自己找到它。我的问题更笼统,为什么没有官方文档实际上试图解释这些内核子系统内部发生的事情。它是否记录在我不知道的某个地方?有什么理由不尝试解释这些工具吗?
如果我没有任何意义,我道歉。我刚开始学习这些东西。