Você está entendendo mal o problema. Nem todo pacote é uma resposta e nem todo pacote pode ser combinado com algum outro pacote de tal forma que "a mesma interface de rede em que eles entraram" faz sentido. O que você quer fazer é selecionar o gateway para um pacote baseado em seu endereço IP de origem.
Isso é chamado roteamento baseado em origem ou roteamento de política. Você pode fazer isso com uma regra simples de iptables
, mas a melhor maneira é configurar duas tabelas de roteamento, uma para cada endereço de origem pública:
Primeiro, crie duas tabelas (Substitua < NAME1 > e < NAME2 > por nomes sensíveis para seus dois provedores, mesmo com IP1, DEV1 e assim por diante):
echo 200 <NAME1> >> /etc/iproute2/rt_tables
echo 201 <NAME2> >> /etc/iproute2/rt_tables
Adicione um gateway a cada tabela de roteamento (se necessário):
ip route add <NET1> dev <DEV1> src <SRC1> table <NAME1>
ip route add <NET2> dev <DEV2> src <SRC2> table <NAME2>
Em seguida, uma rota padrão:
ip route add default via <IP1> table <NAME1>
ip route add default via <IP2> table <NAME2>
Em seguida, as regras para selecionar a tabela de rotas com base no endereço de origem:
ip rule add from <IP1> table <NAME1>
ip rule add from <IP2> table <NAME2>
Consulte Roteamento para vários uplinks / provedores para obter mais detalhes.