I want to aggregate (not load-balance) multiples (in my case 3) xDSL lines (all differents ISPs) on my linux router.
PC Linux Router (in our office) with 4 NICs cards :
- eth0 (LAN : 192.168.0.0/24) connected to a simple switch
- eth1 connected to ISP1 (15 Mbps)
- eth2 connected to ISP2 (15 Mbps)
- eth3 connected to ISP3 (30 Mbps)
eth1, eth2 and eth3 have their own IP & Gateway; all different.
I know that I can load-balance using iproute or iptables, but this is not what I'm looking for.
I also know that I can use MLPPP, but the ISPs need to support it, so it's not a solution for me.
What I'm looking for is aggregate the links of our 3 ISPs (15+15+30= 60 Mbps !!) through a server in a datacenter (with a big Internet pipe : >100 Mbps). The way to achieve this would be to :
- Make 3 VPN connections (1 for each ISP) from our Linux router to our Datacenter' Server
- Bond these 3 VPN connection using "Linux Ethernet Bonding" (ifenslave package), resulting in a new bond0 interface
- Configure our linux router to use bond0 to access Internet (create a new route ?)
- On the Datacenter's server, configure iptables (MASQUERADING ?) in order to route all traffic coming from the VPNs connections to Internet
The theory seems to be good, but I don't have enough Linux expertise to achieve this, does anyone have already set-up something like this ?
Any idea/tutorial would be appreciated.
Right now, I'm stuck with vtun and creating a VPN for each iface. I can create 3 VPN easily (tap0, tap1, tap2), but I can't figure out how to force tap0 to use eth0, tap1 to use eth1, and tap2 to use eth2. Because, all 3 tunnels passes through the default route on eth1 (ISP1), instead of allocating 1 tunnel to 1 iface (ISP).