Linux: routing fra piu’ provider (multiple gateway)

Non è cosa da tutti i giorni ma è possibile che un cliente abbia 2 o piu’ connessioni internet e le voglia sfruttare contemporaneamente su una stessa macchina, come fare?

Ecco qua, farò un esempio con 2 connessioni una HDSL (eth0) e una WIFI (eth1).

Questa sarà la configurazione delle interfaccie, ovviamente senza gateway (Es: /etc/network/interfaces di Debian).

auto eth0
iface eth0 inet static
address 1.1.1.2
netmask 255.255.255.0
broadcast 1.1.1.255
#gateway 1.1.1.1
network 1.1.1.0

auto eth1
iface eth1 inet static
address 2.2.2.2
netmask 255.255.255.0
broadcast 2.2.2.255
#gateway 2.2.2.1
network 2.2.2.0

Per prima cosa nel file /etc/iproute2/rt_tables bisogna aggiungere 2 tabelle di routing:

200     hdsl
201     wifi

Ora che abbiamo le due nuove tabelle non ci resta che popolarle, passo passo i comandi necessari.

Aggiungiamo le rotte per le nostre reti:

ip route add 1.1.1.0/24 dev eth0 src 1.1.1.2 table hdsl
ip route add default via 1.1.1.1 table hdsl
ip route add 2.2.2.0/24 dev eth1 src 2.2.2.2 table wifi
ip route add default via 2.2.2.1 table wifi

Aggiungiamo le regole di utilizzo:

ip rule add from 1.1.1.2 table hdsl
ip rule add from 2.2.2.2 table wifi

Aggiungiamo la loopback:

ip route add 127.0.0.0/8 dev lo   table hdsl
ip route add 127.0.0.0/8 dev lo   table wifi

Ora possiamo aggiungere la rotta di default del sistema:

ip route add default scope global nexthop via 1.1.1.1 dev eth0 weight 1 nexthop via 2.2.2.1 dev eth1 weight 1

Il weight è stato messo volutamente a 1 in modo tale che ci sia un load balancing fra i due provider, potete variare il peso di uno o dell’altro per privilegiare una linea o l’altra.

N.B. Al riavvio del sistema questi comandi spariscono, per cui vi consiglio di metterli in un file che viene eseguito all’avvio, tipo rc.local

Spero di essere stato utile a qualcuno.

A presto!