SpudHead
Hi, I've been searching for a while for a way to configure OpenVPN so a single client connection can be established over multiple routes. My setup is such that I have three separate internet connections on a single box. I've been using load balancing software to utilise all three at once and increase speed but load balancing is not ideal. Some websites and services have issues with a single session arriving from multiple IPs and a single connection is limited to the speed of the interface it's using so you only really benefit from applications that utilise multiple connections.
Now, acquiring a VPS with more bandwidth capability than my three connections combined is not problematic these days, so my idea was to install OpenVPN on such a VPS, then somehow split a single VPN connection across all three outgoing interfaces which would give me a single tap interface running at the combined speeds of all three interfaces.
My first "attempt" was to simply use a load balancer to distribute the UDP packets across all three interfaces and enable the "float" option in OpenVPN server so it didn't care about the different incoming IPs for the same connection. This didn't work however, no load balancer I could find was capable of being configured in this specific way and I'm not sure OpenVPN was responding as I expected to such traffic. The next thing was to search through OpenVPN docs to see if this eventuality has already been included, but despite my efforts I haven't located such functionality, I may however have missed it, my apologies if so.
My current idea is to code a proxy application that runs on both my PC and the VPS, the one running client side establishes three connections to the server side app with each connection being bound to each WAN interface. The client app then sits and listens for an incoming connection from the localhost (which would be from the openvpn client), when one occurs the server side application establishes a counterpart localhost connection to the VPN server and passes the data back and forth balanced across each 3 intermediate connections. I have no doubt this would work, but, it would be silly to begin coding what would be a relatively complex application is the ability to do what I want is already possible an easier way. Hence my post here is to enquire if there is another easier way to accomplish this.
Many thanks for reading
Colin.