仮想インターフェイスを別の MAC アドレスに関連付けることができるのではないかと考えていましたが、要求インターフェイスを指定する方法がありません。
1000 個の仮想インターフェイスをすべて 1 つの実際のインターフェイスにバインドし、それぞれが異なる偽の MAC アドレスを持つように作成する場合、はい、それを行うことができます。
私の知る限り、eventlet.connect
深く掘り下げることなく、特定のインターフェイスを簡単に提供することはできませんlibevent
。ただし、ローカル アドレス (IP、ポート) は非常に簡単に指定できます。eventlet.connect
パラメータを取りbind
、ローカル アドレスを取り、それにバインドします。
したがって、各仮想インターフェースに異なる IP アドレスを与え、実際のインターフェースを介してそれらすべてをブリッジするだけで十分です。
これがうまくいくかどうかは完全にはわかりませんが、うまくいくはずです。試してみてください。
明らかな欠点が 1 つあります。1000 個のルーティング可能な IP アドレスが必要です。しかし、自分が制御する NAT の背後にいると仮定すると、それは簡単です (例: 10.0.xy.1zw)。
あなたが制御している NAT の背後にいない場合は、NAT を投げてください。同じマシンの実際のインターフェースで実行して、ブリッジの代わりに仮想インターフェースのルーターにすることもできます。
しかし、一度それを行うと… 1000 個の仮想インターフェイスは必要eventlet
ないかもしれませんし、コード内で何もする必要がないかもしれません。MAC アドレスをランダム化するように NAT を構成するだけであれば、完了している可能性があります。私はこれについて肯定的ではありません。スマートにしようとして、同じ (ホスト、ポート) への短いスパン内の複数の接続をルーティング用の同じ接続として処理することがありますが、これはここで邪魔になります。しかし、もう一度試してみてください。
いずれにせよ、もちろん、サーバーはそれらを同じ NAT ルーターからの 1000 のクライアントとして認識します。これを回避する方法はありません (実際にインターネットのさまざまな場所に 1000 のアドレスがある場合を除きます) なりすまし以外にはありません。ただし、何らかの動作をシミュレートするだけでなく、実際にサーバーのロジックをだまそうとしない限り、違いはありません。
一方、実際には、Web サーバーのホストはインターネットに接続しているルーターの MAC アドレスのみを認識し、Web サーバー ソフトウェアは何も認識しないことに注意してください。何をテストしようとしている可能性があるかについていくつかの仮定を立てる必要がありましたが、間違った方向に進んでいる可能性があります. その場合は、ユース ケースをもう少し詳しく説明することをお勧めします。