Subversion Repositories ALCASAR

Rev

Rev 219 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log

Rev 219 Rev 221
1
#!/bin/bash
1
#!/bin/bash
2
#	$Id: alcasar-load_balancing.sh 219 2010-08-30 23:49:58Z jeremy $
2
#	$Id: alcasar-load_balancing.sh 221 2010-08-31 06:55:40Z franck $
-
 
3
 
3
# alcasar-load_balancing.sh             Load-balance internet connection over two or more local links
4
# alcasar-load_balancing.sh             Load-balance internet connection over two or more local links
4
#
5
#
5
# Version:              0.8.0 - Wed, Sep 01, 2010
6
# Version:              0.8.0 - Wed, Sep 01, 2010
6
#
7
#
7
# by Author:               BOUIJOUX Franck (3abTux) <3abtux@free.fr>
8
# by Author:               BOUIJOUX Franck (3abTux) <3abtux@free.fr>
8
# en cours d'expérimentation et d 'écriture
9
# en cours d'expérimentation et d 'écriture
9
#
10
#
10
 
11
 
11
# Définion des poids des routes
12
# Définion des poids des routes
12
WEIGHT1=1
13
WEIGHT1=1
13
WEIGHT2=1
14
WEIGHT2=1
14
WEIGHT3=3
15
#WEIGHT3=3
15
 
16
 
16
# Set devices:
17
# Set devices:
17
DEV1=${1-eth0}  # defaut eth0
18
DEV1=${1-eth0}  # defaut eth0
18
DEV2=${2-eth0}  # defaut eth0 mais peut être autre chose :-)
19
DEV2=${2-eth0}  # defaut eth0 mais peut être autre chose :-)
19
DEV3=${3-eth0}  # defaut eth0 mais peut être autre chose :-)
20
DEV3=${3-eth0}  # defaut eth0 mais peut être autre chose :-)
20
 
21
 
21
# Trouver les adresses pour chaque interface
22
# Trouver les adresses pour chaque interface
22
IP1=`ifconfig $DEV1 | grep inet | awk '{ print $2 }' | awk -F: '{ print $2 }'`
23
IP1=`ifconfig $DEV1 | grep inet | awk '{ print $2 }' | awk -F: '{ print $2 }'`
23
IP2=`ifconfig $DEV2 | grep inet | awk '{ print $2 }' | awk -F: '{ print $2 }'`
24
IP2=`ifconfig $DEV2 | grep inet | awk '{ print $2 }' | awk -F: '{ print $2 }'`
24
#IP3=`ifconfig $DEV3 | grep inet | awk '{ print $2 }' | awk -F: '{ print $2 }'`
25
#IP3=`ifconfig $DEV3 | grep inet | awk '{ print $2 }' | awk -F: '{ print $2 }'`
25
 
26
 
26
# iTrouver les passerelles pour chaque interface 
27
# iTrouver les passerelles pour chaque interface 
27
#GW1=`route -n | grep $DEV1 | grep '^0.0.0.0' | awk '{ print $2 }'`
28
#GW1=`route -n | grep $DEV1 | grep '^0.0.0.0' | awk '{ print $2 }'`
28
#GW2=`route -n | grep $DEV2 | grep '^0.0.0.0' | awk '{ print $2 }'`
29
#GW2=`route -n | grep $DEV2 | grep '^0.0.0.0' | awk '{ print $2 }'`
29
GW1=192.168.1.6
30
GW1=192.168.1.6
30
GW2=192.168.1.1
31
GW2=192.168.1.1
31
#GW3=192.168.1.6
32
#GW3=192.168.1.6
32
 
33
 
33
echo "Acces internet depuis $DEV1: IP=$IP1  par la GW=$GW1"
34
echo "Acces internet depuis $DEV1: IP=$IP1  par la GW=$GW1"
34
echo "            et depuis $DEV2: IP=$IP2  par la GW=$GW2"
35
echo "            et depuis $DEV2: IP=$IP2  par la GW=$GW2"
35
#echo "            et depuis $DEV3: IP=$IP3  par la GW=$GW3"
36
#echo "            et depuis $DEV3: IP=$IP3  par la GW=$GW3"
36
 
37
 
37
# Definition des routes 
38
# Definition des routes 
38
 
39
 
39
# Tester si les tables existent sinon les créer
40
# Tester si les tables existent sinon les créer
40
if [ -z "`cat /etc/iproute2/rt_tables | grep '^252'`" ] ; then
41
if [ -z "`cat /etc/iproute2/rt_tables | grep '^252'`" ] ; then
41
        echo "252       rt_dev1" >> /etc/iproute2/rt_tables
42
        echo "252       rt_dev1" >> /etc/iproute2/rt_tables
42
fi
43
fi
43
 
44
 
44
if [ -z "`cat /etc/iproute2/rt_tables | grep '^251'`" ] ; then
45
if [ -z "`cat /etc/iproute2/rt_tables | grep '^251'`" ] ; then
45
        echo "251       rt_dev2" >> /etc/iproute2/rt_tables
46
        echo "251       rt_dev2" >> /etc/iproute2/rt_tables
46
fi
47
fi
47
#if [ -z "`cat /etc/iproute2/rt_tables | grep '^250'`" ] ; then
48
#if [ -z "`cat /etc/iproute2/rt_tables | grep '^250'`" ] ; then
48
#       echo "250       rt_dev3" >> /etc/iproute2/rt_tables
49
#       echo "250       rt_dev3" >> /etc/iproute2/rt_tables
49
#fi
50
#fi
50
 
51
 
51
 
52
 
52
# Tables de routage
53
# Tables de routage
53
ip route add default via $GW1 table rt_dev1
54
ip route add default via $GW1 table rt_dev1
54
ip route add default via $GW2 table rt_dev2
55
ip route add default via $GW2 table rt_dev2
55
#ip route add default via $GW3 table rt_dev3
56
#ip route add default via $GW3 table rt_dev3
56
 
57
 
57
# Créatin des règles
58
# Créatin des règles
58
ip rule add from $IP1 table rt_dev1
59
ip rule add from $IP1 table rt_dev1
59
ip rule add from $IP2 table rt_dev2
60
ip rule add from $IP2 table rt_dev2
60
#ip rule add from $IP3 table rt_dev3
61
#ip rule add from $IP3 table rt_dev3
61
 
62
 
62
# Effacer la route par défaut existante
63
# Effacer la route par défaut existante
63
if [ ! -z "`ip route show table main | grep 'nexthop'`" ] ; then
64
if [ ! -z "`ip route show table main | grep 'nexthop'`" ] ; then
64
        ip route del default scope global
65
        ip route del default scope global
65
fi
66
fi
66
 
67
 
67
# Alterne les liens basés sur chauqe route
68
# Alterne les liens basés sur chauqe route
68
ip route add default scope global nexthop via $GW1 dev $DEV1 weight $WEIGHT1 \
69
ip route add default scope global nexthop via $GW1 dev $DEV1 weight $WEIGHT1 \
69
                                nexthop via $GW2 dev $DEV2 weight $WEIGHT2
70
                                nexthop via $GW2 dev $DEV2 weight $WEIGHT2
70
#                               nexthop via $GW3 dev $DEV3 weight $WEIGHT3 
71
#                               nexthop via $GW3 dev $DEV3 weight $WEIGHT3 
71
 
72
 
72
 
73
 
73
# Purge le cache
74
# Purge le cache
74
ip route flush cache
75
ip route flush cache
75
 
76
 
76
# Fin de alcasar-load_balancing.sh
77
# Fin de alcasar-load_balancing.sh
77
 
78
 
78

Generated by GNU Enscript 1.6.6.
79

Generated by GNU Enscript 1.6.6.
79
 
80
 
80
 
81
 
81
 
82