Teremos que marcar NOVAS conexões com um marcador, então distinguir os pacotes de saída com base no marcador e usar qualquer uma das duas tabelas de roteamento para rotea-las para o gateway apropriado. É possível que você tenha que carregar o módulo CONNTRACK,
modprobe ip_conntrack
Vamos chamar o MAC70 do endereço MAC do gateway 192.168.0.70, e o MAC80 do endereço MAC do 192.168.0.80. Então
iptables -A INPUT -m state --state NEW -m mac --mac-source MAC70 -p tcp --dport 50000 -j CONNMARK --set-mark 1
iptables -A INPUT -m state --state NEW -m mac --mac-source MAC80 -p tcp --dport 50000 -j CONNMARK --set-mark 2
Estas duas regras marcam as novas conexões recebidas (para o protocolo TCP, modifique se você precisar) com dois marcadores simples. Os marcadores são para todas as conexões, ie todos os seguintes pacotes do tipo ESTABELECIDO, RELACIONADO pertencendo a este pacote inicial terá a mesma marca.
A distinção só pode ser feita com base no endereço MAC do gateway, porque o endereço IP de origem de cada pacote é o do cliente que inicia a conexão, não o do gateway . Portanto, isso se aplica somente a conexões ethernet, porque os quadros wi-fi não possuem endereços MAC.
Agora
ip rule add fwmark 1 table router70
ip rule add fwmark 2 table router80
esses dois comandos especificam qual tabela de roteamento (de dois) usar, dependendo da marca de conexão / pacote.
Agora, configuramos duas tabelas de roteamento:
echo 200 router70 >> /etc/iproute2/rt_tables
echo 201 router80 >> /etc/iproute2/rt_tables
ip route add 192.168.0.0/24 dev eth0 table router70
ip route add 192.168.0.0/24 dev eth0 table router80
ip route add default via 192.168.0.70 table router70
ip route add default via 192.168.0.80 table router80
Isto assume que seu NIC ethernet é chamado eth0, caso contrário, mudar de acordo. O roteamento para todas as outras portas e / ou protocolos continua sendo o que você já tem, seja lá qual for.
Você terminou.