Antwort1
linkdown
ist der Status, der für eine Route angezeigt wird, die in der Tabelle enthalten ist und so konfiguriert ist, dass sie über eine Schnittstelle in diesem Status hinausgeht DOWN
. Sie können dies sehen, indem Sie Folgendes ausführen:
ip a
und suche nach dem Status der Schnittstellen. Auf meinem Laptop habe ich WLAN eingeschaltet und den Ethernet-Adapter ausgesteckt, daher wird Folgendes angezeigt:
wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
enp0s25: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
In meiner Routing-Tabelle habe ich eine Reihe von Routen, aber ich kann ein paar unbrauchbare hinzufügen:
sudo ip route add 192.168.123.0/24 dev enp0s25
sudo ip route add 192.168.124.0/24 dev wlp3s0
Dann wird in meiner Tabelle linkdown
für die Ethernet-Route Folgendes angezeigt:
192.168.123.0/24 dev enp0s25 scope link linkdown
192.168.124.0/24 dev wlp3s0 scope link
onlink
bedeutet, dass das Routing „so tun soll, als sei der nächste Hop direkt mit diesem Link verbunden, auch wenn er keinem Schnittstellenpräfix entspricht“. Wir können also auch einen der in der Tabelle aufgeführten vortäuschen:
sudo ip route add 192.168.125.0/24 via 192.168.123.111 dev wlp3s0 onlink
Was nun in der Routing-Tabelle angezeigt wird:
192.168.123.0/24 dev enp0s25 scope link linkdown
192.168.124.0/24 dev wlp3s0 scope link
192.168.125.0/24 via 192.168.123.111 dev wlp3s0 onlink
Sie können es sogar noch raffinierter gestalten und beides haben, indem Sie einen Onlink zur Down-Schnittstelle verwenden:
192.168.126.0/24 via 192.168.123.111 dev enp0s25 onlink linkdown
Antwort2
linkdown
ist der Status, der für eine Route angezeigt wird, die sich in der Tabelle befindet und so konfiguriert ist, dass sie über eine Schnittstelle in diesem Status hinausgeht DOWN
.
Ich versuche, anhand eines Beispiels zu zeigen, was die onlink
Option wirklich bewirkt:
Sie haben eth0
(auf Ihrem Computer) eine IP-Adresse/Maske konfiguriert: 192.168.0.1/24
Sie möchten aus irgendeinem Grund ein Gateway im physischen LAN verwenden, dessen eth0
Konfiguration inkonsistent ist. Nehmen wir an, es hat die Adresse 10.0.10.1/24, die nicht mit der Konfiguration 192.168.0.1/24 übereinstimmt, die Sie Ihrem eigenen Computer zugewiesen haben.
Wenn du sagst:
ip route add default dev eth0 via 10.0.10.1
dann erhalten Sie eine Fehlermeldung (Netzwerk nicht erreichbar oder so etwas).
Warum? Weil es (streng genommen) keinen Sinn ergibt, eine Maschine mit der Nummer 10.0.10.1 im eth0
LAN zu haben, da Sie Ihrem Computer mitgeteilt haben, dass die Netzwerkadresse dieses LANs 192.168.0.0/24 lautet.
Aber jetzt kommt es: Wenn Sie onlink
dem Befehl Folgendes hinzufügen:
ip route add default dev eth0 via 10.0.10.1 onlink
dann wird die Route akzeptiert.
Kommen wir nun aber zu einer anderen Frage: Was macht der Kernel, wenn ein Paket an dieses onlink
Gateway geroutet werden muss?
Ich habe es (experimentell) überprüft und das ist das Ergebnis: Der Kernel sendet eine ARP-Anfrage im eth0
LAN mit der Frage „Wer hat 10.0.10.1?“, also das onlink
von Ihnen konfigurierte Gateway. Wenn er eine Antwort erhält, hat der Kernel eineMAC-Adressewohin es seine Pakete senden kann und wo das Routing durchgeführt wird.
Das bedeutet: Wenn die Adresse des Gateways nicht mit der LAN-Konfiguration auf Ihrem Computer übereinstimmt ( ), können Sie den Kernel durch Hinzufügen dieses Gateways zur Anweisung eth0
zwingen .onlink
Ich schätze, es gibt sehr seltene Situationen, in denen Sie diese Funktion verwenden müssen. Situationen, in denen Sie die Onlink-Option benötigen, sind meist auf ein schlechtes Netzwerkdesign zurückzuführen. Ich glaube nicht, dass das durchschnittliche Tunnel-Setup onlink
beides benötigt.
Antwort entnommen ausHIER