我需要在Linux中将某些L2数据包(定制的)作为传入数据包注入特定接口,以测试运行在其上的某些应用程序。如何将原始L2数据包作为传入数据包注入Linux上的接口?
是否有任何库(python首选)/可以帮助的例子?我浏览了Scrapy库,但看起来它只能将数据包作为传出数据包注入网络?
我需要在Linux中将某些L2数据包(定制的)作为传入数据包注入特定接口,以测试运行在其上的某些应用程序。如何将原始L2数据包作为传入数据包注入Linux上的接口?
是否有任何库(python首选)/可以帮助的例子?我浏览了Scrapy库,但看起来它只能将数据包作为传出数据包注入网络?
如果您有本地linux bridge
模块可用,那么您可以以这种方式使用它。创建桥
brctl addbr <brname>
现在创建一个虚拟eth
对(默认名称veth0
,veth1
)。 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
让我们知道如何去
谢谢,我接受这种方法,因为这应该是在一般设置中执行此操作的正确方法。在我们的例子中,我们没有可用的桥接模块。我最终编写了一个tap设备驱动程序。 – wei
你要注入数据包只对特定的接口,例如'eth0'还是要模拟未来包一般进入linux堆栈? – auny
到一个特定的接口,导致我们有一个比默认eth-> IP-> tcp->用户空间堆栈略有不同的堆栈。 – wei