我想实现一个类似于MACsec的安全解决scheme,在中间networking节点(例如基于Linux的交换机)上捕获整个数据包(包括MAC头),对数据包执行一些处理,然后将数据发送出中间节点。
请你指点适当的资源,可以帮助我做到这一点。 我目前正在研究需要修改NIC驱动程序的解决scheme。 还有没有比这更简单的解决scheme? 其他人如何实现MACsec?
请注意,我不想简单地使用pcap和类似的方法捕获一个数据包。 我正在寻找的是能够捕获一个数据包,然后通过一个中间节点,篡改它并将其发送给预期的收件人。
谢谢
如果你想在Linux内核收到数据包的时候分析这个数据包,你必须编写一个内核驱动程序,甚至可以修改内核本身。 当接口接收数据时,处理立即开始。 任何注册接收下一层的东西都会被调用。 由于MAC头不需要太多的处理,IP层处理程序是第一个开始执行大量处理的程序。
如果你想操纵MAC头,做你自己的事情,你必须在收到MAC头之后,在IP处理之前插入自己。 或者你可以写一个驱动程序作为虚拟网卡。 这样,您可以按照您认为合适的方式处理数据。 虚拟网卡会像真正的网卡那样看到所有的数据。 这可能是你最好的select,因为你不想开始关注内核,重build它只是为了你自己的项目。
我的答案在这里给出了学习Linux内核networking的几个很好的链接。 我也build议selectRami Rosen的Linux Kernel Networking:Implementation and Theory。 伟大的资源,深入了解networking堆栈。
MACSec在某些时候会在内核中执行。 例如,IPSec将其安全策略保存在内核中,而userland守护程序则跟踪隧道连接。 所以不幸的是我相信你必须编写一些内核代码来执行你想要的操作。
前一段时间我想玩一点数据包,比如第2层,第3层或更高层。 我发现一个很好的工具,基于python来做到这一点。 这个工具叫Scapy 。
您可以捕获和操作数据包。 或者您可以根据需要构build基于数据包的filter。