Multi Gateway Routing
Inhaltsverzeichnis |
Multi Gateway Routing
Einleitung
Wenn man mehrere Internetleitungen hat, stellt sich irgendwann das Problem, dass man gern bestimmte Dienste nur über eine Leitung abwickeln möchte. Ein einfaches Setzen von Netzwerkrouten reicht nicht, da beim Nat dies Probleme bereitet, wenn beide Leitungen auf dem selben Router ankommen. Mit iptables und iproute2 lässt sich dies realisieren.
Beispielzenario
In diesem Beispiel gibt es 2 DSL-Leitungen (DSL1 und DSL2 genannt. DSL1 hat als Gateway-IP-Adresse 192.168.20.1, DSL2 hat 192.168.20.11). Die Ports 80 und 443 sollen über DSL2 gehen und alles andere über DSL1.
Konfiguration
Zuerst müssen die Tabellen definiert werden (/etc/iproute2/rt_tables):
10 DSL1 20 DSL2
Nun müssen die (Default)-Routen für die Leitungen definiert werden:
ip route add default table 10 via 192.168.20.1 ip route add default table 20 via 192.168.20.11
Dann müssen die Regeln für die markierten Pakete gesetzt werden (man kann auch die fwmark anders setzen als in der Lookup-Tabelle!):
ip rule add fwmark 10 lookup 10 ip rule add fwmark 20 lookup 20
Man sollte die Firewallregeln für die Markierungen beim Start der FW löschen/falls welche gesetzt wurden/sind:
iptables -F PREROUTING -t mangle iptables -F OUTPUT -t mangle
Dann kann man die entsprechenden Pakete markieren:
iptables -A OUTPUT -t mangle -p tcp --dport 80 -j MARK --set-mark 20 iptables -A PREROUTING -t mangle -p tcp --dport 80 -j MARK --set-mark 20 iptables -A PREROUTING -t mangle -p tcp --dport 443 -j MARK --set-mark 20
Die OUTPUT-Regel wird für direkt vom Router ausgehende Pakete benutzt, die PREROUTING-Regeln für die Pakete, die der Router durchleitet.
Weitere Infos zum Routing mit mehreren Gateways finden sich hier (http://blog.khax.net/2009/11/28/multi-gateway-routing-with-iptables-and-iproute2/) und hier (http://www.iku-bs.de/dokumente/openvpn.html).