Skip to content
Adding a static route to your Windows routing table is pretty easy.
Just use an elevated command prompt (Run as administrator-where needed) and type the following example:
route -p add 10.11.12.13 255.255.255.255 10.11.12.14 metric 3 if 2
The “-p” argument is important if you want your route to be here when you reboot (persistent). You should be familiar with arguments “metric” and “if” if you are using this commands. A good starting point is HELP for this command. Type “route add –help”.
To check your result type “route print” and it should be under “Persistent routes” section.
To remove or to delete an entry, type this: “route -p delete 10.11.12.13”
The “p” argument is also important as it concerns the Persistent Routes table, otherwise it would concern the first Active route table.
Another trick to check and edit your persistent routes is through the system registry.
In your regeditor follow this path:
HKEY_LOCAL_MACHINE->SYSTEM->CurrentControlSet->
->Services->Tcpip->Parameters->PersistentRoutes
After any change that includes your network connection check that its settings are not changed (i.e. gateway).
When you are editing your routes just be sure they are not on a remote machine because you could get easily cut off:)
Static routes are used to define specific paths for network traffic to follow, rather than relying on the default routing behavior determined by the routing table. In some cases, you may need to add persistent static routes to ensure that network traffic between specific subnets or hosts is always directed through a particular gateway.
In this short guide, we will show you how to add persistent static routes in Windows.
Step 1: Open Command Prompt as Administrator
To add a persistent static route, you will need to run the Command Prompt as an administrator. Click the Start button, search for “cmd” or “Command Prompt”, right-click on the Command Prompt result, and select “Run as administrator”.
Step 2: Determine the Interface Index
Before adding the static route, you need to determine the interface index of the network adapter through which the traffic should be routed. In the Command Prompt, run the following command:
netsh interface ipv4 show interface
This command will display a list of network interfaces on your system, along with their interface index numbers. Note the index number of the interface you want to use for the static route.
Step 3: Add the Persistent Static Route
To add the persistent static route, use the route command with the following syntax:
route -p ADD <destination> MASK <subnet_mask> <gateway> METRIC <metric> IF <interface_index>
Replace <destination> with the target network or IP address, <subnet_mask> with the appropriate subnet mask for the destination, <gateway> with the IP address of the gateway through which the traffic should be routed, <metric> with a numerical value representing the route’s priority (lower values have higher priority), and <interface_index> with the interface index you noted in Step 2.
For example, to add a persistent static route for the 192.168.2.0/24 subnet through the gateway 192.168.2.1, with a metric of 1 and an interface index of 3, run:
route -p ADD 192.168.2.0 MASK 255.255.255.0 192.168.2.1 METRIC 1
The -p flag ensures that the route will persist across system reboots.
Step 4: Verify the Static Route
To verify that the static route has been added successfully, run the following command:
route print
This command will display the routing table, including the static route you just added. Check the “Persistent Routes” section to ensure that your new route is listed.
D:\>route print =========================================================================== Interface List 0x1 ........................... MS TCP Loopback interface 0x2 ...01 56 57 d1 00 08 ...... VMware Virtual Ethernet Adapter for VMnet8 0x3 ...01 56 57 d1 00 01 ...... VMware Virtual Ethernet Adapter for VMnet1 0x4 ...10 22 49 h0 b7 a7 ...... Broadcom NetLink (TM) Fast Ethernet - Packet Sch eduler Miniport 0x5 ...01 32 5e 3b gb 77 ...... Dell Wireless 1395 WLAN Mini-Card - Packet Sched uler Miniport 0x10007 ...00 1h e1 de 27 gh ...... Bluetooth LAN Access Server Driver - Packet Scheduler Miniport =========================================================================== =========================================================================== Active Routes: Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 192.168.2.1 192.168.2.2 25 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1 192.168.2.0 255.255.255.0 192.168.2.2 192.168.2.2 25 192.168.2.0 255.255.255.0 192.168.2.1 192.168.2.2 1 192.168.2.2 255.255.255.255 127.0.0.1 127.0.0.1 25 192.168.2.255 255.255.255.255 192.168.2.2 192.168.2.2 25 192.168.26.0 255.255.255.0 192.168.26.1 192.168.26.1 20 192.168.26.1 255.255.255.255 127.0.0.1 127.0.0.1 20 192.168.26.255 255.255.255.255 192.168.26.1 192.168.26.1 20 192.168.201.0 255.255.255.0 192.168.201.1 192.168.201.1 20 192.168.201.1 255.255.255.255 127.0.0.1 127.0.0.1 20 192.168.201.255 255.255.255.255 192.168.201.1 192.168.201.1 20 224.0.0.0 240.0.0.0 192.168.2.2 192.168.2.2 25 224.0.0.0 240.0.0.0 192.168.26.1 192.168.26.1 20 224.0.0.0 240.0.0.0 192.168.201.1 192.168.201.1 20 255.255.255.255 255.255.255.255 192.168.2.2 192.168.2.2 1 255.255.255.255 255.255.255.255 192.168.26.1 192.168.26.1 1 255.255.255.255 255.255.255.255 192.168.201.1 192.168.201.1 1 255.255.255.255 255.255.255.255 192.168.201.1 10007 1 255.255.255.255 255.255.255.255 192.168.201.1 4 1 Default Gateway: 192.168.2.1 =========================================================================== Persistent Routes: Network Address Netmask Gateway Address Metric 192.168.2.0 255.255.255.0 192.168.2.1 1
Commands and Their Functions:
- netsh interface ipv4 show interface – Shows a list of network interfaces along with their interface index numbers.
- route -p ADD – Adds a persistent static route to the routing table.
- route print – Displays the current routing table, including static routes.
Conclusion
By adding static routes, you can ensure that network traffic between specific subnets or hosts is always directed through a particular gateway, improving the reliability and predictability of your network connections.
Please feel free to leave comments and suggest improvements to this guide. Your feedback is valuable and helps us improve our content for our audience.
Have you ever connected to a VPN and realize that you cannot access some of the network resources that you have at home? Maybe you are not able to access Printer in your local network, or something else.
And other situation is you have a windows machine that is connected to two different networks and you Are not able to access some of the network resources and some of them are working fine.
Then you have a problem with your network routing, in this blog I am going to cover how you can solve those above issues by Reconfiguring the windows routing table.
What is routing?
If you are not familiar with routing then don’t worry, routing is a mechanism to connect two different network Segments to each other.
Suppose you have a network 192.168.1.0/24 and another 10.1.1.0/24. By default, both of those networks cannot talk to each other because both are two different subnets. For both the network to talk to each other, you need to use static routing.
There is something called dynamic routing, which is used by the network devices such as routers, firewall and layer3 switch and even some of the windows server machine.
In this blog, we are focusing on the end host level especially windows static routes.
What is static routing in windows?
A static route is a specific subnet route that is defined by the admins manually to reach a certain destination. You can specify the destination subnet that you want to reach from the host and point to a default gateway. You can add as many static routes as you like.
You can define for example, to reach 192.168.1.0/24 you can go via 10.1.1.1
The static route is usually not needed when you host has only a single interface, the default route will take care of that.
Read also,
Windows 11 on KVM – How to Install Step by Step?
How To Extend Windows Storage in KVM ?
KVM Windows No Sound? – Let’s fix it.
10 Easy Steps To Install Windows Server in Linux KVM
How To Set Static IP On Ubuntu? (GUI and CLI)
What is default route in windows?
If you don’t know the subnet that you want to reach, that’s when you use something called default routes. The default route is mainly configured to reach the internet.
We don’t know the IP addresses that are available on the internet, right?
That means you cannot specify the routes in the routing table, and on the internet, there are millions of IP addresses, and how do I reach those IP address from your local machine?
You can type 0.0.0.0 as the IP subnet and 0.0.0.0 as the mask and point the route to the default gateway. This basically tells the windows host that to reach any subnet apart from the specific subnet you use the default route.
Usually the default route is added to a window hosts or any end hosts for that matter is by configuring the default gateway. If you define a default gateway on the system, that would add a default route pointing to the default gateway.
However, In some situations, it can create a problem, because you may have multiple LAN ports and all are configured with DHCP, as soon as the host receive the IP address via DHCP on all ports, it also add default gateways for all those interfaces. The result is multiple default routes towards multiple gateways. This would create a problem when the end hosts wanted to reach the internet.
how to view the routing table in windows?
Like any network devices, the windows machine also has a local routing table. It can tell you lot of information about the routes that this windows box is aware of.
To view the windows routing table, you can enter the command route print in windows command line prompt. However, that you would display both the IPv4 and IPv6 routing table, and you can also get the route output specific to the IP version.
how do I see ipv4 routes in windows?
If you wanted to see just the IPv4 routes in windows you can type the command route print -4.
how do I see ipv6 routes in windows?
Just like the IPv4 you can also see the IPv6 routes alone in the windows routing table by typing route print -6.
How do you read a Windows routing table?
It’s quite common for anyone to look at the windows routing table and get confused with the information displayed. Let’s go through and explain each one of the items in the windows routing table.
- Interface ID – each interface that you have on your machine will be identified with a unique ID.
- The mac address of the machine – this is the physical address of your network interface card. You can also get the mac address detail by typing ipconfig /all.
- The name of the interface.
- IPv4 routing table – Here you can view the IPv4 routing table.
- Network destination – It shows the destination subnet that this machine can reach currently.
- Netmask – the subnet mask of the network destination IP.
- Gateway – you can see the remote gateway as well as on-link where you are learning this route from.
On-link means, the directly connected routes from its own NIC. - Interface is the place you can see the IP address of each network interface.
- The IP address 127.0.0.1 is the machine’s loopback interface.
- Metric – It is the value that defines the priority of the route, the lower the metric the better.
- Persistent route – This route is defined by the admins and it would never be removed even when you power down the system, read on to learn more about it.
- IPv6 routing table – You can view the IPv6 routing table here.
- IPv6 persistent routes – The same persistent routes available in the Ipv4.
How do I manage multiple gateway in windows?
When you have two interfaces installed on the windows machine, you will have to manage the multiple gateways using static routes. Lets look at how we can configure multiple gateways using the static routes. below are the examples that we are going to configure.
- Validate the internet connectivity.
- Configure primary default gateway for windows 10.
- How to delete the route in windows?
- How to add two default routes in windows?
- How do I add a static route in Windows?
- How do I add a persistent route in Windows?
Validate the internet connectivity.
Before we begin, lets validate the internet connectivity on this host.
Open CMD with admin rights.
Click on the start menu, and type CMD. Right-click and Run as administrator. Click yes on the admin prompt.
Or
- Windows key + R
- Type CMD
- Press CTRL+Shift+Enter
Note: To see the routing table, you don’t need to access the CMD with Admin rights, normal access would do.
Lets try to ping the internet IP, which is 8.8.8.8.
Yes, I can reach the internet and let me check which path it is taking by using a command called tracert
As you can see, it is taking the path 192.168.0.1.
If you look closely at the routing table, you can notice, there are two default routes with same metric. One towards 192.168.0.1 (interface 1)and the other towards 10.1.1.1 (Interface 2) with equal metric.
In this setup, for the first time when you try to access the internet, It will send the packet out to both the interfaces. And it elects the default gateway that it needs to use.
Configure primary default gateway for windows 10.
Since we don’t have access to internet via the interface 2 (10.1.1.1), we shouldn’t be using the default route towards it. To resolve multiple default gateways on your network, you got two options.
Change the metric for the windows interface or Delete the default gateway pointed to the interface 2.
We know that the interface which we wanted to use for the internet is interface 1 (192.168.0.1) and when we look at the metric, we can see that both the interface 1 and 2 has the same metric 281.
In normal windows machine you should be able to see the metric starting from 25, and if you are using windows as a VM you can notice its metric is by default 281. However, when you try to change the metric, you will be able to see windows machine by default would take the metric as 25 though you cannot see them.
To make the interface 1 as the priority one for the internet, you need to lower the metric of it.
All you have to do is, add the metric value of 1 for the interface 1., and that would change the windows metric value to 26 (25+1)
1.Get the interface ID.
When you enter the command route print -4, that will show you the interface list on the top.
And for our interface 1, the ID is 21, and interface 2 is it 25.
To validate the interface you can type ipconfig /all and compare the mac address with the interface list ID’s.
2. Change the interface metric.
3. Validate the configuration.
Lets check the routing table now.
As you can see, the metric changed to 26 for our main interface. From now on, all the internet traffic will go out via the interface 1.
What if the interface 1 goes out?, then by default windows machine will start using the interface2
To simulate the issue, I just unplugged the interface 1 and as you can see, I no longer have the default route towards the interface1.
How to delete the route in windows?
The above scenario will be useful, if you have internet access on both links where the interface 1 has more bandwidth than interface 2.
Since we don’t have internet access at all on interfac2, there is no point in keeping the default route so let’s go ahead plug the interface1 back in and remove the default route connected to the interface2.
- To delete a route in the windows routing table, you can use the command route DELETE.
As we are going to delete the default route pointed to 10.1.1.1, you can use the command below.
route DELETE 0.0.0.0 MASK 0.0.0.0 10.1.1.1
2. Verify the routing table.
We no longer have the default route pointed to 10.1.1.1 gateway.
How to add two default routes in windows?
In our previous scenario where everything was looking good, however when the internet on the interface 1 goes down there is no redundancy in place. So, you decided to add internet over secondary interface.
One of the use cases being, you have internet on interface 1 that has more bandwidth and internet 2 with less bandwidth, in the event of internet 1 goes down, the internet 2 on interface 2 should kick in.
In the routing table, we already have a default route in which we set the metric to 26 previously.
Let’s go ahead and add the second default route with more metric, that way the second default route will be less preferred over the primary link. And when the primary link goes down the secondary one will take care of the internet traffic.
To add the default route you can add the below commands.
route ADD 0.0.0.0 MASK 0.0.0.0 10.1.1.1 -p METRIC 50 -p
The reason I added the metric 50 because, if you add another default route without a metric it would just pick up the default metric that is already used by the other default route.
The newly added route now has the metric of 75 now.
When you have connected to wifi and wired at the same time on your windows 10 PC, you will have two default route with different metric and if you are thinking about prioritising the wifi network over wired, then you check out the article here to know how.
How do I add a static route in Windows?
Alright the internet part has been taken care with default route, now lets talk about the specific static routes towards the server from 1 to 6.
In the servers list, to reach server 1-3 you must go via the interface 2 and the server 3-7 should reach via interface 1.
Lets start with the server1, 10.2.2.10 by pinging.
As you can see, we are not able to reach the IP, lets look into the IP table, and I don’t see any IP inside the routing table which is not good.
Currently what’s happening is that, since we do not have a specific route towards 10.2.2.0 it is taking the default route with lower metric on the interface1.
As you can see from the traceroute below.
We need to point the 10.2.2.0 towards interface 2.
In CMD add the route as below.
route add 10.2.2.0 mask 255.255.255.0 10.1.1.1
Verify the route table again.
Ping the IP address, as you can see, we are able to reach the iP address via interface 2 now.
How do I add a persistent route in Windows?
We just added a static route in windows and it is working as expected, however what happens if you reboot the machine?
When you reboot the machine, whatever the changes that you made for the routing will be removed. For those routes that are temperoroly it should be fine, but not good for the permanent destination.
To avoid that you can use persistent route in windows. That way the changes that you make on the windows routing table are retained even after you reboot the machine. To add a persistent route, you just have to add -p at the end of the route statement.
route add 10.2.2.0 mask 255.255.255.0 10.1.1.1 -p
From now on all the routes that we are going to add using the persistent command only.
You should be able to see the persistent route on the bottom of the routing table.
Lets add rest of the other IP addresses, before we add the routes, lets verify the reachability.
No, both destinations are not reachable now, so lets go ahead and add the routes.
route add 192.168.6.10 mask 255.255.255.0 10.1.1.1 -p
route add 172.16.2.10 mask 255.255.255.0 10.1.1.1 -p
The servers over the interface2 can be reached now, you may test the connectivity using the ping again and it should work just fine.
You can also verify the added routes in the windows routing table.
Can we reach the servers 4-6 in interface1 now? As you know we don’t have specific routes for it. If you said the answer is Yes, then you are right!.
let’s send ping to server 4,5 and 6.
As you can see, I am able to reach all three servers just fine, how come we are able to reach those servers even though we don’t have a specific static route for the same.
Its because, it is using the same default route on the interface1, so the PC would send the route to the default gateway, and because the gateway knows about the connected route 10.0.0.0/24, 198.168.3.0/24 and 172.0.0.0/24 the windows PC can reach all the servers on the interface1.
This is working great, right?
Yes but no, let me explain.
It is working fine now, but what if you decided to remove the default route on the interface 1, then it will be a problem. Those servers 4-6 going via interface 1 over the default route cannot get to the remote anymore.
It is recommended to add specific static routes that we added for the interface 2 and it should take care of everything. So even if you decide to remove the internet on the interface 1, you can peacefully remove the default route and specific routes will take care of the server reachability.
To add the rest of the servers subnet into the routing, you may add the route statement as below.
route add 10.0.0.0 mask 255.255.255.0 192.168.0.1 -p
route add 172.0.0.0 mask 255.255.255.0 192.168.0.1 -p
route add 192.168.3.0 mask 255.255.255.0 192.168.0.1 -p
Validate the routes.
Adding a static route in Microsoft Windows 10 or Server is done by using the route add
command.
The following is the general syntax of the route add
command we need to follow to add a permanent static route in Windows:
route add -p <destination> mask <subnet-mask> <gateway>
For example, the following route command tells the windows to add a new persistent route to the 192.168.1.0/24
network, using 10.0.0.1
as the gateway to reach the network.
route add -p 192.168.1.0 mask 255.255.255.0 10.0.0.1
When you want to add a static route to a single host, use the netmask 255.255.255.255
.
For example, the following command adds a static route to the destination host 192.168.1.100
with the gateway address 10.0.0.1
.
route add -p 192.168.1.100 mask 255.255.255.255 10.0.0.1
The most important part of the route add command is the -p
option. Without the -p
switch, our new route would not be persistent. It will disappear the next time you reboot your Windows PC/Server.
We can print the windows routing table using the route print
command. Under the Persistent Routes header, you will see the list of permanent static routes.
Following is another static route example with a metric value:
route add -p 192.168.1.0 mask 255.255.255.0 10.0.0.1 metric 5
In case if you have more than one network interface, you could also specify the interface ID using the if
command option.
route add -p 192.168.1.0 mask 255.255.255.0 10.0.0.1 if 1
When specifying the network interface, you have to provide the interface ID which you can find using the route print command.
Windows hold permanent static routes in the following registry
location: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servi
.
ces\Tcpip\Parameters\PersistentRoutes
As with the Unix,Linux and Solaris operating Systems, the route command can be used to add static routes in Windows. This should work on Windows 2000,XP,2003.
To view the existing routes,
C:\> route print
To add a static route,
Syntax:
C:\> route add <target> mask <netmask> <gateway IP> metric <metric cost> if <interface>
Example:
C:\> route add 10.10.10.0 mask 255.255.255.0 192.168.1.1 metric 1
Note: If there is more than one Network Interface and if the interface is not mentioned, the interface is selected based on the gateway IP.
This Static route gets erased when the system reboots. To avoid this, use the -p (Persistent) switch to the above command:
C:\> route -p add 10.10.10.0 mask 255.255.255.0 192.168.1.1 metric 1
This writes the persistent route to the following Windows Registry key as a string value (REG_SZ):
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes
Also, you can write a small batch file with the route commands and add it to the startup folder to add the routes at startup (similar to the startup scripts in Solaris)
For more options like flushing the IP Routing table or to delete, modify IP Routing table entry use the route command with no arguements. This displays the various options for the route command.
C:\> route
This should help.
If you’re new here, you may want to subscribe to my RSS feed. Thanks for visiting!
2007-11-09