如何永久更改网络路由指标

mar*_*hon 11 networking ubuntu routing network-interface

我可以改变我的网络路由的指标ifmetric,例如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
Run Code Online (Sandbox Code Playgroud)

但是,当我重新启动时,enp0s3 的指标恢复为 101。如何使此更改永久化或在启动时自动设置?

小智 22

如果您使用的是 NetworkManager,则更改默认路由的度量的正确方法是以这种方式修改与接口 enp0s3 关联的连接:

nmcli connection modify <connection-name> ipv4.route-metric 1
Run Code Online (Sandbox Code Playgroud)

然后重新激活连接:

nmcli connection up <connection-name>
Run Code Online (Sandbox Code Playgroud)

您可以<connection-name>在 的输出中找到 的值nmcli connection

  • 这是永久性的,恕我直言,回答这个问题。请注意,此解决方案附加到连接,而不是接口。如果碰巧在同一个接口(机器的wifi或以太网)上使用多个连接(典型情况:漫游设备连接到不同地方),则必须对需要度量调整的每个连接进行操作。这可能是也可能不是您想要的。我觉得这很好,因为你可以说“这个特定的 Wifi 按字节花费我的钱,所以放一个更高的指标”,“这个以太网连接是高性能的,优先使用它”。 (2认同)

Mar*_*iae 11

在 Debian 和衍生产品中,正确的做法是在/etc/NetworkManager/dispatcher.d 中写一个文件(随便你怎么称呼它),内容如下:

#!/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
Run Code Online (Sandbox Code Playgroud)

这样,您的自定义不会在每次更新时被覆盖。为了检查这一点,停止网络管理器,杀死dhclient 刷新接口的 IP 地址,然后重新启动网络管理器。

您可以在此处找到文档。

编辑

根据 FvD 要求:

systemctl stop network-manager
pkill dhclient
ip addr flush dev eth0   
systemctl start network-manager
Run Code Online (Sandbox Code Playgroud)

如果有问题的接口是eth0,否则相应更改。

  • @FvD:完成,请阅读我的编辑。 (2认同)

Jit*_*ran 5

最简单且正确的方法是编辑/etc/network/interfaces.
(如果该文件不存在,您可以创建它。)

这是一个简单的例子/etc/network/interfaces

auto lo eth0
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet dhcp
    metric 700
Run Code Online (Sandbox Code Playgroud)

重新启动网络以service networking restart使更改生效。

参考:第 5.7.2节Debian手册ifmetric包

以下将 eth0 接口设置为优先于 wlan0 接口。

安装 ifmetric 包。

在“/etc/network/interfaces”中的“iface eth0 inet dhcp”行下方添加一个带有“metric 0”的选项行。

在“/etc/network/interfaces”中的“iface wlan0 inet dhcp”行下方添加一个带有“metric 1”的选项行。

额外说明:

  • auto <interface1> <interface2>在系统启动时启动接口。
  • allow-hotplug <interface>在热插拔事件上启动界面。


小智 5

对于Ubuntu

ip route replace default via 192.168.1.1 metric 1
Run Code Online (Sandbox Code Playgroud)

对我来说,自从我输入它以来,它不需要任何更多的步骤,并且直到现在它仍然是 metic 1。

对于 Centos

正确的方法是将上述条目添加到“ /etc/sysconfig/network-scripts/route-eth(x) ”中,除了ip route replace so add onlydefault via 192.168.1.1 metric 1