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
- 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.
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.