Netzwerkschnittstellenpräferenz

8

Wie bestimmt Linux, welche Netzwerkschnittstelle verwendet werden soll, wenn beide mit demselben Netzwerk verbunden sind?

Beachten Sie, dass dies keine Frage zum Routing ist. Ich bin damit vertraut, wie das funktioniert. Dies ist beispielsweise der Fall, wenn ich meinen Laptop über meine Ethernet-Karte und meine WLAN-Karte mit meinem WLAN-Router verbunden habe oder wenn zwei Ethernet-Karten beide mit demselben Router verbunden sind.

Ich kann aus Erfahrung sagen, dass mein Laptop in meinem Fall die Ethernet-Karte (eth0) gegenüber der drahtlosen zu bevorzugen scheint (eth1 - ich weiß, dass dies kein typischer Name für eine drahtlose Schnittstelle ist, aber das habe ich), aber ich war es Fragen Sie sich, wie entscheidet das? Wenn nur die Schnittstelle mit der niedrigsten Nummer ausgewählt wird, was ist, wenn die beiden Optionen beispielsweise eth0 und wlan0 sind?

Bearbeiten: @Nils hat darauf hingewiesen, dass dies immer noch eine Frage des Routings ist, und die Routing-Tabelle liefert die Antwort (siehe seine Antwort). Dies lässt immer noch meine ursprüngliche Frage, aber in einer anderen Form. Was bestimmt die Reihenfolge der Einträge in der Routing-Tabelle unter Linux? Hier ist zum Beispiel meine Routing-Tabelle, während ich mit beiden Schnittstellen verbunden bin:

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.4.1     0.0.0.0         UG        0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
192.168.4.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.4.0     0.0.0.0         255.255.255.0   U         0 0          0 eth1

Es ist klar, dass eth0 in der Tabelle für Ziele im lokalen Netzwerk eine höhere Priorität als eth1 hat. Wird dies unter Linux jedoch anhand der Verbindungslatenz, des Verbindungsdurchsatzes, sogar des Schnittstellennamens oder was entschieden? (Dieselbe Frage könnte sich stellen, warum eth0 die Schnittstelle für die Standardroute ist.)

Dominick Pastore
quelle

Antworten:

6

Nun - das ist eine Routing-Frage.

Die Antwort ist einfach: Der erste Eintrag, der den besten Routing-Eintrag liefert, ist "der Gewinner". Schauen Sie sich also an netstat -rn, welche Schnittstelle zuerst verfügbar ist.

Update: Die Netzwerk-Inferface-Routing-Einstellungen werden normalerweise während des Systemstarts eingerichtet. Die Startreihenfolge der Netzwerkgeräte entspricht also der Reihenfolge in dieser Tabelle. Bei PCI-Geräten werden diese normalerweise zuerst mit der niedrigsten Steckplatznummer verarbeitet. Externe Geräte (z. B. USB) kommen normalerweise später.

Die genaue Reihenfolge hängt jedoch vom Netzwerk-Startup-Skript Ihrer Linux-Version ab (hier unterscheiden sie sich stark).

Übrigens: Wenn Sie Ihre beiden Links nutzen möchten, sollten Sie sich für eine Verbindung entscheiden . Dort können Sie die Verwendungsreihenfolge für Ihre Links festlegen.

Nils
quelle
1
Das macht Sinn. Als ich Routing sagte, war es nicht nur eine Frage der Auswahl, welche Schnittstelle (direkt oder indirekt) mit dem Zielnetzwerk verbunden ist, da dies beide sind. Ich hätte mit meiner Terminologie vorsichtiger sein sollen. Vielen Dank für die hilfreichen Tipps (insbesondere zum Kleben). Dies lässt meine ursprüngliche Frage jedoch immer noch in einer etwas anderen Form. Wie wird die Reihenfolge der Routing-Einträge unter Linux festgelegt (ich habe die ursprüngliche Frage bearbeitet)?
Dominick Pastore
@Dominick Ich habe meine Antwort entsprechend aktualisiert. Welche Distribution und welche Hauptversion verwenden Sie?
Nils
Ah. Ich wusste nicht, dass es zwischen den Distributionen so unterschiedlich sein kann. Ich habe überall nach Informationen dazu gesucht, aber alles, was ich gefunden habe, waren Artikel zum Festlegen von Routing-Einträgen, nicht wie die ursprünglichen bestimmt werden. Ich benutze Xubuntu 12.04. Dies wirft jedoch eine andere Frage auf (klein; ich fühle mich durch Ihre Antwort sehr aufgeklärt :-)). Wenn ich über WLAN (eth1) und später über Ethernet (eth0) verbunden bin, gehen die Standardroute und die obersten Einträge in der Routing-Tabelle auf eth0 zurück. Dies scheint Ihrer Antwort zu widersprechen. Bin ich falsch verstanden oder ist das eine NetworkManager-Eigenart oder was?
Dominick Pastore
@ Dominomin Ubuntu ist etwas ganz Besonderes. Beim Ein- und Ausstecken von Netzwerkgeräten werden im Hintergrund einige magische Dinge ausgeführt. Ich denke, es startet den gesamten Netzwerkstapel dort neu. (Ich benutze normalerweise SLES / RH und bin nicht zu tief in Ubuntu)
Nils
-3

Um Sie nicht zu beleidigen, aber wenn Sie mit dem Routing-Teil Ihres TCP / IP-Kommunikationsstapels auf einem Linux-Computer vertraut sind, sollten Sie auch wissen, dass die Ergebnisse der Verbindung zweier Netzwerkschnittstellen mit demselben Netzwerk bestenfalls unvorhersehbar sind. Wenn ich Sie wäre, würde ich entweder das WLAN auf meinem Laptop deaktivieren oder einen ifconfig eth0 downBefehl ausführen (vorausgesetzt, eth0 ist Ihre kabelgebundene Ethernet-Verbindung), um es auszuschalten. Linux verfügt möglicherweise über einige Informationen, um für jedes Paket die gleiche Auswahl zu treffen. Im Falle eines Netzwerk-Schluckaufs kann dies jedoch zu unerwarteten Ergebnissen führen. Meine 2 Cent.

MelBurslan
quelle
1
Es ist nicht unvorhersehbar. Der erste Treffer in der Routing-Tabelle wird verwendet, wie von @Nils erläutert.
Gertvdijk