Wie kann ich die Netzwerk-Routing-Metrik dauerhaft ändern?

8

Ich bin in der Lage ändert meine Netzwerk - Routing - Metriken mit ifmetric, zum Beispiel 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

Wenn ich jedoch neu starte, wird die Metrik für enp0s3 auf 101 zurückgesetzt. Wie kann ich diese Änderung dauerhaft machen oder sie beim Booten automatisch festlegen lassen?

Marathon-
quelle

Antworten:

6

Der richtige Weg, dies in Debian und Derivaten zu tun, besteht darin, eine Datei in /etc/NetworkManager/dispatcher.d (nennen Sie es wie Sie möchten ) mit folgendem Inhalt zu schreiben :

#!/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

Auf diese Weise wird Ihre Anpassung nicht bei jedem Update überschrieben. Um dies zu überprüfen, stoppen Sie den Netzwerkmanager, beenden Sie den dhclient und löschen Sie die IP-Adresse der Schnittstelle. Starten Sie dann den Netzwerkmanager neu.

Dokumentation finden Sie hier .

MariusMatutiae
quelle
Dies setzt voraus, dass wir Network Manager in Debian verwenden, was immer noch nicht unbedingt der Fall ist (wie in meinem Fall zum Beispiel; ich habe es gelöscht, um eine Systemd-as-Init-Abhängigkeit zu vermeiden, die zufällig Startfehler verursachte). Davon abgesehen ist dies immer noch eine gute Antwort für die meisten (aber definitiv nicht alle) Debian-Benutzer. Es funktioniert gut auf meinem anderen System, das noch Network Manager verwendet.
Wyatt8740
11

Wenn Sie NetworkManager verwenden, können Sie die Metrik für die Standardroute ordnungsgemäß ändern, indem Sie die mit der Schnittstelle enp0s3 verknüpfte Verbindung folgendermaßen ändern:

nmcli connection modify <connection-name> ipv4.route-metric 1

und aktivieren Sie die Verbindung erneut:

nmcli connection up <connection-name>

Den Wert für finden Sie <connection-name>in der Ausgabe von nmcli connection.

Bengalen
quelle
Dies beantwortet die Frage nicht wirklich, da dies beim Start nicht automatisch geschieht.
MariusMatutiae
Dies ist dauerhaft und IMHO beantworten die Frage. Beachten Sie jedoch, dass diese Lösung an eine Verbindung und nicht an eine Schnittstelle angeschlossen ist. Wenn Sie zufällig mehrere Verbindungen (typischer Fall: Roaming-Gerät, das eine Verbindung zu verschiedenen Orten herstellt) an derselben Schnittstelle (WLAN oder Ethernet des Geräts) verwenden, muss der Vorgang für jede der Verbindungen ausgeführt werden, für die eine metrische Anpassung erforderlich ist. Dies kann sein oder nicht, was Sie wollen. Ich finde das gut, weil man zB sagen kann: "Dieses spezielle Wifi kostet mich byteweise Geld, also setzen Sie eine höhere Metrik", "diese Ethernet-Verbindung ist leistungsstark, verwenden Sie sie vorrangig".
Stéphane Gourichon
1

Sie sollten in der Lage sein, es dauerhaft zu machen, /etc/dhcpd.confwo Sie eine Schnittstellenmetrik wie diese festlegen können.

interface enp0s3;
metric 1;
Pythonic
quelle
Ähm, das glaube ich nicht. Was ist das Betriebssystem? Versuchen Sie auch zu sehen, ob dies existiert/etc/conf.d/dhcpcd
Pythonic
Ich habe versucht, diese Datei mit Ihren Einstellungen zu erstellen - es hat nicht funktioniert. Ubuntu 16.10. Trotzdem danke.
Marathon
hat auch bei mir nicht funktioniert
Guerlando OCs
1

Der einfachste und richtige Weg, dies zu tun, ist das Bearbeiten /etc/network/interfaces.

Hier ist ein einfaches Beispiel für /etc/network/interfaces:

auto lo eth0
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet dhcp
    metric 700

Starten Sie das Netzwerk neu, indem Sie service networking restartdie Änderungen vornehmen.

Ref: Abschnitt 5.7.2. Das ifmetrische Paket von Debian Manual

Im Folgenden wird festgelegt, dass die eth0-Schnittstelle der wlan0-Schnittstelle vorgezogen wird.

Installieren Sie das ifmetric-Paket.

Fügen Sie eine Optionszeile mit "Metrik 0" direkt unter der Zeile "iface eth0 inet dhcp" in "/ etc / network / interfaces" hinzu.

Fügen Sie eine Optionszeile mit "Metrik 1" direkt unter der Zeile "iface wlan0 inet dhcp" in "/ etc / network / interfaces" hinzu.

Zusätzlicher Hinweis:

  • auto <interface1> <interface2> Startet die Schnittstellen beim Start des Systems.
  • allow-hotplug <interface> Startet die Schnittstelle beim Hotplug-Ereignis.
Jithin Pavithran
quelle