echo 200 isp2 >> /etc/iproute2/rt_tables
ip rule add from <interface_IP> table isp2 prio 1
ip route add default via <gateway_IP> dev <interface> table isp2
Das Obige erfordert keine Paketmarkierung mit ipfilter. Es funktioniert, weil die ausgehenden (Antwort-)Pakete die IP-Adresse haben, die ursprünglich verwendet wurde, um sich mit der 2. Schnittstelle als Quelladresse (von) des ausgehenden Pakets zu verbinden.
Die folgenden Befehle erstellen eine alternative Routing-Tabelle über eth1
für Pakete, die die Markierung 1 haben (außer Pakete an localhost). Die ip
Der Befehl stammt aus der iproute2-Suite (Ubuntu:iproute Install iproute http://bit.ly/software-small, iproute-doc Install iproute-doc http://bit.ly/software-small).
ip rule add fwmark 1 table 1
ip route add 127.0.0.0/0 table 1 dev lo
ip route add 0.0.0.0/0 table 1 dev eth1
Die andere Hälfte des Jobs ist das Erkennen von Paketen, die die Note 1 erhalten müssen; Verwenden Sie dann iptables -t mangle -A OUTPUT … -j MARK --set-mark 1
auf diese Pakete, damit sie durch die Routing-Tabelle 1 geleitet werden. Ich denke, das Folgende sollte es tun (ersetzen Sie 1.2.3.4 durch die Adresse der Nicht-Standard-Route-Schnittstelle):
iptables -t mangle -A OUTPUT -m conntrack --ctorigdst 1.2.3.4 -j MARK --set-mark 1
Ich bin mir nicht sicher, ob das ausreicht, vielleicht wird eine andere Regel für die eingehenden Pakete benötigt, um das Conntrack-Modul anzuweisen, sie zu verfolgen.
Ich hatte Probleme mit den lokal generierten Paketen mit der von Peter vorgeschlagenen Lösung, ich habe festgestellt, dass das Folgende das korrigiert:
echo 200 isp2 >> /etc/iproute2/rt_tables
ip rule add from <interface_IP> table isp2 priority 900
ip rule add from dev <interface> table isp2 priority 1000
ip route add default via <gateway_IP> dev <interface> table isp2
ip route add <interface_prefix> dev <interface> proto static scope link src <interface_IP> table isp2
HINWEIS: Bei der vierten Zeile oben können Sie auf Syntaxprobleme stoßen. In solchen Fällen könnte die Syntax für den 4. Befehl jetzt so lauten:
ip rule add iif <interface> table isp2 priority 1000