zwei ethernetkarten -> keine internetverbindung
- johnbecker
- Beiträge: 323
- Registriert: 07.08.2004 13:43:13
zwei ethernetkarten -> keine internetverbindung
hi,
habe einen netgear-router, auf dem ein dhcp-client (cable) und ein -server läuft und einen rechner, der zwei ethernetkarten hat. eine (eth0) wird über dhcp-client über den router konfiguriert und bekommt die ip 192.168.0.2, die andere (eth1) halt normal mit ip 192.168.0.10 -> internet-verbindung über eth0 über router klappt so nicht (obwohl debian die ip an eth0 per dhcp-client vergibt)
nach einem ifdown eth1 -> internet-verbindung über eth0 über router klappt.
beide karten haben die maske 255.255.255.0;
router selbst hat 192.168.0.1 und die selbe maske.
leider weiss ich von netzwerken im prinzip nur so viel, dass ich weiss, welche kabel ich bestellen muss ( ), von daher kann ich mir das phänomen nicht erklären...
habe einen netgear-router, auf dem ein dhcp-client (cable) und ein -server läuft und einen rechner, der zwei ethernetkarten hat. eine (eth0) wird über dhcp-client über den router konfiguriert und bekommt die ip 192.168.0.2, die andere (eth1) halt normal mit ip 192.168.0.10 -> internet-verbindung über eth0 über router klappt so nicht (obwohl debian die ip an eth0 per dhcp-client vergibt)
nach einem ifdown eth1 -> internet-verbindung über eth0 über router klappt.
beide karten haben die maske 255.255.255.0;
router selbst hat 192.168.0.1 und die selbe maske.
leider weiss ich von netzwerken im prinzip nur so viel, dass ich weiss, welche kabel ich bestellen muss ( ), von daher kann ich mir das phänomen nicht erklären...
- Savar
- Beiträge: 7174
- Registriert: 30.07.2004 09:28:58
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Berlin
du hast zwei Netzwerkkarten an einem Rechner und sie sind beide an den gleichen Switch angeschlossen und haben Adressen aus dem gleichen Netz?
Dann musst du mal unbedingt deine Routingtabelle zeigen
Dann musst du mal unbedingt deine Routingtabelle zeigen
Code: Alles auswählen
route
- johnbecker
- Beiträge: 323
- Registriert: 07.08.2004 13:43:13
@blue: klappt! (aber, ehm, wieso eigentlich?)
@Savar
btw: nach dem ich eth1 auf 192.168.1.1 stellte, habe ich mal nochmal auf 192.168.0.10 gestellt, um die ausgabe von route zu bekommen, die Savar wollte. komischer weise klappt das jetzt auch so...
btw2: gibt's für so probleme eigentlich einiger maßen verständliche anleitungen im netz, oder muss ich schon ne ausbildung zum systeminteragtor machen? *g
@Savar
Code: Alles auswählen
Kernel IP Routentabelle
Ziel Router Genmask Flags Metric Ref Use Iface
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
192.168.0.0 * 255.255.255.0 U 0 0 0 eth1
default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
btw2: gibt's für so probleme eigentlich einiger maßen verständliche anleitungen im netz, oder muss ich schon ne ausbildung zum systeminteragtor machen? *g
okay für dich mal ein kleiner schneller ausflug ins routing. Also ne IP-Adresse und ne Subnetzmaske kennst du.
In deinem Fall hast du zu Hause das Netz 192.168.0.0 / 255.255.255.0 d.h. zu deinem Netz gehören alle Rechner von 192.168.0.1 bis 192.168.0.254, die Adresse 192.168.0.255 ist die Broadcast-Adresse damit erreichst du alle PC's gleichzeitig.
Nun brauchst du aber noch irgendweine Zuordnung, welche Wege die Pakete gehen sollen - et volià die Routingtabelle, diese wird fleißig von oben nach unten abgearbeitet und es gilt, sobald ein passender Eintrag gefunden wird, hört die Suche auf. Bei zwei gleichen Einträgen wird natürlich immer nur der 1. Eintrag gefunden, d.h. die zweite Route wird nicht verwendet und liegt brach.
Jetzt hast du allerdings einen Rechner mit zwei Netzwerkkarten an das gleiche Netzwerk angebunden, d.h. du hast auch zwei Einträge in der Routingtabelle für das gleiche Netz. Sowas verursacht, einfach mal so dahingesagt - ein kleinwenig Chaos, weil wie willst du einem PC - oder gar einem Programm sagen, das es zwei Wege ins Internet hat?
Das Problem sieht etwa so aus, du startest Firefox der schickt über eth1 eine Anfrage an den Router, das er gerne ins Internet will, dein Router antwortet auch brav, aber die Antwort kommt bei eth0 an und da die Netzwerkkarte keine Verbindung in die Welt aufbauen wollte, wie die Bestätigung das eine Verbindung ins Netz steht dort abgelehnt und deine zweite Netzwerkkarte wartet sich dumm und dämlich und natürlich bekommt sie keine Antwort aus dem Internet.
Mal ne Frage am Rande, wofür hast du zwei Netzwerkkarten in einem PC?
Gruß
Jens
In deinem Fall hast du zu Hause das Netz 192.168.0.0 / 255.255.255.0 d.h. zu deinem Netz gehören alle Rechner von 192.168.0.1 bis 192.168.0.254, die Adresse 192.168.0.255 ist die Broadcast-Adresse damit erreichst du alle PC's gleichzeitig.
Nun brauchst du aber noch irgendweine Zuordnung, welche Wege die Pakete gehen sollen - et volià die Routingtabelle, diese wird fleißig von oben nach unten abgearbeitet und es gilt, sobald ein passender Eintrag gefunden wird, hört die Suche auf. Bei zwei gleichen Einträgen wird natürlich immer nur der 1. Eintrag gefunden, d.h. die zweite Route wird nicht verwendet und liegt brach.
Jetzt hast du allerdings einen Rechner mit zwei Netzwerkkarten an das gleiche Netzwerk angebunden, d.h. du hast auch zwei Einträge in der Routingtabelle für das gleiche Netz. Sowas verursacht, einfach mal so dahingesagt - ein kleinwenig Chaos, weil wie willst du einem PC - oder gar einem Programm sagen, das es zwei Wege ins Internet hat?
Das Problem sieht etwa so aus, du startest Firefox der schickt über eth1 eine Anfrage an den Router, das er gerne ins Internet will, dein Router antwortet auch brav, aber die Antwort kommt bei eth0 an und da die Netzwerkkarte keine Verbindung in die Welt aufbauen wollte, wie die Bestätigung das eine Verbindung ins Netz steht dort abgelehnt und deine zweite Netzwerkkarte wartet sich dumm und dämlich und natürlich bekommt sie keine Antwort aus dem Internet.
Mal ne Frage am Rande, wofür hast du zwei Netzwerkkarten in einem PC?
Gruß
Jens
- johnbecker
- Beiträge: 323
- Registriert: 07.08.2004 13:43:13
Ähm da beide Netzwerkkarten im gleichen Netz liegen, kann der Rechner jedes Interface beliebig nutzen um eine Verbindung mit anderen Rechnern im gleichen Netz eine Verbindung aufbauen.
Aber ich geb dir schon Recht so ganz 100% genau ist das nicht, wäre auch zu kompliziert gewesen das im Detail zu erklären. Was deine Anmerkung angeht, aber innerhalb von Ethernet-Paketen gibt es nur die MAC-Adresse als Empfänger-/Absenderkennung, die Zuordnung MAC <-> IP erfolgt am IP Protokoll vorbei mit Hilfe von ARP bzw. RARP.
Aber ich glaub es macht keinen Sinn sich über die genaue Funktionsweise eines IP-Stacks zu diskutieren, oder?
Gruß
Jens
Aber ich geb dir schon Recht so ganz 100% genau ist das nicht, wäre auch zu kompliziert gewesen das im Detail zu erklären. Was deine Anmerkung angeht, aber innerhalb von Ethernet-Paketen gibt es nur die MAC-Adresse als Empfänger-/Absenderkennung, die Zuordnung MAC <-> IP erfolgt am IP Protokoll vorbei mit Hilfe von ARP bzw. RARP.
Aber ich glaub es macht keinen Sinn sich über die genaue Funktionsweise eines IP-Stacks zu diskutieren, oder?
Gruß
Jens
- Savar
- Beiträge: 7174
- Registriert: 30.07.2004 09:28:58
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Berlin
sicher nicht.. zumindest nicht, bevor wir die Socket Funktionen genau erklärt haben
aber trotzdem nochmal (interessiert mich ja auch ):
das ist ja der erste Eintrag der Routingtabelle.. und daher wird er eth0 verwenden und somit die MAC Adresse von dieser verwenden und dadurch auch dessen IP..
der Rechner der Antworten soll, antwortet also auch auf diese IP und diese MAC..
nichtsdestotrotz bringt es einen Rechner manchmal durcheinander wenn man mit zwei Netzwerkkarten im gleichen Netz ist. (aber funktionieren tuts bei mir trotzdem)..
also komisch ist es schon.. ich hätt am liebsten ein ethereal mitschnitt gehabt
aber trotzdem nochmal (interessiert mich ja auch ):
Code: Alles auswählen
Kernel IP Routentabelle
Ziel Router Genmask Flags Metric Ref Use Iface
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
der Rechner der Antworten soll, antwortet also auch auf diese IP und diese MAC..
nichtsdestotrotz bringt es einen Rechner manchmal durcheinander wenn man mit zwei Netzwerkkarten im gleichen Netz ist. (aber funktionieren tuts bei mir trotzdem)..
also komisch ist es schon.. ich hätt am liebsten ein ethereal mitschnitt gehabt
Okay provozieren wir den Fehler mal:
Zwei Netzwerkkarten:
eth0 über DHCP
eth1 über statische Einstellungen
Wenn sich dann folgendes Bild (von der Routingtabelle her zeigt)
So nun werden ausgehende Connections mit der IP von eth0 gebildet, laut
Routingtabelle gehen alle I-Net Anfragen an den Default gw über eth1 raus.
Logischerweise kommt die Antwort an eth0 an, aber eth0 ist nicht zuständig, weil die IP-Adresse nicht stimmt.
Zwei Netzwerkkarten:
eth0 über DHCP
eth1 über statische Einstellungen
Wenn sich dann folgendes Bild (von der Routingtabelle her zeigt)
Code: Alles auswählen
Kernel IP Routentabelle
Ziel Router Genmask Flags Metric Ref Use Iface
192.168.0.0 * 255.255.255.0 U 0 0 0 eth1
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
Routingtabelle gehen alle I-Net Anfragen an den Default gw über eth1 raus.
Logischerweise kommt die Antwort an eth0 an, aber eth0 ist nicht zuständig, weil die IP-Adresse nicht stimmt.
- DynaBlaster
- Beiträge: 958
- Registriert: 25.03.2004 18:18:57
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: DF0://dynablaster.adf
@bluestar
Nachvollziehbar. Gibt es denn eine Möglichkeit, die Routingtabelle zu manipulieren, damit der 2. Eintrag an erster Stelle steht und umgekehrt? In dem Fall, wäre das Problem nämlich beseitigt. Obwohl eth1 dann vom Kernel gar nicht mehr "benutzt" werden würde - also könnte man die Karte auch gleich in ein anderes Subnetz einbinden ...
Nachvollziehbar. Gibt es denn eine Möglichkeit, die Routingtabelle zu manipulieren, damit der 2. Eintrag an erster Stelle steht und umgekehrt? In dem Fall, wäre das Problem nämlich beseitigt. Obwohl eth1 dann vom Kernel gar nicht mehr "benutzt" werden würde - also könnte man die Karte auch gleich in ein anderes Subnetz einbinden ...
- Savar
- Beiträge: 7174
- Registriert: 30.07.2004 09:28:58
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Berlin
äh Default GW => eth0bluestar hat geschrieben:Okay provozieren wir den Fehler mal:
Zwei Netzwerkkarten:
eth0 über DHCP
eth1 über statische Einstellungen
Wenn sich dann folgendes Bild (von der Routingtabelle her zeigt)
So nun werden ausgehende Connections mit der IP von eth0 gebildet, lautCode: Alles auswählen
Kernel IP Routentabelle Ziel Router Genmask Flags Metric Ref Use Iface 192.168.0.0 * 255.255.255.0 U 0 0 0 eth1 192.168.0.0 * 255.255.255.0 U 0 0 0 eth0 default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
Routingtabelle gehen alle I-Net Anfragen an den Default gw über eth1 raus.
Logischerweise kommt die Antwort an eth0 an, aber eth0 ist nicht zuständig, weil die IP-Adresse nicht stimmt.
Außerdem stellt sich die Frage wie die Socket Programmierung es nun wirklich macht.. weil wenn ich mir eine IP Adresse nehme, dann dürfte der Kernel es auch nur über die Schnittstelle rausschicken, die diese IP hat.
Ich muss zugeben, dass ich keine eindeutige Antwort weiß, aber einfach zu sagen er nimmt sich die IP X.X.X.X und schickt es aber über das Interface Y was aber die IP Adresse X.X.X.Z hat raus, find ich zu leicht und auch nicht logisch. Wo steht das?
- meandtheshell
- Beiträge: 4054
- Registriert: 14.01.2005 17:51:30
@bluestar
@ savar
oder
@ dynablaster
markus
das ist falsch - richtig:192.168.0.0 to 192.168.0.255In deinem Fall hast du zu Hause das Netz 192.168.0.0 / 255.255.255.0 d.h. zu deinem Netz gehören alle Rechner von 192.168.0.1 bis 192.168.0.254,
sie kann vielmehr dazu benutzt werden - wie auch jede andere IPv4 Adresse im 192.168.0.0/24 rangedie Adresse 192.168.0.255 ist die Broadcast-Adresse
?? - du vermischt da viele sachen - eine IP ist eindeutig einem Interface zugeordnet - verlässt ein IP packet ein interface wird auch wieder GENAU auf diesem eine response erfolgen (annahme das paket wird nirgends gedroppt usw.) - was soll das heißen "ein router antwortet"? - ein router routet! - ein browser schickt keine anfrage! zumindest nicht an einen router - wenn dann ein IP packet mit gesetztem SYN flag an die IP adresse wo eine website liegt ...Das Problem sieht etwa so aus, du startest Firefox der schickt über eth1 eine Anfrage an den Router, das er gerne ins Internet will, dein Router antwortet auch brav, aber die Antwort kommt bei eth0 an und da die Netzwerkkarte keine Verbindung in die Welt aufbauen wollte
äh - dass würde bedeuten, dass es KEIN Kommunikationsnetz geben könnte das auf ethernet aufsetzt und auf höheren Layern routing informationen nutz - so ist es aber nicht!!aber innerhalb von Ethernet-Paketen gibt es nur die MAC-Adresse als Empfänger-/Absenderkennung,
das stimmtdie Zuordnung MAC <-> IP erfolgt am IP Protokoll vorbei mit Hilfe von ARP bzw. RARP.
@ savar
du hast eher verstanden was passiert - wir sind auf OSI layer drei - die ip adressen sind signifikant - MAC ist zwar im Frame drinnen schaut sich aber kein teilnehmer auf Layer 3 andie entsprechende MAC und IP Adresse im Paket ist und auch auf diesem Interface die Antwort logischerweise zurückkommt?!!
immer IP - siehe oben - MAC adressen sind nur deshalb notwendig damit eine eindeutige zuordnung einer IP zu einem interface stattfinden kann - IP addressen können umziehen - (gut es gibt für die paranoia gys auch möglichkeiten die MAC von NIC´s zu ändern aber das lassen wir nun außen vor)das ist ja der erste Eintrag der Routingtabelle.. und daher wird er eth0 verwenden und somit die MAC Adresse von dieser verwenden und dadurch auch dessen IP..
der Rechner der Antworten soll, antwortet also auch auf diese IP und diese MAC..
interessant könnte seinAußerdem stellt sich die Frage wie die Socket Programmierung es nun wirklich macht.. weil wenn ich mir eine IP Adresse nehme, dann dürfte der Kernel es auch nur über die Schnittstelle rausschicken, die diese IP hat.
Code: Alles auswählen
man tc
Code: Alles auswählen
man ip
@ dynablaster
die reihenfolge in der routen eingetragen werden ist signifikantGibt es denn eine Möglichkeit, die Routingtabelle zu manipulieren, damit der 2. Eintrag an erster Stelle steht und umgekehrt?
markus
Also da stimm ich aber eindeutig dagegen, wir reden ja über ein /24 Netz und per Definition ist die erste Adresse die Netzwerkadresse und die letzte Adresse ist immer die Broadcastadresse, zumindest ist es standardmäßig so!richtig:192.168.0.0 to 192.168.0.255
Erwartest du detailierte Abhandlung über das gesamte OSI Modell,es geht im wesentlichen um die Klärung warum es problematisch ist zwei Netzwerkkarten mit dem gleichen Netz zu verbinden. Natürlich ist eine IP einem Interface zugeordnet, aber es bedeutet noch lange nicht das aller Traffic über das Interface abläuft. Dazu gibt es aber ganz nette Hinweise im Advanced Routing Howto und da findest du auch genau erklärt, wie man genau erreicht was du hier beschreibst.?? - du vermischt da viele sachen - eine IP ist eindeutig einem Interface zugeordnet - verlässt ein IP packet ein interface wird auch wieder GENAU auf diesem eine response erfolgen (annahme das paket wird nirgends gedroppt usw.) - was soll das heißen "ein router antwortet"? - ein router routet! -
Code: Alles auswählen
#!/bin/sh
#
# 2 Routingtabellen anlegen, jeweils eine für eth0 und eine für eth1
#
ip route add default dev eth0 table 1
ip route add default dev eth1 table 2
#
# Traffic anhand der ausgehenden IP in die Routingtabellen werfen
#
ip rule add from 192.168.0.1 prio 32765 lookup 1
ip rule add from 192.168.0.2 prio 32765 lookup 2
- meandtheshell
- Beiträge: 4054
- Registriert: 14.01.2005 17:51:30
absolut genau so ist es - per standart so festgelegt - die tech. umsetzung auf die darunter liegende OSI schicht implementiert das - MUSS aber nicht so sein - ich denke wir haben aneinander vorbei geredetbluestar hat geschrieben: richtig:192.168.0.0 to 192.168.0.255
Also da stimm ich aber eindeutig dagegen, wir reden ja über ein /24 Netz und per Definition ist die erste Adresse die Netzwerkadresse und die letzte Adresse ist immer die Broadcastadresse, zumindest ist es standardmäßig so!
ist egal - auch bei classless netzen ist der "standart" sowir reden ja über ein /24 Netz
da redet ihr ja schon eine weile aneinander vorbei - die NIC von der ein request gestartet wird sieht von dem ganzen routing zeug nichts - muss sie auch nicht - NIC´s in einem router routen entweder in oder durch ein netz (siehe dynamische routing protokolle alle BGP und AS´s)- d.h. zu einem anderen router bzw. zu der NIC im eigenen AS/netz wenn sie diese kennen bzw. für dieses netz zuständig sindgeht im wesentlichen um die Klärung warum es problematisch ist zwei Netzwerkkarten mit dem gleichen Netz zu verbinden. Natürlich ist eine IP einem Interface zugeordnet, aber es bedeutet noch lange nicht das aller Traffic über das Interface abläuft.
markus