Não é uma resposta completa porque, no momento, estou no celular, mas isso também é muito longo para um comentário:
Por padrão, todas as NICs são gerenciadas por uma única pilha IP no kernel do Linux e, por causa disso, o kernel “sabe” que o tráfego do endereço IP 10.50.0.1 na eth2 para 10.50.1.1 não precisa ser enviado para o roteador na sub-rede 10.50.0.0/24 e irá ignorar esse roteamento completamente e enviá-lo diretamente para a eth3.
Geralmente essa é a coisa mais inteligente a fazer, já que isso praticamente não fornecerá latência e muito mais largura de banda do que as velocidades reais de fio da eth2 e eth3 e do (s) roteador (s) intermediário (s).Você pode evitar isso configurando instruções específicas de roteamento, o que parece ser o que você está tentando com o iptables, mas, sem dúvida, uma solução melhor é fazer uso de namespaces de rede. Atribuindo cada NIC a um namespace diferente, o kernel do Linux não tratará mais o tráfego de eth2 para eth3 como local e, em vez de simplesmente enviar os pacotes apenas na memória de 10.50.0.1 para 10.50.1.1, eles vão sair na linha.