我希望实现一个类似于MACsec的安全解决方案,该解决方案在中间网络节点(例如基于linux的交换机)捕获整个数据包(包括MAC报头),对数据包执行一些处理,然后将其发送出中间节点。
请你指出适当的资源,可以帮助我做到这一点。我目前正在寻找需要修改NIC驱动程序的解决方案。还有比这更简单的解决方案吗?其他人如何实现MACsec?
请注意,我不想简单地捕获一个数据包使用pcap和类似的方法。我想要的是能够在数据包通过中间节点之前捕获它,篡改它并将它发送给预定的接收者。
谢谢
发布于 2014-11-24 12:53:51
如果您想在Linux内核接收到数据包时分析它,那么您必须编写一个内核驱动程序,可能还要修改内核本身。当接口接收到数据时,立即开始处理。注册以接收下一层的任何内容都将调用其处理程序。由于MAC报头不需要太多的处理,所以IP层处理程序是第一个开始执行大量处理的处理程序。
如果您想要操作MAC报头并做您自己的事情,您必须在收到MAC报头之后和IP处理之前插入自己。或者你可以写一个司机成为一个虚拟的NIC。这样,您就可以根据您认为合适的方式处理数据。虚拟NIC会看到所有的数据,就像真实的NIC一样。这可能是您最好的选择,因为您不想开始处理内核,只为您自己的项目重新构建它。
我在这里的回答为学习Linux内核网络提供了几个很好的链接。我还建议选择Linux内核网络:实现和理论,由Rosen编写。深入了解网络堆栈的很好的资源。
MACSec在某个时候将在内核中实现。例如,IPSec将其安全策略保存在内核中,而用户守护进程则跟踪隧道连接。因此,不幸的是,我相信您必须编写某种级别的内核代码来执行您想要的操作。
发布于 2014-11-25 11:21:48
不久前,我想玩一些像第二层、第三层或更高层这样的数据包。我找到了一个很好的工具,基于python来实现这一点。这个工具调用斯卡皮。
您可以捕获和操作数据包。或者您可以为您的需要构建一个基于数据包的过滤器。
https://serverfault.com/questions/646892
复制相似问题