Estás malinterpretando el problema. No todos los paquetes son una respuesta y no todos los paquetes se pueden combinar con algún otro paquete de modo que tenga sentido "la misma interfaz de red en la que entraron". Lo que desea hacer es seleccionar la puerta de enlace para un paquete en función de su dirección IP de origen.
Esto se denomina enrutamiento basado en el origen o enrutamiento de políticas. Puede hacerlo con una regla simpleiptables
, pero la mejor manera es configurar dos tablas de enrutamiento, una para cada dirección de origen público:
Primero, cree dos tablas (Reemplace <NAME1> y <NAME2> con nombres sensibles para sus dos proveedores, lo mismo con IP1, DEV1, etc.):
echo 200 <NAME1> >> /etc/iproute2/rt_tables
echo 201 <NAME2> >> /etc/iproute2/rt_tables
Agregue una puerta de enlace a cada tabla de enrutamiento (si es necesario):
ip route add <NET1> dev <DEV1> src <SRC1> table <NAME1>
ip route add <NET2> dev <DEV2> src <SRC2> table <NAME2>
Luego una ruta predeterminada:
ip route add default via <IP1> table <NAME1>
ip route add default via <IP2> table <NAME2>
Luego, las reglas para seleccionar la tabla de ruta en función de la dirección de origen:
ip rule add from <IP1> table <NAME1>
ip rule add from <IP2> table <NAME2>
Consulte Enrutamiento para múltiples enlaces ascendentes / proveedores para obtener más detalles.