Linux come router: ho 3 provider Internet, ognuno con il proprio modem.
Provider1 , che è l'indirizzo gateway 192.168.1.1
Connesso al router linux eth1 /192.168.1.2
Provider2 , indirizzo gateway 192.168.2.1
Connesso al router linux eth2 /192.168.2.2
Provider3 , indirizzo gateway 192.168.3.1
Connesso al router linux 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 | |
+------------+ \________
Vorrei instradare i client nella rete 10.0.0.0/24 tramite IP di origine verso diversi gateway.
L'interfaccia per la rete client è eth0 /10.0.0.1, che è il gateway predefinito per tutti i client.
Ad esempio:
10.0.0.11 deve essere indirizzato a Provider1 @ eth1
10.0.0.12 deve essere indirizzato a Provider2 @ eth2
... e così via ...
Penso di dover usare ip route
e iptables
per SNAT, ma non ho capito esattamente come.
Ecco la sceneggiatura che ho finora.
l'inoltro ipv4 è abilitato.
#!/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