Aggregare la banda di due connessioni DSL non è impossibile. Occorre solo un po' di preparazione e buona documentazione.
Prima di tutto passiamo a descrivere il layout della soluzione di cui si ha bisogno.
Quì è possibile visualizzare uno schema in ASCII dell'ottimo LARTC (Linux Advanced Routing & Traffic Control) che consiglio comunque di consultare.
Ora, non ci soffermeremo come i link dei due provider vengano connessi al nostro router linux (router ethernet, wifi, ecc…), l'importante è che questi sia dotato di 3 schede di rete: una per il primo provider, una per il secondo provider, la terza per la rete LAN da servire con la doppia connessione.
Le prime due vanno lasciate NON CONFIGURATE nel file /etc/network/interfaces, mentre la terza si può configurare a piacimento (con un ip statico è una buona idea)
Per comodità daremo per scontato che tu stia utilizzando una distribuzione Debian GNU/Linux 5.0 Lenny
La prima cosa da fare è scaricare i sorgenti del kernel e patcharli (si, perchè il kernel linux effettua chaching delle rotte quindi senza patch, scordatevi di suddividere il traffico!):
#apt-get install linux-source-2.6.26
#cd /usr/src/linux-source-2.6.26
#wget http://www.ssi.bg/~ja/patch-2.6.26-ja1.diff
#patch -p1 –dry-run < patch-2.6.26-ja1.diff
se è andato tutto bene e non abbiamo errori,
#patch -p1 < patch-2.6.26-ja1.diff
#cp /boot/config-2.6.26-2-686 /usr/src/linux-source-2.6.26/.config
#make-kpkg –initrd linux_image modules_image
a questo punto dovresti trovarti con un bellissimo (beh, si fa per dire) file che andrai ad installare:
#dpkg -i linux-image-2.6.26_2.6.26-10.00.Custom_i386.deb
Reboottino di rito per ripartire con il nuovo kernel patchato
Ok, a questo punto cominciamo un attimo a definire quali sono le reti, le interfacce, gli ip, i gateway e tutto il resto dell'ambaradan:
eth0 è collegata al provider 1 eth1 è collegata al provider 2 eth2 è collegata alla lan
192.168.0.1 è il gateway del primo provider 192.168.2.1 è il gateway del secondo provider 192.168.20.254 è l'ip della eth2 (cioè il gateway della lan)
Inseriamo nel file /etc/iproute2/rt_tables le seguenti righe:
1 201
2 202
3 221
Ecco uno scriptino che lanciato, dovrebbe abilitarvi al bilanciamento del traffico:
#!/bin/bash
# CONFIGURATION
IP=/sbin/ip
PING=/bin/ping
# LINK 1
EXTIF1=eth0
EXTIP1=192.168.0.254
EXTM1=24
EXTGW1=192.168.0.1
# LINK 2
EXTIF2=eth1
EXTIP2=192.168.2.254
EXTM2=24
EXTGW2=192.168.2.1
#CONFIGURING INTERFACES
ifconfig $EXTIF1 $EXTIP1/$EXTM1
ifconfig $EXTIF2 $EXTIP2/$EXTM2
#ROUTING PART
# removing old rules and routes
echo “removing old rules”
${IP} rule del prio 50 table main
${IP} rule del prio 201 from ${EXTIP1}/${EXTM1} table 201
${IP} rule del prio 202 from ${EXTIP2}/${EXTM2} table 202
${IP} rule del prio 221 table 221
echo “flushing tables”
${IP} route flush table 201
${IP} route flush table 202
${IP} route flush table 221
echo “removing tables”
${IP} route del table 201
${IP} route del table 202
${IP} route del table 221
# setting new rules
echo “Setting new routing rules”
# main table w/o default gateway here
${IP} rule add prio 50 table main
${IP} route del default table main
# identified routes here
${IP} rule add prio 201 from ${EXTIP1}/${EXTM1} table 201
${IP} rule add prio 202 from ${EXTIP2}/${EXTM2} table 202
${IP} route add default via ${EXTGW1} dev ${EXTIF1} src ${EXTIP1} proto static table 201
${IP} route append prohibit default table 201 metric 1 proto static
${IP} route add default via ${EXTGW2} dev ${EXTIF2} src ${EXTIP2} proto static table 202
${IP} route append prohibit default table 202 metric 1 proto static
# mutipath
${IP} rule add prio 221 table 221
${IP} route add default table 221 proto static \
nexthop via ${EXTGW1} dev ${EXTIF1} weight 1\
nexthop via ${EXTGW2} dev ${EXTIF2} weight 2
${IP} route flush cache
while : ; do
${PING} -c 1 ${EXTGW1}
${PING} -c 1 ${EXTGW2}
sleep 10
done