Solución 1:
Necesita un modelo de sistema final sólido. Linux se basa fundamentalmente en un modelo de sistema de envío débil, por lo que realmente no es una buena opción de sistema operativo para esta aplicación.
Tendrá que falsificar cada parte del comportamiento que necesite, desde ARP hasta el enrutamiento de políticas y la selección de la dirección de origen. También necesitará filtros para evitar que se acepten paquetes si llegan a la interfaz incorrecta.
Los pasos definitivamente necesarios son:
-
Configure arp_filter=1 y arp_ignore=2 en todas las interfaces.
-
Agregue enrutamiento por interfaz basado en la fuente para el tráfico saliente. (La interfaz de destino debe elegirse en función de la dirección de origen).
-
Agregue filtrado de ingreso por interfaz para descartar silenciosamente los paquetes recibidos en la interfaz incorrecta. (Paquetes con una dirección de destino asignada a otra interfaz).
Desafortunadamente, no hay consenso sobre si estos tres pasos son todo lo que se necesita. El modelo de sistema final débil está integrado en toda la pila TCP/IP de Linux y no está claro qué podría salir mal con problemas sutiles como la multidifusión.
No está claro cómo elegiría la interfaz de salida para transmisiones, por ejemplo. ¿Debería salir todos? Quizás. ¿Cuál es el comportamiento correcto si la pila recibe una transmisión saliente con una dirección de origen no asignada a una de las interfaces?
Una vez más, ha elegido la herramienta incorrecta para el trabajo.
Solución 2:
Lo más probable es que desee crear un puente con las interfaces 8/9 y luego asignar una dirección IP a ese puente (paquete bridge-utils, comando 'brctl add').
De esta forma, el puente actuará como un conmutador y puede tener una dirección IP en su subred.
Solución 3:
Recomendaría vincular las interfaces físicas y luego configurar todas las direcciones en la única interfaz vinculada.
También necesitará soporte en el conmutador.
Aquí hay un mini tutorial que puede usar para comenzar.
Solución 4:
Parece que desea un entorno de prueba equivalente a 9 máquinas separadas y creía que 9 interfaces en una máquina podrían emular eso. En Linux, simplemente no puede hacer esto a través de una sola pila por las razones descritas por David Schwartz. BTDT y tener las cicatrices. Ya era bastante malo con 2 interfaces.
Una mejor solución podría ser ejecutar 8 o 9 máquinas virtuales discretas en su único host y conectar 8 o 9 interfaces a estas máquinas virtuales.