Multi-Homed Server

03/01/2015 - 09:00 von Stefan Baur | Report spam
Hallo,

ich habe einen Server, der drei Internetanbindungen hat.
Jeweils über einen DSL-/Kabel-/Sonstwas-Router, der schon NAT macht.

Der Server hat die IP-Adressen
192.168.0.4 - br0
192.168.1.4 - br1
192.168.2.4 - br2

Es gibt nun drei Default Gateways "192.168.0.1", "192.168.1.1",
"192.168.2.1":

Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use
Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 br0
0.0.0.0 192.168.1.1 0.0.0.0 UG 1 0 0 br1
0.0.0.0 192.168.2.1 0.0.0.0 UG 2 0 0 br2
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 br1
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 br2

Auf den drei NAT-Routern ist jeweils das passende Portforwarding
eingerichtet, um per SSH auf den Server zugreifen zu können.

Trotzdem klappt es nur vom ersten in der Liste, der über
192.168.0.1->192.168.0.4 die Verbindung herstellt.

Mit tcpdump sehe ich, dass die Verbindungsanfragen über
192.168.1.1->192.168.1.4 und 192.168.2.1->192.168.2.4 auf der Maschine
ankommen, aber es wird keine Verbindung aufgebaut.
Ich vermute, das liegt daran, dass versucht wird, die Antwortpakete über
192.168.0.4->192.168.0.1 zu verschicken.

Wie kann ich dem Server sagen "Default Gateway ist 192.168.0.1,
erreichbar über br0, ABER für Traffic, der über br1 oder br2
hereinkommt, verwende bitte *ausschließlich* das für das jeweilige
Interface angegebene Gateway!"?

Irgendwelche Regeln zum Routing, Forwarding etc. für an dem Server über
weitere Interfaces erreichbare Systeme sind explizit nicht gefordert. Es
geht nur um den Zugriff per SSH auf den Server selbst.

Gruß
Stefan


Zum AUSTRAGEN schicken Sie eine Mail an debian-user-german-REQUEST@lists.debian.org
mit dem Subject "unsubscribe". Probleme? Mail an listmaster@lists.debian.org (engl)
Archive: https://lists.debian.org/54A7A196.1040503@stefanbaur.de
 

Lesen sie die antworten

#1 Paul Muster
03/01/2015 - 09:30 | Warnen spam
On 03.01.2015 09:00, Stefan Baur wrote:

ich habe einen Server, der drei Internetanbindungen hat.
Jeweils über einen DSL-/Kabel-/Sonstwas-Router, der schon NAT macht.

Der Server hat die IP-Adressen
192.168.0.4 - br0
192.168.1.4 - br1
192.168.2.4 - br2

Es gibt nun drei Default Gateways "192.168.0.1", "192.168.1.1",
"192.168.2.1":

Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use
Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 br0
0.0.0.0 192.168.1.1 0.0.0.0 UG 1 0 0 br1
0.0.0.0 192.168.2.1 0.0.0.0 UG 2 0 0 br2
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 br1
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 br2

Auf den drei NAT-Routern ist jeweils das passende Portforwarding
eingerichtet, um per SSH auf den Server zugreifen zu können.

Trotzdem klappt es nur vom ersten in der Liste, der über
192.168.0.1->192.168.0.4 die Verbindung herstellt.

Mit tcpdump sehe ich, dass die Verbindungsanfragen über
192.168.1.1->192.168.1.4 und 192.168.2.1->192.168.2.4 auf der Maschine
ankommen, aber es wird keine Verbindung aufgebaut.
Ich vermute, das liegt daran, dass versucht wird, die Antwortpakete über
192.168.0.4->192.168.0.1 zu verschicken.



Genau.

Wie kann ich dem Server sagen "Default Gateway ist 192.168.0.1,
erreichbar über br0, ABER für Traffic, der über br1 oder br2
hereinkommt, verwende bitte *ausschließlich* das für das jeweilige
Interface angegebene Gateway!"?



source based routing. Du musst dem System erklàren, dass es Pakete *von*
192.168.0.4 über 192.168.0.1, von .1.4 über .1.1 und von .2.4 über .2.1
verschicken soll. (Und deine Dienste müssen die abgehenden Pakete mit
den Absender-IP-Adressen verschicken, an denen die eingehende Verbindung
ankam.)
Das macht man, indem man

- iproute2 installiert.

- in /etc/iproute2/rt_tables drei Eintràge für die drei Provider/Links
macht, also eine Routingtabelle für jeden einrichtet.

- mittels 3 x "ip route add default dev ... table ..." jeder Tabelle
ihre Default-Route beibringt.

- mit 3 x "ip rule add from 192.168.?.4 lookup ..." dem abgehenden
Traffic die richtige Tabelle zuweist.



mfG Paul



Zum AUSTRAGEN schicken Sie eine Mail an
mit dem Subject "unsubscribe". Probleme? Mail an (engl)
Archive: https://lists.debian.org/

Ähnliche fragen