Subversion Repositories ALCASAR

Rev

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

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

Generated by GNU Enscript 1.6.6.
80

Generated by GNU Enscript 1.6.6.
81
 
81
 
82
 
82
 
83
 
83