Anfrage am richtigen Gateway beantworten

1

Ich habe ein ziemlich einfaches Szenario. Leider habe ich zu diesem Problem keine passende Antwort gefunden. Ich habe zwei Linux-Router (= Gateways) für verschiedene WANs (192.168.0.70 und 192.168.0.80). Beide leiten den Port 50000 an einen Linux-Server 192.168.0.60 weiter. Der Server hat nur eine Schnittstelle mit dem Standard-Gateway 192.168.0.70. Ohne zusätzliche Konfiguration haben Sie folgendes Verhalten:

eingehende Anfrage über 192.168.0.70 - & gt; Antwort funktioniert (wegen des Standard-Gateways)

eingehende Anfrage über 192.168.0.80 - & gt; funktioniert nicht, da die Antwort 192.168.0.70 dauert

Wie kann ich erreichen, dass die Anfragen über 192.168.0.80 über 192.168.0.80 zurückgesendet werden?

Billylo
quelle
Wie sind sie alle miteinander verbunden?
user193661

Antworten:

0

Wir müssen NEUE Verbindungen mit einem Marker markieren, dann die ausgehenden Pakete anhand des Markers unterscheiden und sie mithilfe einer von zwei Routingtabellen an das entsprechende Gateway weiterleiten. Es ist möglich, dass Sie das CONNTRACK-Modul laden müssen,

          modprobe ip_conntrack

Nennen wir MAC70 die MAC-Adresse von Gateway 192.168.0.70 und MAC80 die MAC-Adresse von 192.168.0.80. Dann

       iptables -A INPUT -m state --state NEW -m mac --mac-source MAC70 -p tcp --dport 50000 -j CONNMARK --set-mark 1
       iptables -A INPUT -m state --state NEW -m mac --mac-source MAC80 -p tcp --dport 50000 -j CONNMARK --set-mark 2

Diese beiden Regeln kennzeichnen die eingehenden neuen Verbindungen (für das TCP-Protokoll, ändern Sie sie gegebenenfalls) mit zwei einfachen Markierungen. Die Markierungen gelten für die gesamten Verbindungen. d.h. Alle folgenden Pakete des Typs ESTABLISHED, RELATED, die zu diesem Anfangspaket gehören, haben dieselbe Markierung.

Die Unterscheidung kann nur anhand der MAC-Adresse des Gateways erfolgen, da die Quell-IP-Adresse jedes Pakets die des Clients ist, der die Verbindung beginnt. nicht das des Tores. Dies gilt daher nur für Ethernet-Verbindungen, da WLAN-Frames keine MAC-Adressen tragen.

Jetzt

       ip rule add fwmark 1 table router70
       ip rule add fwmark 2 table router80

Diese beiden Befehle geben an, welche Routing-Tabelle (von zwei) verwendet werden soll, abhängig von der Verbindungs- / Paketmarke.

Nun richten wir zwei Routing-Tabellen ein:

        echo 200 router70 >> /etc/iproute2/rt_tables
        echo 201 router80 >> /etc/iproute2/rt_tables
        ip route add 192.168.0.0/24 dev eth0 table router70
        ip route add 192.168.0.0/24 dev eth0 table router80
        ip route add default via 192.168.0.70 table router70
        ip route add default via 192.168.0.80 table router80

Dies setzt voraus, dass Ihre Ethernet-Netzwerkkarte eth0 heißt, andernfalls ändern Sie sie entsprechend. Das Routing für alle anderen Ports und / oder Protokolle bleibt dasjenige, das Sie bereits haben, unabhängig davon, was das sein mag.

Du bist fertig.

MariusMatutiae
quelle