No Linux, use uma combinação de iptables e route para enviar traphic para portas específicas para uma interface e outro traphic para a outra interface.
Veja especificamente o segundo exemplo em artigo para uma explicação mais elaborada. Neste exemplo, existem duas interfaces, "ASTRAL" e "RDS". As seguintes linhas são adicionadas à tabela mangle do iptables:
iptables -A PREROUTING -t mangle -i eth0 -p tcp --dport 22 -j MARK --set-mark 1
iptables -A PREROUTING -t mangle -i eth0 -p tcp --dprot 80 -j MARK --set-mark 2
E isso para as tabelas de roteamento (/ etc / iproute2 / rt_tables):
ip route add default via 10.1.1.1 dev eth1 table RDS
ip route add default via 10.8.8.1 dev eth2 table ASTRAL # the same like in the first example
ip rule add from all fwmark 1 table RDS
ip rule add from all fwmark 2 table ASTRAL
Uma solução semelhante pode estar funcionando no Windows usando o netsh advfirewall em vez do iptables e do comando route No entanto, esta discussão no fórum sugere que isso não é Meu conhecimento do MS Windows não é bom o suficiente para fornecer uma solução completa embora Verifique esta pergunta do Server Vault , como parece ser semelhante à sua pergunta (roteamento baseado no intervalo de ip, mas não no número da porta).