Cara, seguinte...
Tenho um cenário parecido com o seu, só que o meu tem o squid no meio, tem como fazer sim. Mas o fail-over q eu nao consegui fazer, se cair um tenho q mudar o GW manualmente.
Resolvido facilmente com um script no cron.
Mas tem como forçar a saida de uma rede ou range de ips por um link e uma outra rede ou range por outro link tranquilamente.
Isso é possível fazendo roteamento por Origem.
Vamos supor que o ip da sua eth2 seja 192.168.0.254 e da sua eth3 192.168.1.254 (sempre vai ter q estar em redes separadas).
Vamos ter que configurar o ip route (iproute2) para sempre q a origem dos pacotes for 192.168.0.254 sair pelo link ppp0 e sempre que a origem dos pacotes for 192.168.1.254 sair pelo link ppp1, como fazemos isso? com algumas regras no ip route e algumas no iptables.
vamos ao ip route..
############################### IP ROUTE - INICIO
# limpando as tableas padroes do sistema
echo "255 local" > /etc/iproute2/rt_tables
echo "254 main" >> /etc/iproute/rt_tables
echo "253 default" >> /etc/iproute/rt_tables
echo "0 unspec" >> /etc/iproute_rt_tables
# adicionando tabelas necessarias
echo "20 link1" >> /etc/iproute2/rt_tables
echo "30 link2" >> /etc/iproute2/rt_tables
# se quiser balancear pode descomentar esta linha abaixo
# echo "40 balanceamento" >> /etc/iproute2/rt_tables
# remover rotas padrao (se houver)
ip route del default &> /dev/null
ip route del default &> /dev/null
# tabela main (principal)
ip rule del table main
ip rule add prio 10 table main
# rotas do seu sistema linux
# se houverem outras redes internar q vc acessa atraves de um gw interno
#ip route add ip-ou-rede-de-destino via ip-do-gw dev interface-de-saida
# regras link1 - ppp0
ip rule del prio 30 table link1 &> /dev/null
ip rule add prio 30 table link1
ip route add 192.168.0.254 via ip-do-gw-do-ppp0 table link1
ip route add default via ip-do-gw-do-ppp0 table link1
ip rule del from 192.168.0.254
ip rule add from 192.168.0.254 table link1 prio 2
# regras link2 - ppp1
ip rule del prio 30 table link2 &> /dev/null
ip rule add prio 30 table link2
ip route add 192.168.1.254 via ip-do-gw-do-ppp1 table link2
ip route add default via ip-do-gw-do-ppp1 table link2
ip rule del from 192.168.1.254
ip rule add from 192.168.1.254 table link2 prio 3
# aqui se vc quiser fazer o balanceamento pelo menos no http
# rota default preferencial
#ip route add default via ip-do-gw-do-ppp0
# marcar pacotes para balanceamento
#iptables -A PREROUTING -t mangle -p tcp --dport 80 -d 0.0.0.0/0.0.0.0 -j MARK --set-mark 0x4
# load balancing
ip rule del prio 40 table balanceamento &> /dev/null
ip rule add prio 40 table balanceamento
ip rule del fwmark 0x4 &> /dev/null
ip rule add fwmark 0x4 lookup balanceamento prio 4
ip route add default table balanceamento nexthop via ip-do-gw-do-ppp0 dev ppp0 weight 1 nexthop via ip-do-gw-do-ppp1 dev ppp1 weight 1
# limpando o cache do ip route
ip route flush cache
############################### IP ROUTE - FIM
############################### IPTABLES - INICIO
# vai ter q adicionar no iptables substituindo as regras de nat masquerade
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 192.168.0.254
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to 192.168.1.254
# assim nao importa de qual ip da rede venha, o pacote vai passar pelo seu kernel
# como 192.168.0.254 ou 192.168.1.254 e vai cair nas regras de roteamento do
# ip route, onde o mesmo jogara ele para a tabela link1 ou link2 e
# consequenteme para o gateway de cada link.
############################### IPTABLES - FIM
Me deu um pouco de trabalho fazer isso aqui. Mas a excência é essa: iproute2 e iptables. Se vc quiser podera ainda colocar o squid pra funcionar em conjunto com esta solução.
Mas ai ja é uma outra etapa.
Qualquer coisa, google neles. Vai achar muita coisa.
Se coloquei aqui parte de algum script de alguem, peço desculpa, pois fiz um mutante com os materiais da net pra poder resolver meu problema e espero poder ajudar a comunidade um pouco.
Sequem alguns links:
claudineimatos.com » Roteando múltiplos links de internet
claudineimatos.com » Roteamento Avançado - Forçando as rotas
Linux: Configurando 2 (dois) links ADSL no mesmo servidor [Artigo]