Is order of network routes important in Linux?

On one of my web server the loopback route is in 2nd position and usually it is in 3rd position on other server when displaying the routes:

>ip route show

Results on what is displayed on one centos 7 server:

default via 85.x.x.254 dev enp32s0 
85.x.x.192/26 dev enp32s0  proto kernel  scope link  src 85.x.x.201 
169.254.0.0/16 dev enp32s0  scope link  metric 1002 

Result for another centos 7 server:

default via 217.x.x.1 dev em1 
169.254.0.0/16 dev em1  scope link  metric 1002 
217.x.x.0/24 dev em1  proto kernel  scope link  src 217.x.x.216 

Does it make any differences? Does it have any consequences? Can anyone explain why it happens?


The order in which routes are entered is, by definition, unimportant. This is due to how routes are supposed to be applied: the more specific ones have precedence over the more generic ones.

Suppose you have two routes:

  • a first one for a 172.16.0.0/16 network, via gateway 192.168.1.1
  • a second one for a 172.16.32.0/24 network, via gateway 192.168.1.2

When sending a packet to the machine with, say, 172.16.32.1 IP address, the selected gateway will be always 192.168.1.2, independently from how the order the routes where entered in the system.

There is a catch, however: what about two routes for the very same network, but with different gateway? For example, consider this setup:

  • a first route for a 172.16.32.0/24 network, via gateway 192.168.1.1
  • a second route for a 172.16.32.0/24 network, via gateway 192.168.1.2

How would the system work? If you want a route to have preference over another otherwise identical route, you had to assign them a metric value. The metric is considered as a "cost" value, with lower metric preferred. So if your system has two otherwise identical routes but with different metric, it selects the route with a lower metric value.

But what happens if the two routes are identical even in the metric value? In this (corner) case, the default behavior is undefined and varies from system to system. For example, a system could prefer the fist entered route, while another system can give preference to the last entered one. Other systems can use both routes at the same time, distributing packets in a near round-robin fashion called ECMP (equal cost multipath routing). Finally, other systems can forbid the presence of two really identical routes, denying the possibily to even enter such routes.