Lösung 1:
Sie benötigen ein starkes Endsystemmodell. Linux ist im Grunde um ein Weak-Send-Systemmodell herum aufgebaut, daher ist es wirklich keine gute Betriebssystemwahl für diese Anwendung.
Sie müssen jedes erforderliche Verhalten vortäuschen, von ARP über Richtlinien-Routing bis hin zur Auswahl der Quelladresse. Sie benötigen auch Filter, um zu verhindern, dass Pakete akzeptiert werden, wenn sie auf der falschen Schnittstelle ankommen.
Die unbedingt notwendigen Schritte sind:
-
Konfigurieren Sie arp_filter=1 und arp_ignore=2 auf allen Schnittstellen.
-
Fügen Sie schnittstellenbasiertes, quellenbasiertes Routing für ausgehenden Datenverkehr hinzu. (Die Zielschnittstelle muss basierend auf der Quelladresse ausgewählt werden.)
-
Fügen Sie Eingangsfilterung pro Schnittstelle hinzu, um Pakete, die auf der falschen Schnittstelle empfangen wurden, stillschweigend zu verwerfen. (Pakete mit einer Zieladresse, die einer anderen Schnittstelle zugewiesen ist.)
Leider besteht kein Konsens darüber, ob diese drei Schritte ausreichen. Das schwache Endsystemmodell ist in den gesamten Linux-TCP/IP-Stack eingebaut, und es ist nicht klar, was bei subtilen Problemen wie Multicast schief gehen könnte.
Es ist nicht klar, wie Sie beispielsweise die Ausgabeschnittstelle für Sendungen auswählen würden. Sollen alle raus? Vielleicht. Was ist das richtige Verhalten, wenn der Stack einen ausgehenden Broadcast mit einer Quelladresse erhält, die keiner der Schnittstellen zugewiesen ist?
Auch hier haben Sie das falsche Werkzeug für den Job ausgewählt.
Lösung 2:
Wahrscheinlich möchten Sie eine Bridge mit den 8/9-Schnittstellen erstellen und dieser Bridge dann eine IP-Adresse zuweisen (bridge-utils-Paket, Befehl 'brctl add').
Auf diese Weise fungiert die Bridge wie ein Switch und kann eine IP-Adresse in Ihrem Subnetz haben.
Lösung 3:
Ich würde empfehlen, die physischen Schnittstellen zu verbinden und dann alle Adressen auf der einzelnen verbundenen Schnittstelle zu konfigurieren.
Auch auf dem Switch benötigen Sie Unterstützung.
Hier ist ein Mini-Tutorial, mit dem Sie beginnen können.
Lösung 4:
Anscheinend möchten Sie eine Testumgebung, die 9 separaten Computern entspricht, und glauben, dass 9 Schnittstellen auf einem Computer dies emulieren könnten. Unter Linux ist dies aus Gründen, die David Schwartz beschrieben hat, einfach nicht über einen einzigen Stack möglich. BTDT und haben die Narben. Es war schon schlimm genug mit 2 Schnittstellen.
Eine bessere Lösung könnte darin bestehen, 8 oder 9 diskrete virtuelle Maschinen auf einem Host auszuführen und 8 oder 9 Schnittstellen zu diesen virtuellen Maschinen zu überbrücken.