0

我的任务是在 Linux 以太网数据链中找到一个合适的接管点。

我从不同的角度看过它。我已经成功编写了 NetFilters。但我真正要寻找的是插入代码的最佳位置,这样我就可以直接从驱动程序接收——无需修改驱动程序,并希望保持“Linux 友好”。(我不反对敌意收购,但我试图避免它。)

我希望能够选择:完全接管所有 IP,或者选择 TCP(可能是我不想遍历 Linux 堆栈的专有连接),或者选择其他协议或连接。(我不是指中间连接。)

例如:TCP SYN 来自我认识的 IP 地址。我想在 Linux 堆栈不知道消息进来的情况下进行响应和通信。我想在不让 netfilters 获取它的副本的情况下发送消息。

我不想承担 Linux 堆栈提供的所有伟大功能的负担,但我也不希望任何过滤器看到我的专有消息。

在查看了大量内核代码之后,我得出的结论是更改驱动程序可能更容易(在本例中为 r8169.c)。但我更愿意找到那个“最佳位置”,在那里我可以通过我的内核模块窥视/戳/刺激/强制,并创建一个我始终是第一的链。

有谁知道那个“甜蜜点”可能在哪里?

4

1 回答 1

0

如果您使用 RAW 协议打开标准套接字,我相信这会阻止数据向上传递到 TCP/IP 层。这将允许您检查以太网数据包并做出响应,但我认为它不允许您将数据包放回堆栈中以使其更进一步。

于 2013-06-26T08:26:15.580 回答