ip route with two default gateways
So I have this challenge, and I've searched the internet high and low. Learned a lot - but Im still having some issues regarding my two gateway setup, which I really want to accomplish.
I have two gateways, for various reasons and I am trying to get the two NICs to behave. My problem is with the secondary Gateway (Gateway2), since everything works with Gateway1 and eth0, default route and everything.
So first off, my setup looks somewhat like this:
NAT (in) = Cisco ASA NAT (out)= Zyxel whatever
WAN-IP
NAT (in) - - - - - - - - - - Ubuntu Box 12.04 - - - - - - - - - - - - NAT (out)
Gateway1
10.0.0.1 <-> 10.0.0.50 (eth0) || (eth1) 192.168.0.50 <-> 192.168.0.1
. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Gateway2
So I went to:
1. Create new table : "1 zyxelwan"
within "/etc/iproute2/rt_tables"
2. Create routing policy for table (zyxelwan)
ip route add 192.168.0.0/24 dev eth1 src 192.168.0.50 table zyxelwan
ip route add default via 192.168.0.1 dev eth1 table zyxelwan
3. Set the IP rules which makes use of the newly-created routing table:
ip rule add from 192.168.0.50 table zyxelwan
ip rule add to 192.168.0.50 table zyxelwan
I have left out other configurations (for now) to ensure that I was running lighest-possible-config. And it is as if my ip rules are being completely ignored, see here some of the outputs I get after the above mentioned steps.
route -n
Kernel IP routing table
Destination Gateway Genmask Flag Metric Ref Use Iface
0.0.0.0 10.0.0.1 0.0.0.0 UG 100 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
Cannot see the table Ive configured, but if I try to apply the routing commands to the table again, I get "file already exists". So the config should be there somewhere.
But when I try to tracepath i.e. 8.8.8.8, I get this result:
tracepath 8.8.8.8
1: 10.0.0.50 0.161ms pmtu 1500
So I tried to delete the gateway, from which it tried to send the traffic (10.0.0.1) - with this result (This should seems to be regardless my ip rules & table).:
tracepath 8.8.8.8
1: send failed
Resume: pmtu 65535
And if I write the route, ommiting the table, and replace the previous default route with:
route add default via 192.168.0.1 dev eth1
It will ofc work,but id really like being able to SSH/VPN into the Ubuntubox from my Cisco Gateway and then access the network on my Zyxel Gateway - Am I missing something dreadfully obvious, or are you smart ppl out there able to point me in the right direction?
I was thinking according my ip rules, it could be as if it only "listens" for traffic, and will direct it out the same interface - according to the table/ip rules - and the solution might just have been "switching the cables around"?
Anyhow, thank you in advance for any suggestions :)
Solution 1:
I resolved the issue, by forcing a bind on the local ip of eth0, of OpenVPN - afterwards, I created another routing table for eth0. I then added a default gateway for eth1 as well, the regular way - no table :)
Thank you for having taken time to look at my original post :)
Solution 2:
The old route
command isn't able to properly represent any of the fancy stuff you are doing with the new ip route
command. To show the routing configuration, use ip route list table [xx|all]
instead of route
.