Auf Anfrage über das richtige Gateway antworten

Auf Anfrage über das richtige Gateway antworten

Ich habe ein recht einfaches Szenario. Leider habe ich keine passende Antwort zu diesem Problem gefunden. Ich habe zwei Linux-Router (=Gateways) für unterschiedliche 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 ergibt sich folgendes Verhalten:

eingehende Anfrage über 192.168.0.70 -> Antwort funktioniert (aufgrund des Standard-Gateways)

eingehende Anfrage über 192.168.0.80 -> funktioniert nicht, da die Antwort 192.168.0.70 benötigt

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

Antwort1

Wir müssen NEUE Verbindungen mit einem Marker kennzeichnen, dann die ausgehenden Pakete anhand des Markers unterscheiden und eine von zwei Routing-Tabellen verwenden, um sie an das entsprechende Gateway zu routen. Möglicherweise müssen Sie das Modul CONNTRACK laden,

          modprobe ip_conntrack

Nennen wir MAC70 die MAC-Adresse des Gateways 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 markieren die eingehenden, neuen Verbindungen (für das TCP-Protokoll, ggf. ändern) mit zwei einfachen Markierungen. Die Markierungen gelten für die gesamten Verbindungen,dhalle folgenden Pakete vom Typ ESTABLISHED, RELATED, die zu diesem ersten Paket gehören, haben die gleiche Markierung.

Die Unterscheidung kann nur anhand der MAC-Adresse des Gateways vorgenommen werden, da die Quell-IP-Adresse jedes Pakets die des Clients ist, der die Verbindung beginnt.nichtdie des Gateways. Dies gilt daher nur für Ethernet-Verbindungen, da WLAN-Frames keine MAC-Adressen enthalten.

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) je nach Verbindung/Paketmarkierung verwendet werden soll.

Jetzt richten wir zwei Routingtabellen 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 das, das Sie bereits haben, was auch immer das sein mag.

Du bist fertig.

verwandte Informationen