zehome / MLVPN

Multi-link VPN (ADSL/SDSL/xDSL/Network aggregation / bonding)
http://www.mlvpn.fr/
BSD 2-Clause "Simplified" License
521 stars 129 forks source link

Can MLVPN support 10's of 4G USB modems? #142

Closed thesocialproxy closed 3 years ago

thesocialproxy commented 3 years ago

I have a server in my office with 80 4G USB modems and 1 fiber 100Mbps Checkpoint router, I am port forwarding traffic from (for example) port 3000 on my router to the server, and then in the server, I have Squid set up to send the outgoing traffic to different modems based on the username.

User 1 on port 3000 will go out from modem 1 User 2 on port 3000 will go out from modem 2 and so on

What I would like to do is get rid of my fiber Checkpoint router and stay only with the server and 80 4G modems. I would like to set up a Digital Ocean server with MLVPN that takes incoming traffic from the internet on port 3000 and sends it using a tunnel to an aggregated interface (of all 80 modems) on my office server on port 3000, then I will use Squid as normal to route traffic to specific outgoing interfaces.

This way, users can connect to the cloud server from the internet and use a single, specific modem on my office server using Squid.

I have read the entire documentation and MLVPN sounds perfect for the job, but I am not sure that I have the right approach.

Can MLVPN achieve what I described above or am I missing anything?

zehome commented 3 years ago

For what I understand, mlvpn is not doing what you think. MLVPN does packet level weighted round robing tunneling. (Operates a layer 3)

What you need, is a connection based load balancer (layer 4), behind a proxy. Linux does this natively:

ip route add default scope global nexthop via $P1 dev $IF1 weight 1 \
        nexthop via $P2 dev $IF2 weight 1
thesocialproxy commented 3 years ago

For what I understand, mlvpn is not doing what you think. MLVPN does packet level weighted round robing tunneling. (Operates a layer 3)

What you need, is a connection based load balancer (layer 4), behind a proxy. Linux does this natively:

ip route add default scope global nexthop via $P1 dev $IF1 weight 1 \
      nexthop via $P2 dev $IF2 weight 1

Thanks for the quick reply. I have been looking for a solution for a while now and couldn't find anything, so thank you for pointing me in the right direction. I have sent you an email explaining the situation a bit more to detail, we are looking for help with this and would love to work with you. thanks again.