Stai fraintendendo il problema. Non tutti i pacchetti sono una risposta e non tutti i pacchetti possono essere abbinati ad altri pacchetti in modo tale che "la stessa interfaccia di rete in cui sono entrati" abbia senso. Quello che vuoi fare è selezionare il gateway per un pacchetto in base al suo indirizzo IP di origine.
Questo si chiama routing basato sull'origine o routing delle politiche. Puoi farlo con una semplice iptables
regola , ma il modo migliore è impostare due tabelle di routing, una per ciascun indirizzo di origine pubblico:
Innanzitutto, crea due tabelle (sostituisci <NOME1> e <NOME2> con nomi sensibili per i tuoi due provider, lo stesso con IP1, DEV1 e così via):
echo 200 <NAME1> >> /etc/iproute2/rt_tables
echo 201 <NAME2> >> /etc/iproute2/rt_tables
Aggiungi un gateway a ciascuna tabella di routing (se necessario):
ip route add <NET1> dev <DEV1> src <SRC1> table <NAME1>
ip route add <NET2> dev <DEV2> src <SRC2> table <NAME2>
Quindi una route predefinita:
ip route add default via <IP1> table <NAME1>
ip route add default via <IP2> table <NAME2>
Quindi le regole per selezionare la tabella di route in base all'indirizzo di origine:
ip rule add from <IP1> table <NAME1>
ip rule add from <IP2> table <NAME2>
Vedi Routing per più uplink / provider per maggiori dettagli.