#! /bin/bash # # Script de double connexion ADSL load balancée par Bibi 02/07/04 # ############################# # Déclaration des variables # ############################# # # Définition du chemin d'iptables # IPTABLES="/sbin/iptables" # # Prise en compte de l'adresse fournie par 9telecom et de sa passerelle, ainsi que Free # NEUF_IP=`ifconfig | grep inet | grep P- | cut -d : -f 2 | cut -d P -f 1` NEUF_GW=`ifconfig | grep inet | grep P- | cut -d : -f 3 | cut -d M -f 1` FREE_IP="82.226.217.65" FREE_GW="82.226.217.254" ################################### # Mise en place du routage avancé # ################################### # # Lancement du client dhcp pour la connexion Freebox # if [ -n "`ifconfig | grep eth1`" ]; then echo "L'interface eth1 est montee" else ifconfig eth1 up rm -f /etc/dhcpc/dhcpcd-eth1.pid /usr/local/sbin/dhcpcd eth1 fi # # Ajout des tables de routage spécifiques si elles n'existent pas déjà # if [ -n "`ip rule list | grep 82`" ]; then echo "Les tables de retour sont déjà crées" else ip rule add from $NEUF_IP lookup 1 ip rule add from $FREE_IP lookup 2 fi # # Création des marques par iptables pour les critères de routage si elles n'xistent pas déjà # if [ -n "`$IPTABLES -t mangle -L | grep MARK`" ]; then echo "Les marques iptables sont déjà créées" else $IPTABLES -t mangle -A PREROUTING -i eth0 -p tcp --dport 80 -j MARK --set-mark 80 $IPTABLES -t mangle -A PREROUTING -i eth0 -p tcp --dport 21 -j MARK --set-mark 21 $IPTABLES -t mangle -A PREROUTING -i eth0 -p tcp --dport 443 -j MARK --set-mark 443 $IPTABLES -t mangle -A PREROUTING -i eth0 -p tcp --dport 6112 -j MARK --set-mark 6112 fi # # Mise en place des routes statiques pour les deux connexions # Prise en compte des serveurs DNS des FAI qui n'autorisent que leurs ranges d'adresses IP # ainsi que les serveurs POP et SMTP # # Les DNS Free ip route add 212.27.32.176 via $FREE_GW table main ip route add 212.27.32.177 via $FREE_GW table main # Les DNS 9telecom ip route add 212.30.96.108 via $NEUF_GW table main ip route add 213.203.124.146 via $NEUF_GW table main # Le POP 9telecom ip route add 212.30.113.205 via $NEUF_GW table main # Le SMTP 9telecom ip route add 62.62.156.10 via $NEUF_GW table main ip route add 62.62.156.27 via $NEUF_GW table main ip route add 62.62.156.28 via $NEUF_GW table main # Le SMTP Free ip route add 213.228.0.44 via $FREE_GW table main ip route add 213.228.0.176 via $FREE_GW table main ip route add 213.228.0.169 via $FREE_GW table main ip route add 213.228.0.62 via $FREE_GW table main # Les routes statiques vers le réseau local (je sais pas à quoi elles servent, mais la doc dit de le faire...) ip route add 192.168.0.0/24 via 192.168.0.254 table 1 ip route add 192.168.0.0/24 via 192.168.0.254 table 2 # # Priorisation des flux HTTP et FTP par Free pour les downloads # On ne créé les tables que si elles ne sont pas présentes # if [ -n "`ip rule list | grep http`" ]; then echo "Les tables marquées sont déjà crées" else ip rule add fwmark 80 table http ip rule add fwmark 443 table https ip rule add fwmark 21 table ftp ip rule add fwmark 6112 table war3 ip route add default via $FREE_GW table ftp ip route add default via $FREE_GW table http ip route add default via $FREE_GW table https ip route add default via $NEUF_GW table war3 fi # # retrait des routes par défaut ajoutées automatiquement par les providers # ip route del default ip route del default ip route flush cache # # Setup load balancing # ip route add default equalize nexthop via $NEUF_GW dev ppp0 weight 1 nexthop via $FREE_GW dev eth1 weight 1