Multiple Internet connections, multiple networks and split access in Linux
- by Swapneel Patnekar
I am having trouble setting up multiple internet connections for split access in Linux. We have 3 internet connections from 3 different ISP's. We want to configure our Linux gateway machine such that our three internal networks 10.2.1.0/24, 192.168.20.0/24 & 192.168.2.0/24 use ISP1, ISP2 and ISP3 respectively in a split access manner.
Outlined below is the layout/settings,
Interfaces of the Linux Gateway connected to Routers:
eth0: 10.1.1.2<---------->10.1.1.1(Internal Interface of ADSL Router)[ISP1]
eth1: 192.168.15.2<------>192.168.15.1(Internal Interface of 3G Router)[ISP2]
eth3: 192.168.1.2<------->192.168.1.1(Internal Interface of ADSL Router)[ISP3]
Kindly note that none of the interfaces in the Linux gateway has a public static IP address. Routers of ISP1 and ISP2 get assigned a dynamic public IP address when connected to the Internet, router of ISP3 has been assigned a public static IP address.
Interface of Linux gateway connected to a switch,
eth4: 10.2.1.1(LAN Interface for ISP1)
eth4:0 192.168.20.1(LAN interface for ISP2)
eth4:1 192.168.2.1(LAN Interface for ISP3)
eth4:0 & eth4:1 are virtual interfaces with eth4 being the interface connected physically.
Based on http://linux-ip.net/html/adv-multi-internet.html I've set the following routes,
ip route flush table 4
ip route show table main | grep -Ev ^default | while read ROUTE ; do ip route add table 4 $ROUTE done
ip route add table 4 default via 192.168.15.1
ip rule add fwmark 4 table 4
ip route flush cache
Additionally, using the following iptables rules to mark & route packets as per the guide mentioned above : http://pastebin.com/KzWHFGJA
At this point, computers from 192.168.2.0/24 network are successfully able to reach the Internet through ISP3. 192.168.20.0/24 and 10.2.1.0/24 are unable to access the Internet through ISP1 and ISP2 respectively.
Any inputs will be much appreciated !