10,14 → 10,91 |
# Load balancing with 2 or more Internet links (experimental) |
# Weitght of routes : same --> switch between link. The lowest weight gain the priority. |
|
EXTIF="eth0" |
IPADDR1="192.168.2.10/24" |
NETMASK1=`ipcalc -m 192.168.182.2 | cut -d"=" -f2` |
GW1="192.168.2.1" |
WEIGHT1=1 |
|
echo $IPADDR1 |
echo $NETMASK1 |
echo $GW1 |
exit 0 |
|
create_new_interface() { |
if [ "$response" = "n" ] || [ "$response" = "N" ] |
then |
PRIVATE_IP_MASK="0" |
PTN='^\([01]\?[[:digit:]][[:digit:]]\?\|2[0-4][[:digit:]]\|25[0-5]\).\([01]\?[[:digit:]][[:digit:]]\?\|2[0-4][[:digit:]]\|25[0-5]\).\([01]\?[[:digit:]][[:digit:]]\?\|2[0-4][[:digit:]]\|25[0-5]\).\([01]\?[[:digit:]][[:digit:]]\?\|2[0-4][[:digit:]]\|25[0-5]\)/[012]\?[[:digit:]]$' |
until [[ $(expr $PRIVATE_IP_MASK : $PTN) -gt 0 ]] |
do |
if [ $Lang == "fr" ] |
then echo -n "Entrez l'adresse IP d'ALCASAR au format CIDR (a.b.c.d/xx) : " |
else echo -n "Enter ALCASAR IP address in CIDR format (a.b.c.d/xx) : " |
fi |
read PRIVATE_IP_MASK |
done |
else |
PRIVATE_IP_MASK=$DEFAULT_PRIVATE_IP_MASK |
fi |
else |
PRIVATE_IP_MASK=`grep PRIVATE_IP conf/etc/alcasar.conf|cut -d"=" -f2` |
rm -rf conf/etc/alcasar.conf |
fi |
# Define LAN side global parameters |
hostname $HOSTNAME |
PRIVATE_NETWORK=`/bin/ipcalc -n $PRIVATE_IP_MASK | cut -d"=" -f2` # private network address (ie.: 192.168.182.0) |
PRIVATE_NETMASK=`/bin/ipcalc -m $PRIVATE_IP_MASK | cut -d"=" -f2` # private network mask (ie.: 255.255.255.0) |
PRIVATE_IP=`echo $PRIVATE_IP_MASK | cut -d"/" -f1` # ALCASAR private ip address (consultation LAN side) |
PRIVATE_PREFIX=`/bin/ipcalc -p $PRIVATE_IP_MASK |cut -d"=" -f2` # network prefix (ie. 24) |
PRIVATE_NETWORK_MASK=$PRIVATE_NETWORK/$PRIVATE_PREFIX # ie.: 192.168.182.0/24 |
classe=$((PRIVATE_PREFIX/8)); classe_sup=`expr $classe + 1`; classe_sup_sup=`expr $classe + 2` # ie.: 2=classe B, 3=classe C |
PRIVATE_NETWORK_SHORT=`echo $PRIVATE_NETWORK | cut -d"." -f1-$classe`. # compatibility with hosts.allow et hosts.deny (ie.: 192.168.182.) |
PRIVATE_BROADCAST=`/bin/ipcalc -b $PRIVATE_NETWORK_MASK | cut -d"=" -f2` # private network broadcast (ie.: 192.168.182.255) |
private_network_ending=`echo $PRIVATE_NETWORK | cut -d"." -f$classe_sup` # last octet of LAN address |
private_broadcast_ending=`echo $PRIVATE_BROADCAST | cut -d"." -f$classe_sup` # last octet of LAN broadcast |
PRIVATE_FIRST_IP=`echo $PRIVATE_NETWORK | cut -d"." -f1-3`"."`expr $private_network_ending + 1` # First network address (ex.: 192.168.182.1) |
PRIVATE_LAST_IP=`echo $PRIVATE_BROADCAST | cut -d"." -f1-3`"."`expr $private_broadcast_ending - 1` # last network address (ex.: 192.168.182.254) |
|
} # end create_new_interface |
|
|
|
|
|
X=1 |
nbr=3 # nbr interface réseau accédant à l'internet (comprenant celle par défaut eth0) |
while [ $X -lt $nbr ] |
do |
echo $X |
cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$EXTIF:${X} |
DEVICE=$EXTIF:${X} |
BOOTPROTO=static |
IPADDR=$IPADDR1 |
NETMASK=$NETMASK-${X} |
ONBOOT=yes |
METRIC=10 |
NOZEROCONF=yes |
MII_NOT_SUPPORTED=yes |
IPV6INIT=no |
IPV6TO4INIT=no |
ACCOUNTING=no |
USERCTL=no |
EOF |
|
X=$(( $X + 1)) |
done |
|
exit 0 |
|
WEIGHT1=1 |
WEIGHT2=1 |
#WEIGHT3=3 |
|
# Définition des interfaces : |
DEV1=${1-eth0} # defaut eth0 |
DEV2=${2-eth0} # defaut eth0 mais peut être autre chose :-) |
#DEV3=${3-eth0} # defaut eth0 mais peut être autre chose :-) |
DEV2=${2-eth0:1} # defaut eth0:1 mais peut être autre chose :-) |
#DEV3=${3-eth0:2} # defaut eth0:2 mais peut être autre chose :-) |
|
# Trouver les adresses pour chaque interface |
IP1=`ifconfig $DEV1 | grep inet | awk '{ print $2 }' | awk -F: '{ print $2 }'` |
25,17 → 102,16 |
#IP3=`ifconfig $DEV3 | grep inet | awk '{ print $2 }' | awk -F: '{ print $2 }'` |
|
# Trouver les passerelles pour chaque interface { ne fonctionne pas bien avec une seule interface } --> forcer les passerelles ! |
#GW1=`route -n | grep $DEV1 | grep '^0.0.0.0' | awk '{ print $2 }'` |
#GW2=`route -n | grep $DEV2 | grep '^0.0.0.0' | awk '{ print $2 }'` |
GW1=192.168.1.1 |
GW2=192.168.1.6 |
#GW3=192.168.1.6 |
GW2=192.168.2.6 |
#GW3=192.168.3.1 |
|
echo "Acces internet depuis $DEV1: IP=$IP1 par la GW=$GW1" |
echo " et depuis $DEV2: IP=$IP2 par la GW=$GW2" |
echo "Acces internet depuis $DEV1: IP=$IP1 par la Gateway=$GW1" |
echo " et depuis $DEV2: IP=$IP2 par la Gateway=$GW2" |
#echo " et depuis $DEV3: IP=$IP3 par la GW=$GW3" |
|
# Mise en place des routes |
############################# |
## Mise en place des routes |
|
# Tester si les tables existent sinon les créer |
if [ -z "`cat /etc/iproute2/rt_tables | grep '^252'`" ] ; then |
49,7 → 125,6 |
# echo "250 rt_dev3" >> /etc/iproute2/rt_tables |
#fi |
|
|
# Tables de routage |
ip route add default via $GW1 table rt_dev1 |
ip route add default via $GW2 table rt_dev2 |
61,6 → 136,7 |
#ip rule add from $IP3 table rt_dev3 |
|
# Effacer la route par défaut existante |
ip route del default |
if [ ! -z "`ip route show table main | grep 'nexthop'`" ] ; then |
ip route del default scope global |
fi |