I am surprised no one has mentioned the simplest command to do this: ifmetric
. It can be installed using sudo apt-get install ifmetric
. This command can be used to change the metric of any interface. The interface with lower metric is preferred for Internet.
To use this, first see the metrics using route
command:
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.42.0.1 0.0.0.0 UG 100 0 0 eth0
0.0.0.0 10.42.0.2 0.0.0.0 UG 600 0 0 wlan0
Here, eth0
has lower metric, so it will be preferred over wlan0
. If you want to prefer wlan0
, then lower its metric:
sudo ifmetric wlan0 50
Now, the routing table would look like:
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.42.0.2 0.0.0.0 UG 50 0 0 wlan0
0.0.0.0 10.42.0.1 0.0.0.0 UG 100 0 0 eth0
Now Linux will be using wlan0
for Internet. The change will be reflected immediately.