Soluzione 1:
Hai bisogno di un forte modello di sistema finale. Linux è fondamentalmente basato su un modello di sistema di invio debole, quindi non è davvero una buona scelta di sistema operativo per questa applicazione.
Dovrai falsificare ogni parte del comportamento di cui hai bisogno, dall'ARP al policy routing alla selezione dell'indirizzo di origine. Avrai anche bisogno di filtri per impedire che i pacchetti vengano accettati se arrivano sull'interfaccia sbagliata.
I passaggi assolutamente necessari sono:
-
Configura arp_filter=1 e arp_ignore=2 su tutte le interfacce.
-
Aggiungi il routing basato sull'origine per interfaccia per il traffico in uscita. (L'interfaccia di destinazione deve essere scelta in base all'indirizzo di origine.)
-
Aggiungi il filtro in ingresso per interfaccia per eliminare silenziosamente i pacchetti ricevuti sull'interfaccia sbagliata. (Pacchetti con un indirizzo di destinazione assegnato a un'altra interfaccia.)
Sfortunatamente, non c'è consenso sul fatto che questi tre passaggi siano tutto ciò che è necessario. Il modello di sistema dell'estremità debole è integrato nell'intero stack TCP/IP di Linux e non è chiaro cosa potrebbe andare storto con problemi sottili come il multicast.
Ad esempio, non è chiaro come sceglieresti l'interfaccia di output per le trasmissioni. Dovrebbe uscire da tutti? Forse. Qual è il comportamento corretto se lo stack riceve una trasmissione in uscita con un indirizzo di origine non assegnato a una delle interfacce?
Ancora una volta, hai scelto lo strumento sbagliato per il lavoro.
Soluzione 2:
È più probabile che tu voglia creare un bridge con le interfacce 8/9 e quindi assegnare un indirizzo IP a quel bridge (pacchetto bridge-utils, comando 'brctl add').
In questo modo il bridge funzionerà come uno switch e potrà avere un indirizzo IP nella tua sottorete.
Soluzione 3:
Consiglierei di collegare le interfacce fisiche, quindi configurare tutti gli indirizzi sulla singola interfaccia collegata.
Avrai bisogno di assistenza anche sullo switch.
Ecco un mini tutorial che puoi utilizzare per iniziare.
Soluzione 4:
Sembra che tu voglia un ambiente di test equivalente a 9 macchine separate e ritieni che 9 interfacce su una macchina possano emularlo. In Linux semplicemente non può farlo attraverso un singolo stack per i motivi descritti da David Schwartz. BTDT e avere le cicatrici. Era già abbastanza brutto con 2 interfacce.
Una soluzione migliore potrebbe essere quella di eseguire 8 o 9 macchine virtuali discrete nel tuo unico host e collegare 8 o 9 interfacce a queste macchine virtuali.