解決策 1:
強力なエンド システム モデルが必要です。 Linux は基本的に弱い送信システム モデルを中心に構築されているため、このアプリケーションに適した OS の選択肢ではありません。
ARP からポリシー ルーティング、送信元アドレスの選択まで、必要なすべての動作を偽造する必要があります。また、パケットが間違ったインターフェイスに到着した場合にパケットが受け入れられないようにするためのフィルターも必要です。
絶対に必要な手順は次のとおりです:
<オール>すべてのインターフェイスで arp_filter=1 と arp_ignore=2 を構成します。
送信トラフィック用のインターフェイスごとのソースベースのルーティングを追加します。 (宛先インターフェイスは、送信元アドレスに基づいて選択する必要があります。)
インターフェイスごとのイングレス フィルタリングを追加して、間違ったインターフェイスで受信したパケットを静かにドロップします。 (宛先アドレスが別のインターフェースに割り当てられたパケット。)
残念ながら、これら 3 つの手順だけで十分かどうかについては、意見の一致はありません。ウィーク エンド システム モデルは Linux TCP/IP スタック全体に組み込まれており、マルチキャストなどの微妙な問題で何が問題になるかは明らかではありません。
たとえば、ブロードキャスト用の出力インターフェイスをどのように選択するかは明確ではありません。全部出すべき?多分。送信元アドレスがインターフェイスのいずれにも割り当てられていないアウトバウンド ブロードキャストをスタックが取得した場合の正しい動作はどれですか?
繰り返しになりますが、あなたは仕事に間違ったツールを選択しています.
解決策 2:
多くの場合、8/9 インターフェイスを使用してブリッジを作成し、そのブリッジに IP アドレスを割り当てます (bridge-utils パケット、コマンド 'brctl add')。
このようにして、ブリッジはスイッチのように機能し、サブネットに IP アドレスを持つことができます。
解決策 3:
物理インターフェイスを結合してから、結合された 1 つのインターフェイスですべてのアドレスを構成することをお勧めします。
スイッチのサポートも必要です。
これは、開始するために使用できるミニ チュートリアルです。
解決策 4:
9 台の個別のマシンに相当するテスト環境が必要なようで、1 台のマシンで 9 つのインターフェイスがそれをエミュレートできると信じていました。 Linux では、David Schwartz が説明した理由により、単一のスタックを介してこれを行うことはできません。 BTDTと傷があります。インターフェースが 2 つあるだけでも十分でした。
より良い解決策は、1 つのホストで 8 つまたは 9 つの個別の仮想マシンを実行し、8 つまたは 9 つのインターフェイスをこれらの仮想マシンにブリッジすることです。