Forzar el tráfico de la red local a través del conmutador

Forzar el tráfico de la red local a través del conmutador

Tengo una máquina con tres tarjetas de red. Una tarjeta está conectada a una WAN y las otras dos tarjetas están conectadas al mismo conmutador con la misma subred (192.168.1.0/24). Lo que quiero hacer es enviar datos entre las dos tarjetas, pero asegurarme de que los datos realmente pasen por el conmutador, en lugar de permanecer internos en la pila de red de Linux.

Cuando configuro las dos tarjetas normalmente e intento hacer ping a una de la otra, funciona pero Wireshark no muestra ningún tráfico, por lo que no accede a la red.

Intenté configurar rutas estáticas al conmutador tratando de obligar a todo el tráfico a pasar por el conmutador. Cuando hago esto, los pings son respondidos netamente y recibo una avalancha de solicitudes ARP sin respuesta tratando de encontrar la otra dirección. Pero cualquiera de las direcciones puede hacer ping a otra máquina en la subred, y esa máquina puede hacer ping a cualquiera de las direcciones.

Intenté cambiar la configuración del filtro arp en el kernel de Linux, pero no tuve suerte.

¿Alguna sugerencia? ¡Gracias!

Además, puntos de bonificación por configurar una NIC con alias de IP para hacer lo mismo.

Respuesta1

Soy nuevo aquí pero quizás tenga la respuesta a esta pregunta.

El sistema operativo intentará reconocer que la otra tarjeta de red es un desarrollador local. Creo que puedes usar el 'desarrollador'opción para'ruta IP' para forzar la salida de la otra tarjeta de red.

Por ejemplo, tengo una dirección IP:

45.32.160.129

Y la ruta para esta subred muestra el dispositivo dev ens3

45.32.160.0/24 dev ens3 proto kernel scope link src 45.32.160.129

Pero digamos que tengo otra tarjeta de red, ens4 en 45.32.161.4/24:

45.32.161.0/24 dev ens4 proto kernel scope link src 45.32.161.4

entonces puedes usar el 'desarrollador'opción para'ruta IP' para especificar el dispositivo utilizado. De esta manera, puede especificar que la otra tarjeta de red se use sola para la IP de ens3 en lugar de usar ens3 (sí mismo) cuando intente acceder a ella desde la máquina local. El truco para esto es que también debes utilizar el enrutamiento de políticas. Debido a que no puede hacer que la tarjeta de red intente acceder a sí misma y salir también de la interfaz de otras tarjetas porque nunca se encontrará. Por lo tanto, debe especificar con la política/enrutamiento de origen que solo debe saltar a través de la otra tarjeta cuando esa tarjeta intenta acceder a ella. Ahí es donde tendrías que especificar una coincidencia de fuente. Aún más, debería asegurarse de estar vinculando la dirección IP de origen correcta en el software de red de su elección que está intentando usar o probar. Esto debería obligarlo a acceder a la otra tarjeta de red a través del conmutador. Por supuesto, entonces harías lo mismo con la otra tarjeta pero al revés.

Esto puede resolver su problema. Mira el 'ruta IP' página man para la precedencia de ruta y el 'desarrollador'parámetro. Luego observe la coincidencia de reglas para hacer la parte de la política. Debería verse así:

ip rule add from 45.32.161.4 lookup from1
ip rule add from 45.32.160.129 lookup from2

Luego agregue las rutas opuestas:

ip route add 45.32.160.129 via 45.32.161.4 dev ens4 table from1
ip route add 45.32.161.4 via 45.32.160.129 dev ens3 table from2

Y necesita que esas tablas se creen en /etc/iproute2

información relacionada