我已获得在Linux以太网数据链中找到合适接管点的任务。
我从各个角度看过它。我已经成功编写了NetFilters。但我真正想要的是插入我的代码的最佳位置,以便我直接从驱动程序接收 - 无需修改驱动程序,并希望保持“Linux友好”。 (我不反对敌意收购,但我试图避免它。)
我希望能够拥有以下选项:完全接管所有IP,或者选择TCP(可能是我不想通过Linux堆栈的专有连接),或者选择其他协议或连接。 (我不是指中间连接。)
例如:TCP SYN来自我识别的IP地址。我希望在没有Linux堆栈的情况下进行响应和通信,因为我知道消息已经进入。我希望在没有netfilters的情况下收发消息。
我不想承担Linux堆栈提供的所有重要功能的负担,但我也不希望任何过滤器看到我的专有消息。
在查看了大量内核代码后,我得出的结论是,更改驱动程序可能更容易(在本例中为r8169.c)。但是我更愿意找到那个“甜蜜点”,我可以通过我的内核模块偷看/戳戳/生成/强制,并创建一个链条,我永远是第一个。
有谁知道那个“甜蜜点”可能在哪里?
答案 0 :(得分:0)
如果您使用RAW协议打开标准套接字,我相信这可以防止数据传递到TCP / IP层。这将允许您检查以太网数据包并进行响应,但我认为它不会允许您将数据包放回堆栈中以使其更进一步。