Você está entendendo mal o problema. Nem todo pacote é uma resposta e nem todo pacote pode ser correspondido a outro pacote, de modo que "a mesma interface de rede em que eles entraram" faz sentido. O que você deseja fazer é selecionar o gateway para um pacote com base em seu endereço IP de origem.
Isso é chamado de roteamento baseado em origem ou roteamento de política. Você pode fazer isso com uma regra simplesiptables
, mas a melhor maneira é configurar duas tabelas de roteamento, uma para cada endereço de origem público:
Primeiro, crie duas tabelas (Substitua <NAME1> e <NAME2> por nomes sensíveis para seus dois provedores, o 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.