All pastes #401701 Raw Edit

Untitled

public text v1 · immutable
·published 2007-03-19 14:22 UTC
rendered paste body
#!/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