如何将一个原始的L2数据包作为传入数据包注入到Linux上的接口?

我需要在Linux中将某些L2数据(定制的)作为传入数据包注入特定接口,以testing运行在其上的一些应用程序。

有什么库(python首选)/例子,可以帮助吗? 我正在浏览Scrapy库,但看起来它只能将数据包作为传出数据包注入networking

如果你有可用的本地linux bridge模块,那么你可以用这种方式使用它。 创建一个桥梁

 brctl addbr <brname> 

现在创建一个虚拟eth对(默认名称veth0veth1 )。 veths连接L2设备

 ip link add type veth ifconfig veth0 up ifconfig veth1 <some_ip> up 

现在添加你的特定接口,让我们说eth0 ,并且veth对的一边到这个桥。

 brctl addif <brname> eth0 brctl addif <brname> veth0 

这将这两个接口添加到网桥。 现在,当你在veth0上发送流量时,你也应该能够在eth0上获得它(基于正常的L2交换功能)。 要在veth0上发送流量,您只需要将流量输入veth1因为它们都是内部连接的。 所以,让我们说你想使用tcpreplay ,只是做

 tcpreply -i veth1 yourpcap.pcap 

让我们知道怎么回事