So I tried the dispatch-proxy solution and after about 9 hours of fiddling with it, I finally got it working the way I wanted. It's not a perfect solution, as it relies on a round robin approach to switching Nics, but it's better than nothing. I highly recommend that you use the installation instructions stored in his imgur album linked towards the top of the page. That will get everything you need in place. Configuring it correctly was another story.
The main example he provides sets up an HTTP proxy that you can use in your browser's settings to surf with, except that it can't handle https pages. What you really want to setup is the Socks proxy which will handle everything.
The HTTP proxy worked for browsers, but all of my background system apps that do things like check for program or weather updates were left out of the loop. Using the Socks proxy ties all traffic on your system into the sharing. The trick is that you have to change the system settings, and optionally the app settings, to get it to work.
You can't use the Network & Internet setting page that's found in Windows 8 through 10. Whatever you enter there will end up screwing up the configuration. You have to go to the Contol Panel and open Internet Options
and go to the Connections
tab. From there you want to go to the Proxy Server
section and check Use a proxy server for your LAN
and Bypass proxy server for local addresses
. Then you want to click the Advanced
button and on the page that opens you want to make sure every field is empty except the Socks:
fields. There you want to enter socks
for the Proxy address to use
and 1080
for the Port
. Also, make sure that the Use the same proxy server for all protocols
box is unchecked. After using this method, every app on my system uses Disptach-Proxy.
So my console command looks like this dispatch start 192.168.0.103@6 192.168.19.2@4
.
If you don't add the weight proportions after each address, it seems to behave just like it does without the proxy, sending most of the traffic through the interface that had the lowest system metric before the proxy was installed. So I highly recommend you include those.
One of those IP's is the onboard Nic in my desktop and the other is my tethered 4G phone. I disconnect the phone whenever I leave, but it looks like everything keeps working with the remaining Nic through the proxy until I plug my phone back in where it picks up using both.
The one issue that remains is what happens when you reboot your computer. The proxy doesn't run as a service so you have to run the script ever time you log on. I found a solution if your Nics are permanent and don't require a setup procedure after log on, like my phone does. This doesn't work for me, but it might work for you if you want to automate launching the script...
The best way to go about it is to add it as a startup task. Go to Control Panel
and choose Administrative Tools
, then run the Task Scheduler
and follow these steps...
- Make sure that
Task Scheduler (Local)
is selected in the left pane and from the Action
menu choose Create Basic Task
- On the first page enter a task name. I just entered Dispatch.
- On the next page select
When I Log On
. We do this instead of choosing When The Computer Starts
so that we know the Nics are up and running before creating the proxy.
- On the next page choose
Start a Program
.
- On the next page enter
Start
in the Program/Script:
field and then enter /b dispatch start
and optionally the IP addresses with their weight proportions in the Add Arguments
field. By using the Windows command Start /b
we are telling the task to run without opening a new command window. If you prefer to have an open window, just enter Dispatch
in the Program field and start
, plus the IPs if you want them, in the Options field.
- On the last page check the
Open The Properties Dialogue
box and click Finish
.
- On the
General
tab of the Properties
page make sure that Run only when user is logged on
is selected and then in the Configure For
drop down at the bottom, select whatever version of Windows you are using.
- Go to the
Conditions
tab and uncheck everything.
- Go to the
Settings
tab and uncheck everything.
Click OK
and you're done.
This has a few drawbacks. First, if you choose to launch the task without a command window, you won't know if Dispatch has stopped running due to errors. I spent many hours searching and still haven't been able to find a way to determine the running state of a script. Second, your Nics have to be up and running before the task is launched. If this doesn't happen in the right order on your system then you might have to play around with inserting some kind of delay for launching the task.
Armed with this augmented information, it shouldn't take more than 20 minutes to get it all working.