Route and separate connections through different NICs

In Windows, before a connection's path is being decided, it's remote address is checked against a routing table, to establish through which interface is going to be routed. A route table entry has 5 important fields: Destination, Mask, Gateway, Interface and Metric, that decides a connection's path.

The Destination and the Mask defines the network/IP ranges that are going to use that route. The Interface and the Gateway defines the path on which the connections need to go.

If a connection's remote address is in the same network as the one defined by a route's Destination and Mask, then the connection will go through that route's defined path (at Gateway through Interface).

If 2 routes cover the same network, then the one with the smallest Metric is used. If a connection doesn't match with any route, then the default route is used, which is the one having it's Destination and Mask set to "0.0.0.0".

In Network Manager you can create/edit/delete Windows network routes very easily in a few clicks. To manage all the routes on your system, click the "Control Panel" button in the Network Manager window

then click "Tools" and "Routes".

Here, you can add new routes or edit and delete any existing routes by selecting one from the list.

But to add any new route, you'll have to know the destination IP of the connection you want to route. So the easiest way to obtain it if you don't have it already, is to go in Network Manager's "Control Panel" and click "IP Sessions". A new window will open in which you can see all system network IP sessions.

Here, look for the connection you are interested by checking the Process name and the Remote address, select it and click "Route remote IP". You can tick "Resolve IP" so you can find your connection more easily by having the remote address IP resolved into it's equivalent domain name.

Also, most multiplayer games uses UDP protocol, and since UDP protocol is "connectionless", Windows wont report any remote address for UDP sockets. To get the remote UDP address, click "Detect remote UDP IPs and ports" and all UDP local ports will be monitored for any remote addresses. If a remote address is detected, it will show in the list.

For this feature to work, you need to have WinPcap and Microsoft Visual C++ 2010 Redistributable installed and packets must be exchanged on that port to capture the remote IP address, so make sure that the game, or whatever runs on that UDP port, is active.

After you clicked "Route remote IP", a new form will pop up with most of the parameters already filled in. All you have to do is to select the interface through which you want the IP session to go, and click "Add".

However, if you want to route an entire company's website, is best to set the destination to a IPv4/16 network, by changing the "Mask" field to "255.255.0.0", to cover a large range of IPs that the website may have. An IPv4/16 network covers IPs from "x.x.0.1" to "x.x.255.254".

It might also be a good idea to select "Save route after ading it", so you can load it again, later when you need it.

Later on, if you need to reload this route, just go in Network Manager's Control Panel, click "Routes", select the saved route and click "Load".