![Warum verhalten sich „ip“ und „ifconfig“ unterschiedlich, wenn die Schnittstelle ausgefallen ist?](https://rvso.com/image/1604293/Warum%20verhalten%20sich%20%E2%80%9Eip%E2%80%9C%20und%20%E2%80%9Eifconfig%E2%80%9C%20unterschiedlich%2C%20wenn%20die%20Schnittstelle%20ausgefallen%20ist%3F.png)
Ich schalte zuerst die Schnittstellen ab
# Shutdown the interfaces
ip link set enp2s0f0 down
ip link set enp2s0f1 down
Verwendung von ifconfig
:
# Set subnets to interfaces
ifconfig enp2s0f0 10.0.0.1/24
ifconfig enp2s0f1 10.0.1.1/24
# Add two routes
ip route add 10.11.1.1 dev enp2s0f0
ip route add 10.11.0.1 dev enp2s0f1
# Result => NO PROBLEM, my routes are here even tho the interfaces are down
$ip route
10.0.0.0/24 dev enp2s0f0 proto kernel scope link src 10.0.0.1
10.0.1.0/24 dev enp2s0f1 proto kernel scope link src 10.0.1.1
10.11.0.1 dev enp2s0f1 scope link
10.11.1.1 dev enp2s0f0 scope link
Verwendung von ip
:
# Set subnets to interfaces
ip addr add 10.0.0.1/24 dev enp2s0f0
ip addr add 10.0.1.1/24 dev enp2s0f1
$ip route
#NOTHING => Where are the routes?!
# Add two routes
ip route add 10.11.1.1 dev enp2s0f0
ip route add 10.11.0.1 dev enp2s0f1
$ip route
#NOTHING => Where are my routes?!
ip link set enp2s0f0 up
ip link set enp2s0f1 up
# Result => WOW only two routes appeared miraculously
$ip route
10.0.0.0/24 dev enp2s0f0 proto kernel scope link src 10.0.0.1
10.0.1.0/24 dev enp2s0f1 proto kernel scope link src 10.0.1.1
# => Where are my 10.11.*.* routes?
- Warum werden
ip route
meine Routen nicht angezeigt? - Wo werden meine Routen auf wundersame Weise hinzugefügt, nachdem ich meine Schnittstellen aufgerufen habe? Warum kann ich sie vorher nicht sehen?
- Warum werden meine Routen nicht angezeigt, nachdem ich die Schnittstellen aufgerufen habe?
Ich möchte alle Routen einrichten, bevor ich die Schnittstellen hochfahre. Ich habe kein Problem damit ifconfig
. Ich bin gespannt, welche Überraschungen als Nächstes auf mich zukommen.
Ich dachte , ifconfig
es ip
wäre kompatibel, aber der Umzug von ifconfig nach ip wird nicht so einfach sein.
Antwort1
Alle drei Ihrer Fragen beruhen auf einem Missverständnis:
ifconfig
mit einer Schnittstelle und einer Adresse impliziert die up
Option, in Ihrem ifconfig
Beispiel wird die Schnittstelle also zum selben Zeitpunkt aktiviert, an dem Sie eine Adresse dafür angeben.
Das heisst
ifconfig enp2s0f0 10.0.0.1/24
ifconfig enp2s0f1 10.0.1.1/24
ist eigentlich die Abkürzung für
ifconfig enp2s0f0 10.0.0.1/24 up
ifconfig enp2s0f1 10.0.1.1/24 up
ip
ausiproute2organisiert die Handlungen von:
- bringen eineSchnittstelleauf- und abbauen (
ip link
), - Zuweisen einer IPAdressean ein Netzwerkgerät (
ip address
) und - Konfigurieren des KernelsRoutenplanungTabellen (
ip route
).
ifconfig
vermischt diese unterschiedlichen Konzepte, was vermutlich noch verwirrender oder weniger intuitiv ist.
Wenn Sie den Status von Routen, Netzwerkgeräten, Schnittstellen und Tunneln bequem verwalten möchten, sollten Sie die Verwendung eines Tools zur Netzwerkkonfigurationsverwaltung in Betracht ziehen. Damit können Sie Ihr Netzwerk in einer praktischen deklarativen Syntax definieren und es mit einem Befehl schnell hoch- oder herunterfahren.
Dies sind einige der Tools, die in gängigen Linux-Distributionen enthalten sind:
- Debian –wennauf(
/etc/network/interfaces
,/etc/network/interfaces.d/
) - Ubuntu –netplan.io(
/etc/netplan/
) - Red Hat Enterprise Linux / CentOS –ifcfg(
/etc/sysconfig/network-scripts/
) - normalerweise Distributionen mit Desktop-Umgebungen –Netzwerk Manager(
/etc/NetworkManager/
)
Der Vollständigkeit halber hier die Antworten auf Ihre Fragen:
- Warum werden
ip route
meine Routen nicht angezeigt?
Routen werden nicht in der Haupttabelle gespeichert, wenn die entsprechende Verbindung unterbrochen ist. Ihre ip
Befehlssequenz ruft die beteiligten Schnittstellen nicht zuerst auf.
- Wo werden meine Routen auf wundersame Weise hinzugefügt, nachdem ich meine Schnittstellen aufgerufen habe? Warum kann ich sie vorher nicht sehen?
Die Routen eines Gerätes werden nicht in der Routing-Tabelle eingetragen, wenn die Schnittstelle ausgefallen ist.
- Warum werden meine Routen nicht angezeigt, nachdem ich die Schnittstellen aufgerufen habe?
Die Routen wurden nicht hinzugefügt, da die entsprechenden Schnittstellen zuerst aktiv sein mussten. Sie sollten eine Fehlermeldung wie RTNETLINK answers: Network is down
oder gesehen haben Error: Device for nexthop is not up.
, wenn versucht wurde, Ihre Route über eine inaktive Schnittstelle hinzuzufügen. Der Rückgabecode ( $?
) sollte auch ungleich Null gewesen sein.
Ich möchte alle Routen einrichten, bevor ich die Schnittstellen hochfahre.
Soweit ich weiß, ist dies nicht möglich, auch nicht mit ifconfig
. Denken Sie daran, dass Ihre ifconfig
Befehle tatsächlich die Schnittstellen aufrufen, bevor Sie die Routen hinzufügen.
Ich bin gespannt, welche Überraschungen als nächstes kommen.
Hoffentlich keiner. ip
Die Trennung der Belange macht viel Sinn, wenn Sielerne es kennen.
Ich dachte
ifconfig
undip
waren kompatibel
Die beiden Befehle überschneiden sich teilweise, sind jedoch nicht austauschbar.