c'e' solo un modo di fare le cose: farle bene
In un precedente post avevo spiegato come è possibile fare load balance su una linux box collegata a due provider differenti con due schede di rete distinte.
Cosa succede se i gateway appartengono alla stessa sotto rete? Problema tirato fuori da Alessandro attraverso i commenti dell’articolo “iproute: load balance verso 2 gateway“.
Supponiamo che l’indirizzo di rete della nostra LAN sia 192.168.1.0/24 e che all’interno ci siano due gateway:
E’ indispensabile creare le tabelle di routing aggiuntive di iproute editando il file /etc/iproute2/rt_tables:
#
# reserved values
#
255 local
254 main
253 default
# Aggiunte
252 alice
251 micso
# Fine
0 unspec
#
# local
#
#1 inr.ruhep
Disabilitiamo l’rp_filter per l’interfaccia ethernet (nel mio caso eth0):
echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter
Abilitiamo l’ip forward (forse non serve):
echo 1 > /proc/sys/net/ipv4/ip_forward
Marchiamo i pacchetti in base al mac address di provenienza:
iptables -t mangle -I PREROUTING -m mac --mac-source 00:1c:a2:e6:dc:10 -j MARK --set-mark 1
iptables -t mangle -I PREROUTING -m mac --mac-source 00:1a:c1:36:a7:c4 -j MARK --set-mark 2
00:1c:a2:e6:dc:10: MAC router di Alice
00:1a:c1:36:a7:c4: MAC router di Micso
Creiamo il routing per i pacchetti marcati:
ip rule add fwmark 2 lookup micso
ip rule add fwmark 1 lookup alice
Adesso aggiungiamo l’ip della macchina linux su cui stiamo lavorando alle due tabelle di routing appena create:
ip rule add from 192.168.1.7 table alice
ip rule add from 192.168.1.7 table micso
Per sicurezza aggiungiamo anche l’ip locale:
ip rule add from 127.0.0.1 table micso
ip rule add from 127.0.0.1 table alice
Cancelliamo la regola di routing di default:
route del default
Tramite iproute settiamo il load balance attraverso i due gateway:
ip route add default scope global nexthop via 192.168.1.1 dev eth0 weight 1 nexthop via 192.168.1.254 dev eth0 weight 1
Eh tutti vissero felici e contenti!:)
Spero di aver dato una mano ad Alessandro e a tutti quelli che sono incappati nella medesima configurazione.
Per finire ricordo che le tabelle di routing (alice e micso), l’ip della linux box (192.168.1.7) , gli ip dei gateway (192.168.1.1 e 192.168.1.254) ed i MAC address dei 2 router (00:1c:a2:e6:dc:10 e 00:1a:c1:36:a7:c4) devono essere adattati alle proprie esegenze.
La semplicità di un sorriso @AngelikaCoco [gianlucagentile]
@froscobear molto Canada! Da te? [gianlucagentile]
18 lune e tante stelle... La #Neve è tutto! http://t.co/Zwg5fhky [gianlucagentile]
Powered by Lifestream.
| L | M | M | G | V | S | D |
|---|---|---|---|---|---|---|
| « nov | ||||||
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | ||||
7 Responses for "iproute: load balance verso 2 gateway della stessa rete"
Ciao,
si direi che per fare il load balance tra le due reti la regola con il mac address è la migliore! Hai provato a vedere anche se funziona instradando solo il traffico http o ssh ? con
iptables -t mangle -A OUTPUT -p tcp –dport 80 -j MARK –set-mark 1
iptables -t mangle -A OUTPUT -p tcp –dport 22 -j MARK –set-mark 2
io purtroppo non dispongo di un’altra linea per provare :\ Grazie per la disponibilità!
Salve a tutti, ho un macbook collegato direttamente a 2 provider differenti tramite 2 router, 2 interfacce di rete correttamente configurate, a seconda del gateway di default esco con uno o con l’altro provider. Vorrei utilizzare un gateway solo per l’http e uno per p2p però allo stesso tempo vorrei evitare di tenere acceso un server linux. Conoscete qualche soluzione per mac os? gli stessi programmi sono utilizzabili?
Grazie mille
Claudio
Ciao, devi trovare una guida simile alla mia per i sistemi BSD, Mac OS X appartiene a quella famiglia. Io purtroppo non posso aiutarti… Mi spiace!:(
Ciao, ottima guida. Vorrei chiederti un ulteriore sforzo: si tratta di realizzare un sistema che usi uno dei router in modo preferenziale ma in grado di passare al secondo in caso di caduta o (magari !) rallentamento del primo.
Grazie
Posso realizzarti tale sistema se vuoi.
Gianluca
Ciao a tutti, mi chiamo Emanuele. Oggi pomeriggio ho testato quanto su riportato ed effettivamente va tutto bene finchè entrambe le adsl sono attive… ma se solo una delle due va down, ecco che si pianta tutto… ho cercato una soluzione (che non funziona probabilmente perché lo script funziona a patto di essere su 2 sottoreti distinte) su questo sito (http://blog.taragana.com/index.php/archive/how-to-load-balancing-failover-with-dual-multi-wan-adsl-cable-connections-on-linux/) ma con esito negativo… idee?
Che dire.. Ti amo
Leave a reply