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!

4 Replies to “Linux: routing fra piu’ provider (multiple gateway)”

  1. Surfed with Firefox 3.6 Firefox 3.6 on GNU/Linux GNU/Linux
    Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6

    Ciao Omar,
    sono giunto alla lettura di questo articolo partendo da una ricerca che mi portasse alla soluzione di ciò che vorrei mettere in pratica io…forse tu potresti aiutarmi.
    Mettendo da parte quella che può essere la sua utilità, ecco cosa vorrei fare:

    Sul mio pc ho 2 adattatori di rete, uno wireless (wlan0) e uno ethernet (eth0). Entrambi, e qui la differenza, hanno lo stesso next hop router.

    Vorrei fare in modo che il kernel inoltrasse i pacchetti generati da alcune applicazioni (es. p2p) verso una interfaccia (es. eth0) e altri, o tutti gli altri, verso l’altra interfaccia (wlan0).

    Ad allettarmi molto è il comando “ip rule add from”, ma sembra che dopo il from ci vada obbligatoriamente un indirizzo ip….invece farebbe al caso mio il numero di una porta!

    Suggerimenti?

    Ti ringrazio in anticipo! Ciao.

  2. Surfed with Google Chrome 5.0.318.0 Google Chrome 5.0.318.0 on Mac OS X  10.5.8 Mac OS X 10.5.8
    Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.9 (KHTML, like Gecko) Chrome/5.0.318.0 Safari/532.9

    Ciao,
    non saprei veramente..forse con qualche regola di iptables potresti fare in modo che per alcune porte esca dall’indirizzo sulla wlan0 e per altre dall’indirizzo sulla eth0, però poi non so come si comporterebbe il routing.

  3. Surfed with Firefox 3.5.10 Firefox 3.5.10 on GNU/Linux GNU/Linux
    Mozilla/5.0 (X11; U; Linux i686; it; rv:1.9.1.10) Gecko/20100504 Firefox/3.5.10

    Ti ringrazio…..con il tuo aiuto ho risolto un problema che non mi permetteva di utilizzare parte dei domini sotto una rete e parte sotto un’altra ed ero costretto ad utilizzare 2 macchine virtuali separate. Ora è tutto risolto e lavoriamo con 2 shdsl bilanciate (weight 1).
    shado :-D

  4. Surfed with Google Chrome 5.0.375.99 Google Chrome 5.0.375.99 on Windows 7 Windows 7
    Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4

    @shado
    Felice di essere stato utile :-)