actually 157.238.135.60 was routable through the 'default' multipath route of eth0 and ppp0. I've actually recieved a pretty good solution from Julian Anastasov (he's written some patches for the linux kernel to help with routing) I'll copy and paste his reply here:
Hello Joshua,
On Tue, 4 May 2004, Joshua Szmajda wrote:
>> I have a question I thought you could answer. I have a linux router,
>> configured with two internet connections and two lan segments. I've
>> setup multipath routing as described in
>>
http://lartc.org/howto/lartc.rpdb.multiple-links.html
>>
>> My problem (I think) is that somehow the router will randomly choose
>> incorrect routing paths for different hosts, for example:
>> on my workstation (192.168.1.20), I ssh to a server I have on an
>> external network (157.238.135.60), and my connection locally hangs. On
>> the router, I search the routing cache:
Yes, Netfilter NAT does not use correctly the routing
and does not bind each NAT connection to particular path (nexthop).
As result, a routing cache flush or entry expiration leads to
rerouting which can select another path. ssh can further exploit
this by providing different TOS values during the connection life
causing different packets to use different paths.
So, all current kernels are unusable in their default code, you
need the extra CONNMARK netfilter module or the "routes" patch.
>> My question is: why does this happen? what can I do to fix it? Would
>> your patches help?
Yes, the patches can help, you can check nano.txt, you
will need some user space script(s) that will monitor the gateways'
status.
Regards
--
Julian Anastasov
So I'm going to try his patches to the kernel and see if that helps. Thanks for your help!