2012-08-24 9 views
14

Ich habe einen PC mit zwei Netzwerkschnittstellen: eth0 und eth1.Woher weiß das Betriebssystem, welche Netzwerkschnittstelle für das Internet verwendet werden soll?

eth0 - Hat eine IP von 192.168.11.X/24.

eth1 - Hat eine IP von 192.168.130.X/24. eth1 verfügt über eine Internetverbindung.

Woher weiß mein Betriebssystem, welche Schnittstelle verwendet werden soll, wenn ich versuche, eine Verbindung zum Internet herzustellen? Wird über alle Standard-Gateways iteriert? Hat es Cache, was jede Schnittstelle bietet? Gibt es einen Unterschied im Verhalten zwischen Windows und Linux?

Antwort

13

Ich werde für die Linux-Seite des Hauses beantworten (zumindest für Debian-basierte Systeme wie Ubuntu, da es an dieser Stelle für die Nutzer häufiger ist):

Geben Sie den in eine folgende Befehlszeile:

route -n 

Sie sollten Ihre „Routing-Tabelle“ erscheinen, mit so etwas wie den folgenden:

Destination Gateway   Genmask   ... Iface 
0.0.0.0  192.168.11.254 0.0.0.0   ... eth0 
169.254.0.0 0.0.0.0   255.255.0.0  ... eth0 
192.168.11.0 0.0.0.0   255.255.255.0 ... eth0 
192.168.130.0 0.0.0.0   255.255.255.0 ... eth1 

ich weggelassen ein paar Spalten, aber im Grunde genommen, die Linie das sagt "0.0.0.0" unter "Ziel" ist die Zeile, die bestimmt, wo Ihre Standardroute ist. Mit anderen Worten, wo der gesamte Verkehr fließt, der für keines der anderen Subnetze in den anderen Linien bestimmt ist (google.com, facebook.com, was auch immer).

Wenn es nicht richtig (wie in der obigen Tabelle, wobei „eth1“ ist die Karte, die Sie mit Internetzugang wollen) ist, sollten Sie die Standardroute ändern:

sudo route del default 
sudo route add default gw 192.168.130.254 netmask 255.255.255.0 

, dass es jetzt beheben . Um es dauerhaft zu machen, bearbeiten Sie Ihre Datei interfaces:

sudo gedit /etc/network/interfaces 

bearbeiten es in etwa so aussehen wie folgt (je nach Bedarf ändern, um Ihre spezifische Situation):

auto eth0 
iface eth0 inet dhcp 
up route del default 

auto eth1 
iface eth1 inet dhcp 
up route add default gw 192.168.130.254 netmask 255.255.255.0 

Dann starten die Vernetzung zu sehen, ob das tat der Trick:

sudo /etc/init.d/networking restart 
2

Die Funktion, nach der Sie fragen, ist eine Routing-Tabelle, eine Liste von Zielen, die dem Host bekannt sind.

Wenn das Betriebssystem ein Paket weiterleiten muss, prüft es diese Liste und wählt die am besten geeignete aus (von bestimmten Zielen zu allgemeinen). Zum Beispiel:

192.0.2.0/28 - 192.0.2.1 via eth1 
198.51.100.0/27 - 198.51.100.1 via eth0 
0.0.0.0/0  - 203.0.113.1 via eth0 

Beachten Sie das letzte Ziel: Es wird jede IPv4-Adresse übereinstimmen.

+0

Aber was passiert, wenn der PC zum ersten Mal eingeschaltet wird und versucht, eine Verbindung mit dem Internet herzustellen? Es hat keine Ahnung, welche eth Zugang zum Internet bietet. Wird über die Schnittstellen iteriert und wenn die Information erfolgreich in die Routingtabelle übernommen wird? Vielen Dank. –

+1

@UriH Erwartet eine Konfiguration vom Benutzer oder von einem Routing-Protokoll. Es versucht nicht zufällig, Pakete zu routen. – cnicutar

+0

Danke, ich ging und überprüft, dass durch Entfernen der Standard-Route und Neustart eth1, dann sah ich, dass die Standardroute hinzugefügt wurde, nehme ich wegen der DHCP-Anfrage, die Router-Optionen enthalten. –

Verwandte Themen