eth0
Angenommen , ich habe einen Computer mit zwei Netzwerkadaptern in verschiedenen Subnetzen (10.0.100.5) und eth1
(10.0.200.5). Angenommen, beide Subnetze haben Routen zum Internet (über ihre eigenen NATs) und zum Rest des lokalen Netzwerks (über ihre eigenen Switches):
- Wie wählt Linux aus, welche Netzwerkschnittstelle verwendet werden soll, wenn eine Anfrage an 10.0.150.5 oder 173.194.43.102 gestellt wird?
- Gibt es eine Möglichkeit, dies auf Netzwerkebene zu beeinflussen? Würde das Entfernen der Routen aus den Subnetzen dies beeinflussen? Ich bin in einer AWS - Umgebung und mit einer Appliance AMI arbeitet , dass ich nicht anmelden, so etwas wie das wird nicht funktionieren.
AWS VPC-Umgebung, andere Computer, auf denen Ubuntu 12.04 ausgeführt wird, keine Ahnung, auf welchem Computer ich Einfluss nehmen möchte (da ich mich nicht anmelden kann).
Erläuterungen:
- Beide Subnetze sind als
/24
s eingerichtet
route -n
Antworten:
Das Subnetz wird durch Netzwerk und Maske definiert , z
Netzwerk: 10.0.100.5 Maske: / 8
Dies bedeutet, dass Ihr Subnetz ist:
10.
0.100.5 /8
Grundsätzlich gehört jede gültige IP der 10.xxx.xxx.xxx-Familie zu diesem Subnetz. Für den Zugriff auf Hosts in diesem Subnetz kann nur eine Schnittstelle verwendet werden. In Ihrem Fall ist es also entweder eth0 oder eth1. Andere Schnittstellen können IP-Adressen im selben Subnetz haben, funktionieren jedoch nicht ordnungsgemäß.
Folgendes passiert, wenn Sie eine Situation haben, wie Sie sie beschrieben haben, in der sowohl eth0 als auch eth1 mit IPs im selben Subnetz mit demselben Netzwerk verbunden sind.
Jetzt hat nur eine dieser Schnittstellen eine Route (sagen wir, es ist eth0 ), die
to access subnet 10.0.100.0/8
use verwendeteth0
. Das Paket, das diese Schnittstelle verlässt, hat also die Quelladresse10.0.100.5
! HINWEIS - 10.0.100.5/8 und 10.0.200.5/8 sind dasselbe Subnetz (da Maskenmasken die letzten 3 Vorkommen haben, können wir sie auch als 10.0.0.0/8 schreiben).
Stellen Sie sich nun vor, wir haben einen Host in diesem Subnetz, der versucht, mit
10.0.200.5
Packet in das System zu kommunizieren ,eth1
aber nicht zurückkehren kann,eth1
daeth0
nur einer mit Route zum Netzwerk10.0.0.0/8
und Antworten von eth0 unterschiedliche IP-Adressen haben. Daher kann derjenige, der die Verbindung zu 10.0.200.5 initiiert, die Antwort einer anderen Quelle nicht verstehen.BEARBEITEN
Um zu bestimmen, welche Schnittstelle verwendet wird, müssen Sie sich Ihre Routing-Tabelle ansehen. Da die Frage keine Routing-Tabelle enthält, werde ich versuchen, dies anhand der folgenden Routing-Tabelle zu erklären
alternative Routing-Tabellenausgabe
Wir haben also im obigen Beispiel 2 Schnittstellen.
Was sagt uns nun die Routing-Tabelle? zeilenweise Interpretation von unten nach oben:
192.168.0.0/24 dev wlan0 proto kernel scope link src 192.168.0.14
192.168.0.0/24
Verwenden Sie für den Zugriff auf Hosts im Subnetz die Schnittstellewlan0
und die src-IP192.168.0.14
10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.5
10.0.0.0/24
Verwenden Sie für den Zugriff auf Hosts im Subnetz die Schnittstelleeth0
und die src-IP10.0.0.5
default via 192.168.0.1 dev wlan0 proto static
Um auf einen anderen Host zuzugreifen, der nicht durch die oben genannten Regeln abgedeckt ist, verwenden Sie die
default
Route, die über die Schnittstellewlan0
und das Gateway zu anderen Netzwerken erreichbar ist192.168.0.1
quelle
Schauen Sie sich Ihre Routing-Tabelle an - Befehl ist route. Verwenden Sie mit dem neueren ip-Befehl ip route show. In der Hilfe finden Sie Informationen zum Hinzufügen / Löschen von Routing-Einträgen in der Tabelle.
quelle