我在想,也许我可以将虚拟接口与不同的MAC地址相关联,但我缺少一种指定请求接口的方法。
如果你的意思是创建1000个虚拟接口都绑定到一个单一的真实接口,每个都有一个不同的假MAC地址,是的,你可以这样做。
据我所知,如果不深入下面libevent
,您不能轻易给出eventlet.connect
的特定界面。但你可以非常容易给一个本地地址(IP,端口)。 eventlet.connect
需要bind
参数,该参数需要一个本地地址并绑定到该地址。
因此,如果您只是给每个虚拟接口分配一个不同的IP地址,并通过您的真实接口桥接它们,那应该就是您所需要的。
我并不完全确定那么好吧这样会工作,但应该工作。试试看看。
有一个明显的缺点:您需要1000个可路由的IP地址。但假设你在一个你控制的NAT后面,那很简单 - 例如10.0.xy.1zw。
如果你不是在你控制的NAT后面,只需要扔掉一个。你甚至可以在同一台机器上,在真实的界面上运行它,只需将它作为虚拟接口的路由器而不是网桥。
但是,一旦你这样做......你可能不需要需要 1000个虚拟接口,或者在你的eventlet
代码中做任何事情。如果您只是将NAT配置为随机分配MAC地址,则可能已完成。我对此并不积极,它可能会尝试变得聪明,并将短距离内的多个连接视为同一个连接(主机,端口)进行路由,这将以您的方式进入。但是,再次尝试一下,看看。
无论哪种方式,当然,服务器会将它们视为来自同一NAT路由器的1000个客户端。没有办法解决这个问题(除非你真的在互联网的不同部分有1000个地址)不会欺骗。但是,除非你试图欺骗服务器中的某些逻辑,而不是模拟一些行为,这应该没有什么区别。
同时,请记住,在现实生活中,网络服务器的主机只会看到连接到互联网的路由器的MAC地址,而网络服务器软件根本看不到任何东西,所以......我不得不对你可能试图测试的东西做一些假设,而且我很可能走错了方向。如果是这样,你可能想要更好地描述你的用例。
你究竟想在这里测试什么? MAC地址通常对Web服务器不可见(或有意义!),所以我不确定你想要完成什么。 – duskwuff 2013-03-21 00:56:02
@duskwuff:我认为他正在测试类似于BIG-IP负载平衡器的东西,该负载平衡器根据其本地路由器中哪些请求正在进行区分。但现在我想到了,这是一个基于实际问题的非常大的假设... – abarnert 2013-03-21 01:03:33
我正在测试openflow控制器上的负载均衡器和设备管理器应用程序。我很确定我需要有不同的MAC地址(并且IP地址实际上是不相关的)。我不想让问题过于复杂。 – fabiim 2013-03-21 01:06:44