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.