有关 Linux 中定制第 2 层实现的说明

有关 Linux 中定制第 2 层实现的说明

我有一些机器在同一网络上运行。一个节点是控制节点,它将到达它的流量分配给其他节点。问题是我想要在 MAC 标头和传入控制节点的 IP(或其他)有效负载之间有一个自定义协议标头。

控制节点接收这样的任何数据包:

------------------------------------------------
| Layer 2 | IP(or whatever protocol) | Payload |
------------------------------------------------

这个数据包应该像这样分发到其他节点

----------------------------------------------------------------
| Layer 2 | Custom Header | IP(or whatever protocol) | Payload |
----------------------------------------------------------------

我想要一些指示来做这样的事情,有没有我可以使用的当前解决方案,我必须从头开始破解内核。类似的方法是使用 L2TP,但它运行在 IP 层上,所以我不希望这样做。

我还希望这种通信在 Linux 中显示为独立的接口,例如除了物理 eth0 接口之外的 tun0。

答案1

没有层“2.5”。这将违反整个 OSI 模型,所以我想说,不太可能出现这样的事情:没有人会对其有目的,或者想要调整某些目的来利用它。它还涉及大量的内核黑客攻击,并且从控制节点下游访问网络的每个设备都必须使用修改后的内核。

第 3 层(网络层)的目的是寻址/路由。没有适合在第 2 层和第 3 层之间插入的数据,因为除硬件(第 2 层)和软件(第 3 层)地址之外的数据是有效负载的一部分

您可以用您自己的一些软件路由协议替换第 3 层 IP 内容,转换传入的数据包,但很难看出这样做的意义是什么。

当然,如果你更具体地解释你想要完成什么,有人可能会提出建议。

相关内容