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).

Von "http://www.lug-wr.de/wiki/index.php/Multi_Gateway_Routing"

Diese Seite wurde bisher 6763 mal abgerufen. Diese Seite wurde zuletzt geändert um 07:57, 29. Mai 2010. Inhalt ist verfügbar unter der GNU Free Documentation License 1.2.