#!/bin/bash
#
IP=/sbin/ip
PING=/bin/ping
KILLALL=/bin/killall
source </etc/varconfrouter>
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..."
#Las reglas se van revisando de la prioridad mas alta a la mas baja. Cuando se encuentra
#conincidencia se aplica tal regla (0=prioridad mas alta 255=priridad mas baja)
$IP rule add prio 1 table main #Le damos la prioridad mas alta a la tabla main
$IP rule add prio 2 to $NWUNC/$NMUNC table redUnc
$IP rule add prio 3 to $IPTEST1 table redUnc
$IP rule add prio 4 to $IPTEST2 table redUnc
$IP rule add prio 5 to $IPTEST3 table redUnc
$IP rule add prio 100 from $NWE1/$NME1 table redUnc #segun el IP de origen (IP nateado, no el
$IP rule add prio 101 from $NWE2/$NME2 table adsl #privado) se usa la tabla redUnc o Adsl
$IP rule add prio 200 table redUnc #1era vez cuando la conexion no tiene ip nateado de origen
#se usa tabla loadBal
echo "Estableciendo tablas de ruteo..."
#Los conexiones de mi LAN que se les asigno como dgw a GWE1 usan esta tabla
$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
#Los conexiones de mi LAN que se les asigno como dgw a GWE2 usan esta tabla
$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
}
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..."
#Borramos todas las rutas que le agregamos a las tablas
#La main no la toco porque supuestamente las rutas de entrega directa (que son las unicas
#que tengo ahi), se borran automaticamente cuando se da de baja la interface correspondiente
$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 1 table main #Le damos la prioridad mas alta a la tabla main
$IP rule del prio 2 to $NWUNC/$NMUNC table redUnc > /dev/null 2>&1
$IP rule del prio 3 to $IPTEST1 table redUnc > /dev/null 2>&1
$IP rule del prio 4 to $IPTEST2 table redUnc > /dev/null 2>&1
$IP rule del prio 5 to $IPTEST3 table redUnc > /dev/null 2>&1
$IP rule del prio 100 from $NWE1/$NME1 table redUnc > /dev/null 2>&1
$IP rule del prio 101 from $NWE2/$NME2 table adsl > /dev/null 2>&1
$IP rule del prio 200 table redUnc > /dev/null 2>&1
}
case $1 in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Uso: { start | stop }"
;;
esac