我在想,也許我可以將虛擬接口與不同的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