Linux als Router: Ich habe 3 Internetprovider mit jeweils eigenem Modem.
Provider1 , Gateway-Adresse 192.168.1.1
Verbunden mit Linux-Router eth1 /192.168.1.2
Provider2 , Gateway-Adresse 192.168.2.1
Verbunden mit Linux-Router eth2 /192.168.2.2
Provider3 , Gateway-Adresse 192.168.3.1
Verbunden mit Linux-Router eth3 /192.168.3.2
________
+------------+ /
| | |
+----------------------+ Provider 1 +--------|
__ |192.168.1.2 |192.168.1.1 | /
___/ \_ +------+-------+ +------------+ |
_/ \__ | eth1 | +------------+ /
/ \ eth0| |192.168.2.2 | | |
|Client network -----+ ROUTER eth2|--------------+ Provider 2 +------| Internet
\10.0.0.0/24 __/ | | |192.168.2.1 | |
\__ __/ | eth3 | +------------+ \
\___/ +------+-------+ +------------+ |
|192.168.3.2 | | \
+----------------------+ Provider 3 +-------|
|192.168.3.1 | |
+------------+ \________
Ich möchte die Clients im Netzwerk 10.0.0.0/24 nach Quell-IP an verschiedene Gateways weiterleiten.
Die Schnittstelle zum Client-Netzwerk ist eth0 / 10.0.0.1. Dies ist das Standard-Gateway für alle Clients.
Beispiel:
10.0.0.11 sollte an Provider1 @ eth1 weitergeleitet werden
10.0.0.12 sollte an Provider2 @ eth2 weitergeleitet werden
... und so weiter ...
Ich denke, ich muss ip route
und iptables
für SNAT verwenden, aber ich habe nicht genau herausgefunden, wie.
Hier ist das Skript, das ich bisher habe.
Die IPv4-Weiterleitung ist aktiviert.
#!/bin/bash
# flush tables
ip route flush table connection1
ip route flush table connection2
ip route flush table connection3
# add the default gateways for each table
ip route add table connection1 default via 192.168.1.1
ip route add table connection2 default via 192.168.2.1
ip route add table connection3 default via 192.168.3.1
# add some IP addresses for marking
iptables -t mangle -A PREROUTING -s 10.0.0.11 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -s 10.0.0.12 -j MARK --set-mark 2
iptables -t mangle -A PREROUTING -s 10.0.0.13 -j MARK --set-mark 3
# add the source nat rules for each outgoing interface
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 192.168.1.2
iptables -t nat -A POSTROUTING -o eth2 -j SNAT --to-source 192.168.2.2
iptables -t nat -A POSTROUTING -o eth3 -j SNAT --to-source 192.168.3.2
# link routing tables to connections (?)
ip rule add fwmark 1 table connection1
ip rule add fwmark 2 table connection2
ip rule add fwmark 3 table connection3
#default route for anything not configured above should be eth2