I’m able change my network routing metrics with ifmetric, for example ifmetric enp0s3 1.
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.1.1 0.0.0.0 UG 1 0 0 enp0s3 0.0.0.0 192.168.237.1 0.0.0.0 UG 100 0 0 enp0s8
When I reboot though, the metric for enp0s3 reverts to 101. How can I make this change permanent or have it set automatically at boot time?
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
If you are using NetworkManager, the proper way to change the metric for the default route is to modify the connection associated with interface enp0s3 in this way:
nmcli connection modify <connection-name> ipv4.route-metric 1
and then re-activate the connection:
nmcli connection up <connection-name>
You can find the value for <connection-name> in the output of nmcli connection.
Method 2
The correct way to do this, in Debian and derivatives, is to write a file in /etc/NetworkManager/dispatcher.d (call it whatever you like), with the following content:
#!/bin/sh
# Change the metric of the default route only on interface enp0s3
IF=$1
STATUS=$2
MY_METRIC=1
if [ "$IF" = "enp0s3" ]
then
case "$STATUS" in
up)
ip route del default dev $IF
ip route add default via $DHCP4_ROUTERS dev $IF metric $MY_METRIC
;;
*)
;;
esac
fi
This way, your customization will not be overwritten upon each update.
In order to check this, stop the Network Manager, kill the dhclient and flush the IP address of the interface, then restart network manager.
You can find documentation here.
EDIT:
as per FvD request:
systemctl stop network-manager pkill dhclient ip addr flush dev eth0 systemctl start network-manager
if the interface in question is eth0, otherwise change accordingly.
Method 3
The easiest and the right way to do this is by editing /etc/network/interfaces.
(If this file does not exist, you can create it.)
Here is a simple example of /etc/network/interfaces:
auto lo eth0
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet dhcp
metric 700
Restart networking using service networking restart for the changes to take place.
Ref: Section 5.7.2. The ifmetric package of Debian Manual
The following sets the eth0 interface to be preferred over the wlan0
interface.Install the ifmetric package.
Add an option line with “metric 0” just below the “iface eth0 inet
dhcp” line in “/etc/network/interfaces”.Add an option line with “metric 1” just below the “iface wlan0 inet
dhcp” line in “/etc/network/interfaces”.
Extra Note:
auto <interface1> <interface2>starts interfaces on start of the system.allow-hotplug <interface>starts the interface on hotplug event.
Method 4
For Ubuntu
ip route replace default via 192.168.1.1 metric 1
For me, it doesn’t require any more steps ever since I type that in and it is still metic 1 until now.
For Centos
The proper way is that you add the above entry to the “/etc/sysconfig/network-scripts/route-eth(x)” except for the ip route replace
so add only default via 192.168.1.1 metric 1
Method 5
You should be able to make it permanent in /etc/dhcpd.conf where you can set an interface metric like this.
interface enp0s3; metric 1;
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0