How to switch between Internet connections in Windows
Table of contents
If you have Linux, see the article ‘Setting up network routes: the choice of connection used for the Internet; simultaneous use of multiple connections for different purposes’ In it you will find additional tricks for manipulating network routes that will work on Windows also.
A computer can be connected directly to several networks: for example, to a wired network and to a wireless network; or to two Wi-Fi networks; or use the phone as a modem via Bluetooth and at the same time be connected to a wired and Wi-Fi network; or be connected to four Wi-Fi networks — whatever!
If you go online, how does the operating system choose which of several connections to use? The system acts very wisely – it does not neglect any of the connections. And in case of one of them fails, it uses another connection.
But after all, in any case, OS needs to choose which connection to use at the moment! And the system again operates wisely – it uses the best connection. To find out which connection is best, the so-called Metric (a conditional value that takes into account several parameters at once – network speed, packet loss, and so on.) is calculated for each of them.
Let's consider a real example. My computer is connected to two Wi-Fi networks. To learn the characteristics of the routes, open the Windows command line, for this press Win+x, and select Windows PowerShell (Administrator). In the command window that opens, type the command
Pay special attention to the lines:
Network Address Network Mask Gateway Interface Metric 0.0.0.0 0.0.0.0 192.168.0.1 192.168.0.49 55 0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.43 70
The network address is 0.0.0.0 and the netmask 0.0.0.0 is designation for the default route. The default route is the route to which traffic is sent, for which there is no other certain route.
For example, there we can see the line
192.168.56.0 255.255.255.0 On-link 192.168.56.1 281
It has a network address of 192.168.56.0 with a subnet mask of 255.255.255.0 – that is, any IP addresses in the range of 192.168.56.0-192.168.56.255. So, for these addresses the route is clearly set – this traffic will be sent to 192.168.56.1.
But requests to any other IP that is not in the table (i.e., for which no certain route is specified), then it will be sent by default route – this is what is specified for the network 0.0.0.0 with the mask 0.0.0.0. The most typical traffic sent by default route is Internet traffic (as well as traffic to other local networks to which your computer is not directly connected – but for home networks this is a rare situation).
To select the default Internet connection, you must change the default route.
Let's return to the previously received information about default route:
It means that one of my interfaces has an IP address of 192.168.0.49 and its metric is 55, the other network interface has IP 192.168.1.43 and the metric is 70. The route that has the less metric value wins (the smaller the metric, the better connection).
Thus, if I access the Internet, the network interface 192.168.0.49 will be used.
Let us verify this in several ways. Let's remember our IP addresses, as external services see them. For this I use to https://suip.biz/?act=myip:
I got that my IP is 188.8.131.52, and my local IP is 192.168.0.49. At the Windows command prompt, I do the following:
As you can see from the first line, I actually go online through the gateway 192.168.0.1.
So, there are several ways to change the default route. For example, you can change the metric value so that another route becomes a priority. The second option is to delete the other routes, leaving only one.
To be clear, I will show you a concrete example. I have two network interfaces with IP addresses:
- 192.168.0.49 (has the gateway 192.168.0.1) – is used by default
- 192.168.1.43 (has the gateway 192.168.1.1) – I want it to be used by default
To do this, I delete all default routes:
route DELETE 0.0.0.0
Now I add the one I want to make the default route by a command of the form:
route ADD 0.0.0.0 MASK 0.0.0.0 GATEWAY
In it, the GATEWAY must be replaced with the IP address of the gateway (router) of the interface through which you want to go online. For me it:
route ADD 0.0.0.0 MASK 0.0.0.0 192.168.1.1
At this stage, the Internet connection has already returned and if one connection is enough for you, then you may stop here.
However, I want the second connection to be active as a backup, but it should not be used by default.
To add it, use the following command:
route ADD 0.0.0.0 MASK 0.0.0.0 GATEWAY METRIC 100
Note that instead of the GATEWAY, you need to enter the IP address of the gateway of the ‘backup’ interface. In addition, the value is not absolute, but relative!!! Remember, that the specified value ADDS to that value of the metric that the operating system calculates. The value of 100 can be changed to another (for example, 50). But choose it so that the value in total with the calculated metric was greater than the metric of connection that we want to use by default.
route ADD 0.0.0.0 MASK 0.0.0.0 192.168.0.1 METRIC 100
As you can see, in the default routes two network interfaces are still available. But now the interface 192.168.0.49 has a very large metric value, so by default the network interface 192.168.1.43 will be used.
Let's check the IP in the browser https://suip.biz/?act=myip:
As you can see, the external IP changed (it was 184.108.40.206, and it became 220.127.116.11) and local (it was 192.168.0.49, and it became 192.168.1.43).
At the Windows command prompt, I do the following:
As you can see from the first line, I actually go online through the gateway 192.168.1.1.
It should be noted a couple of points in the behavior of the route command, which are counterintuitive (we are waiting for one result, but we get another, unexpected result).
It is not necessary to delete/add routes, including the default route, it can be modified using the route CHANGE command. But remember the peculiarity of this command, if you have two or more default routes: it will delete ALL routes and set new one that is specified with this command! At first glance this is not obvious, but if you think about it, it becomes clear why it acts in this way.
Although this has already been said above, the value of the metric is RELATIVE! The value that you set for the metric is added to the value calculated by the system. At the same time, it constantly floats: that is, the system regularly recalculates the metric values, but adds to each received number the one that you specified with the route ADD command.
By default, all set routes, including metric values, will be reset when the computer restarts.
Using the -p switch, you can create persistent routes that will be saved after a reboot.
Example of adding a permanent route:
route -p add 192.168.50.0 mask 255.255.255.0 192.168.1.170 if <interface_ID>
Part if <interface_ID> is optional for all commands.
The interface numbers can be seen by the route print command (at the very top of the output):
The interface numbers stay in the first column – before the MAC addresses.
In addition to the -p option, the route command has a few more options, consider them.
Manipulates network routing tables. ROUTE [-f] [-p] [-4|-6] command [destination] [MASK netmask] [gateway] [METRIC metric] [IF interface] -f Clears the routing tables of all gateway entries. If this is used in conjunction with one of the commands, the tables are cleared prior to running the command. -p When used with the ADD command, makes a route persistent across boots of the system. By default, routes are not preserved when the system is restarted. Ignored for all other commands, which always affect the appropriate persistent routes. -4 Force using IPv4. -6 Force using IPv6. command One of these: PRINT Prints a route ADD Adds a route DELETE Deletes a route CHANGE Modifies an existing route destination Specifies the host. MASK Specifies that the next parameter is the 'netmask' value. netmask Specifies a subnet mask value for this route entry. If not specified, it defaults to 255.255.255.255. gateway Specifies gateway. interface the interface number for the specified route. METRIC specifies the metric, ie. cost for the destination. All symbolic names used for destination are looked up in the network database file NETWORKS. The symbolic names for gateway are looked up in the host name database file HOSTS. If the command is PRINT or DELETE. Destination or gateway can be a wildcard, (wildcard is specified as a star '*'), or the gateway argument may be omitted. If Dest contains a * or ?, it is treated as a shell pattern, and only matching destination routes are printed. The '*' matches any string, and '?' matches any one char. Examples: 157.*.1, 157.*, 127.*, *224*. Pattern match is only allowed in PRINT command. Diagnostic Notes: Invalid MASK generates an error, that is when (DEST & MASK) != DEST. Example> route ADD 18.104.22.168 MASK 22.214.171.124 126.96.36.199 IF 1 The route addition failed: The specified mask parameter is invalid. (Destination & Mask) != Destination. Examples: > route PRINT > route PRINT -4 > route PRINT -6 > route PRINT 157* .... Only prints those matching 157* > route ADD 188.8.131.52 MASK 255.0.0.0 184.108.40.206 METRIC 3 IF 2 destination^ ^mask ^gateway metric^ ^ Interface^ If IF is not given, it tries to find the best interface for a given gateway. > route ADD 3ffe::/32 3ffe::1 > route CHANGE 220.127.116.11 MASK 255.0.0.0 18.104.22.168 METRIC 2 IF 2 CHANGE is used to modify gateway and/or metric only. > route DELETE 22.214.171.124 > route DELETE 3ffe::/32
- Setting up network routes: the choice of connection used for the Internet; simultaneous use of multiple connections for different purposes (99.2%)
- How to install web server on Windows 10 (Apache 2.4, PHP 7, MySQL 8.0 and phpMyAdmin) (50.9%)
- How to install WordPress on Windows (50.9%)
- How to install NetBeans 9 for JDK 9 development (50.9%)
- How to Install Total Commander Counterpart in Kali Linux (50.9%)
- How to change Linux boot parameters in UEFI (RANDOM - 50%)