Ich besitze ein System mit zwei Netzwerkschnittstellen mit unterschiedlichen IP-Adressen, die sich beide im öffentlichen Adressbereich befinden (beim ersten jedoch über NAT) und beide unterschiedliche Gateways haben. (Lange Geschichte, es ist zu Testzwecken)
Das Problem ist, dass im Moment, wenn ich versuche, die Adresse auf der zweiten Schnittstelle anzupingen, die Standardroute über die erste Schnittstelle angezeigt wird - und nie richtig ankommt.
Ist es möglich, sicherzustellen, dass Antworten immer über dieselbe Netzwerkschnittstelle (und mit derselben Quell-IP) gesendet werden, wie sie eingegangen sind? Und wenn ja, wie?
debian
networking
ipv4
Shadur
quelle
quelle
Antworten:
Sie verstehen das Problem falsch. Nicht jedes Paket ist eine Antwort und nicht jedes Paket kann mit einem anderen Paket abgeglichen werden, so dass "dieselbe Netzwerkschnittstelle, an der sie eingegangen sind" Sinn macht. Sie möchten das Gateway für ein Paket anhand seiner Quell-IP-Adresse auswählen.
Dies wird als quellbasiertes Routing oder Richtlinienrouting bezeichnet. Sie können dies mit einer einfachen
iptables
Regel tun. Am besten richten Sie jedoch zwei Routing-Tabellen ein, eine für jede öffentliche Quelladresse:Erstellen Sie zunächst zwei Tabellen (Ersetzen Sie <NAME1> und <NAME2> durch sinnvolle Namen für Ihre beiden Anbieter, ebenso wie IP1, DEV1 usw.):
Fügen Sie jeder Routingtabelle ein Gateway hinzu (falls erforderlich):
Dann eine Standardroute:
Dann die Regeln zur Auswahl der Routentabelle anhand der Quelladresse:
Weitere Informationen finden Sie unter Routing für mehrere Uplinks / Anbieter .
quelle
Die Antwort von David Schwartz ist ausgezeichnet, aber Sie können die Routing-Regeln ein wenig vereinfachen, indem Sie nur eine zusätzliche Tabelle haben und Ihre Standardroute für die andere verwenden. Ich habe einen Server, der sich hinter zwei NAT-Gateways befindet, und habe kürzlich das Szenario zwischen mehreren VMs neu erstellt. Mein
/etc/network/interfaces
sieht so aus:(Dies ist für ein Setup, bei dem die beiden ISPs Optus und iiNet sind, daher der Tabellenname 'optus'.)
Dies plus die Zeile in
/etc/iproute2/rt_tables
Erstellen der Tabelle sollten alles sein, was Sie brauchen. Sie haben zwei IP-Adressen. Verkehr von 192.168.13.13 wird über 192.168.13.11 ausgehen, und Verkehr von 192.168.13.213 wird über 192.168.13.10 ausgehen. Konfigurieren Sie diese beiden Gateways so, dass die Portweiterleitung ordnungsgemäß erfolgt (192.168.13.11 leitet Daten an 192.168.13.13 weiter und 192.168.13.10 leitet Daten an 192.168.13.213 weiter), und der Rest sollte für sich selbst sorgen.Möglicherweise müssen Sie die Dinge ein wenig für Ihre Situation optimieren, da Sie öffentliche IPs direkt verwenden, aber so etwas sollte immer noch funktionieren. Außerdem ist es
/etc/network/interfaces
zwei Jahre später, wenn das System neu gestartet werden muss, viel einfacher, diese Dinge zu erledigen und diese Datei dann zu verwalten, als sich zu merken, wie Sie sie eingerichtet haben!quelle