#!/bin/bash # Abreviaciones IP=/sbin/ip PING=/bin/ping KILLALL=/bin/killall # Interface externa 1 IFE1=eth1 IPE1=172.16.224.3 NWE1=172.16.224.0 NME1=24 BRDE1=172.16.224.255 GWE1=172.16.224.1 # Interface externa 2 IFE2=eth2 IPE2=172.16.5.7 NWE2=172.16.5.0 NME2=24 BRDE2=172.16.5.255 GWE2=172.16.5.2 # Interface local IFI=eth0 IPI1=10.0.0.112 NWI1=10.0.0.0 NMI1=8 BRDI1=10.255.255.255 IPI2=200.16.24.200 NWI2=200.16.24.128 NMI2=25 BRDI2=200.16.24.255 # Red de toda la UNC NWUNC=200.16.16.0 NMUNC=20 start() { echo "Configurando interfaz de loopback..." $IP link set lo up > /dev/null 2>&1 $IP addr add 127.0.0.1/8 brd + dev lo > /dev/null 2>&1 echo "Configurando primera interfaz externa..." $IP link set $IFE1 up $IP addr add $IPE1/$NME1 brd $BRDE1 dev $IFE1 echo "Configurando segunda interfaz externa..." $IP link set $IFE2 up $IP addr add $IPE2/$NME2 brd $BRDE2 dev $IFE2 echo "Configurando interfaz interna..." $IP link set $IFI up $IP addr add $IPI1/$NMI1 brd $BRDI1 dev $IFI #Esta interface tine 2 ips $IP addr add $IPI2/$NMI2 brd $BRDI2 dev $IFI # echo "Estableciendo reglas de ruteo..." $IP rule add prio 50 table main #Le damos la prioridad mas alta a la tabla main $IP rule add prio 100 to $NWUNC/$NMUNC table redUnc $IP rule add prio 201 from $NWE1/$NME1 table redUnc $IP rule add prio 202 from $NWE2/$NME2 table adsl $IP rule add prio 220 table loadBal echo "Estableciendo tablas de ruteo..." $IP route add default via $GWE1 dev $IFE1 src $IPE1 proto static table redUnc $IP route append prohibit default table redUnc metric 1 proto static $IP route add default via $GWE2 dev $IFE2 src $IPE2 proto static table adsl $IP route append prohibit default table adsl metric 1 proto static $IP route add default table loadBal proto static \ nexthop via $GWE1 dev $IFE1 weight 1 \ nexthop via $GWE2 dev $IFE2 weight 1 /etc/rc.d/rc.gwdetect $GWE1 $GWE2 & #Lo ejecutamos en background } stop() { echo "Parando interfaz de loopback..." $IP addr flush dev lo > /dev/null 2>&1 $IP link set lo down echo "Parando primera interfaz externa..." $IP addr flush dev $IFE1 > /dev/null 2>&1 $IP link set $IFE1 down echo "Parando segunda interfaz externa..." $IP addr flush dev $IFE2 > /dev/null 2>&1 $IP link set $IFE2 down echo "Parando interfaz interna..." $IP addr flush dev $IFI > /dev/null 2>&1 $IP link set $IFI down echo "Limpiando tablas de ruteo..." $IP route flush table redUnc > /dev/null 2>&1 $IP route flush table adsl > /dev/null 2>&1 $IP route flush table cache > /dev/null 2>&1 $IP route flush table loadBal > /dev/null 2>&1 echo "Limpiando reglas de ruteo..." #Borramos todas las reglas de ruteo que agregamos en la funcion start $IP rule del prio 50 table main > /dev/null 2>&1 $IP rule del prio 100 to $NWUNC/$NMUNC table redUnc > /dev/null 2>&1 $IP rule del prio 201 from $NWE1/$NME1 table redUnc > /dev/null 2>&1 $IP rule del prio 202 from $NWE2/$NME2 table adsl > /dev/null 2>&1 $IP rule del prio 220 table loadBal > /dev/null 2>&1 #Matamos el script que manda pings $KILLALL rc.gwdetect > /dev/null 2>&1 } case $1 in start) start ;; stop) stop ;; restart) stop start ;; *) echo "Uso: { start | stop }" ;; esac