Wie macht man so was?

Status
Für weitere Antworten geschlossen.

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Frage an alle Netzwerkspezis hier: Kann man ein Linux mit zweimal eth so einrichten, dass jedes Interface eine eigenen default Gateway haben kann? Bei den Routen kann man ja nur mit dem Ziel arbeiten. Ich bräuchte einen Weg zusätzlich noch die Source an die Route zu binden. Gibt es da einen Weg bei Linux? Letztlich soll alles was an eth0 ankommt auch über das Sub an eth0 raus und alles was an eth1 ankommt soll über das Sub an eth1 raus. Momentan kommen alle Antworten vom default Interface (eth0), auch wenn die Anfrage letztlich an eth1 reingekommen ist
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
brauchst du mehrere Gateways oder mehrere default Gateways deiner Meinung nach? Mach dein Beispiel mal mit (fiktiven) IP-Adressen, damit es etwas klarer wird

Itari

kuck auch mal: http://support.microsoft.com/kb/159168
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
ich brauch pro Interface einen default Gateway. Habe zwei Subs 192.168.199.0/24 und 192.168.200.0/24 mit 192.168.199.1 und 192.168.200.1 als Router des jeweiligen Subs. Die Kiste selber hängt mit 192.168.199.7 im einen Sub und mit 192.168.200.2 im anderen. Einen default gw Eintrag hat nur eth0 oder 192.168.200.2
Das "Problem" ist, dass sämtlicher Traffic für unbekannte Empfänger via eth0 abgewickelt wird, auch wenn ich eigentlich am eth1 bin. Sprich wenn ich auf 192.168.199.7 verbunden bin und einen externen Host trace, dann gehen die Pakete via 192.168.200.1 (also dem default gw) raus. Ich suche nach einem Weg, dem default gw Eintrag sozusagen mitzuteilen "Hei du bist nur für ein bestimmtes Interface und eine bestimmte src zuständig". Irgendwie muss ich die Herkunft der Pakete und das Eintrittsinterface mit dem defaut gw verknüpfen
Habe gestern noch einiges dazu gegoogelt aber nur Beispiele gefunden wo beschrieben wird wie man das als Failover resp Loadbalancing machen kann. Das will ich aber eigentlich ned, weil der default Ausgang ins Internet weiterhin fix eth0 sein soll. Nur Pakete mit der src aus eth1 soll via alternatives Gateway gemacht werden. Das ganze funzt innerhalb des LANs auch schon wie gewünscht, aber sobald es nach extern geht krieg ich die Pakete nicht via eth1, weil das default gw an eth0 liegt
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
schaut genau nach dem aus was ich suche. Danke dir für den Link, werde mich gleich mal dran machen
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
sodele habs mal so eingerichtet wie beschrieben, aber irgendwie will es noch nicht so wie ich will ;-) das default gw ist weiterhin an eth0. Für eth1 habe ich gemäss dem Link mit iproute eine eigene Tabelle gemacht und verweise dort drin als default gw an 192.168.199.1
Wenn ich mich jetzt via ssh zum Server auf eth1 verbinde und einen traceroute einer externen Adresse mache, dann gehen die Pakete weiterhin über eth0 und dessen gw raus. Kann es denn sein, dass ein Netzwerkkommando wie traceroute immer eth0 als Ausgang verwendet (also das erste Interface)?
 

CaptainKrunch

Benutzer
Mitglied seit
08. Jan 2012
Beiträge
226
Punkte für Reaktionen
0
Punkte
0
Im Normalfall sollten die die entsprechende Routingtabelle beachten. Also vermutlich wird wirklich die Erste (auf eth0) genutzt.

Unter Cisco IOS muss man das entsprechende VRF (bzw. die Routingtabelle) explizit angeben, über die rausgegangen werden soll. Unter Linux wüsste ich allerdings nicht, wie das gehen sollte.
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.167
Punkte für Reaktionen
415
Punkte
393
Hallo,
ssh ist ja so als wärst Du direkt auf dem Server, die abgehenden Pakete Deiner Anfrage werden erst auf dem Server gebildet, die haben keine andere Herkunft, es greift die Defaultroute. Nur Ein- und Ausgabe des ssh haben als Eingang eth1.

Gruß Götz
 

ubuntulinux

Benutzer
Mitglied seit
23. Jan 2010
Beiträge
2.063
Punkte für Reaktionen
0
Punkte
82
2 Default-Gateways (default = route 0.0.0.0/0) kann es nicht geben ;) Sonst hätte er 2 Routen für 0.0.0.0. Welchen Weg ist dann der richtige? :)
 

CaptainKrunch

Benutzer
Mitglied seit
08. Jan 2012
Beiträge
226
Punkte für Reaktionen
0
Punkte
0
2 Default-Gateways (default = route 0.0.0.0/0) kann es nicht geben ;) Sonst hätte er 2 Routen für 0.0.0.0. Welchen Weg ist dann der richtige? :)
Sofern du mehrere (voneinander getrennte) Routingtabellen hast, kannst du natürlich für jede einzelne ein Default Gateway haben. ;)
 

thedude

Benutzer
Mitglied seit
30. Nov 2009
Beiträge
2.244
Punkte für Reaktionen
2
Punkte
84
Also von VRFs, floating statics mit gewichtung usw, mal abgesehen kann es per definition eigentlich nur ein default (oder auch "gateway of last resort") geben. Ist ja klar, es wird nur verwendet wenn es keinen andere weg gibt. Was Du siehst ist asychrones routing. Traffic kommt über ein Interface rein und geht über das andere raus. Das kannst Du nur vehindern indem Du entsprechende (Interface)Routen einträgst. Wenn Du auf der Maschine bist und ein bestimmtes Interface als Ausgang nehmen willst, kannst du bei traceroute z.B. mit "-i" das source interface angeben.

stephan
 

thedude

Benutzer
Mitglied seit
30. Nov 2009
Beiträge
2.244
Punkte für Reaktionen
2
Punkte
84
Sofern du mehrere (voneinander getrennte) Routingtabellen hast, kannst du natürlich für jede einzelne ein Default Gateway haben. ;)

Niemand bestreitet, dass man sowas auf ner cisco ber VRFs machen kann. Aber das hilft jahlives auch nicht weiter. Selbst wenn man das auf nem Linux implementiert bekommt, wie sagst du den Anwendungen welche Routingtabelle verwendet werden soll?
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
@ubuntulinux
mit iproute geht das eben doch. Da wird zusätzlich die src verwendet um festzustellen welches default gw verwendet werden soll. Wenn ich aber die Erklärung von goetz recht verstanden habe, dann bin ich von falschen Voraussetzungen ausgegangen. Ich müsste es mal testen indem ich eine weitere OpenVPN-Instanz installiere und explizit an eth1 binde. Dann dürfte keine Verbindung von aussen aufgebaut werden können, wenn nur das default gw auf eth0 verwendet wird. Wenn die Verbindung aber geht, dann muss die Regel von iproute greifen
 

CaptainKrunch

Benutzer
Mitglied seit
08. Jan 2012
Beiträge
226
Punkte für Reaktionen
0
Punkte
0
Im genannten Link wurde gezeigt, wie man auf einem Linuxsystem zwei vollständig voneinander getrennte Routingtabellen implementiert. Also recht ähnlich dem, was Cisco mit den VRFs macht.
Die Zuordnung, welche der Tabellen genutzt wird, geschieht meines Verständnisses nach einfach nur über das Interface, auf dem die Pakete ankommen. Lauscht der Apache (um beim Link zu bleiben) auf eth1, werden auch die Antwortpakete entsprechend über dieses Interface wieder raus gehen, und dafür die entsprechende ("zweite")Defaultroute nutzen.

Bitte um Korrektur, falls ich da jetzt nen totalen Denkfehler habe (hab lange nichts mehr "ernsthaftes" mit Linux gemacht).
 

thedude

Benutzer
Mitglied seit
30. Nov 2009
Beiträge
2.244
Punkte für Reaktionen
2
Punkte
84
Das klingt zumindest logisch. :)
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.167
Punkte für Reaktionen
415
Punkte
393
Hallo,
genau so sehe ich das auch, das ist die eigentliche Anwendung. Anwendungen die auf dem Server starten gehen immer über eth0 (falls man nicht explizit das IF mitgeben kann).

Gruß Götz
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Die Zuordnung, welche der Tabellen genutzt wird, geschieht meines Verständnisses nach einfach nur über das Interface, auf dem die Pakete ankommen.
genau so habe ich es auch verstanden. Bei den meisten Serverdiensten kann man ja sagen an welches Interface gebunden werden soll. Damit würde ein Dienst an eth1 die Pakete auch via eth1 zurückschicken und nicht die default Route verwenden. Habs nur die ganze Zeit falsch getestet, weil ich davon ausgegangen bin, dass Kommandos via ssh dasselbe Interface verwenden würden auf dem auch die ssh-Verbindung selber aufgebaut wurde :)
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
habs mit OpenVPN getestet. Dazu OpenVPN ans Interface gebunden (eth1), welches keinen gateway Eintrag in /etc/network/interfaces hat. Die Antwortpakete von OpenVPN nach extern kommen sauber von eth1. So soll es sein :) Nochmal danke für die Tipps v.a. der Link von joku hat sehr geholfen :)
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat