[eside-ghost] iproute2 y la de siempre... router con 2 salidas a internet

Fernando de Urien y Muñiz zefe en rigel.deusto.es
Vie Oct 3 13:52:48 CEST 2008


Holas,

Pues de esto se ha hablado bastante pero me da que soy un poco torpe.
Ando aquí configurando un router al que quiero ponerle 2 salidas a Internet.
Mi objetivo es sacar el tráfico de ciertas máquinas (con lo cual no creo que
tenga que andar marcando los paquetes con mangle y tal…) por una salida
mientras que mantengo por la estándar lo demás. No pretendo hacer balanceos
de ningún tipo ;-) así que en principio debería ser más sencillo.

Tengo 2 estrategias posibles:
a)	
       Utilizar la tabla main para el tráfico general y una auxiliar para
ese tráfico especial.
       En la tabla main borro la segunda ruta por defecto
       En la tabla auxiliar añado las rutas para acceder a las redes
internas y al isp
       En la misma tabla auxiliar añado una regla del tipo:
          ip rule add from 192.168.0.0/24 table Taux

b)
	Dejar la tabla main como está eliminando las 2 rutas por defecto
(por si las moscas)
      Recrear en 2 tablas todo el tema. 
	Meter en la tabla que me interesa el tráfico procedente de una
subred o máquina.

Estoy intentando con la opción B aunque como no me rula pues… estoy abierto
a otras opiniones


El caso es que cuando meto tráfico procedente de cierta dirección (ya no
hablo de subred si no de algo tipo : ip rule add from 192.168.0.33 table
Taux)
na, que ahí se me pierde el tráfico… 	¿hay alguna forma de mirar qué está
pasando? Algún tipo de log o algo en plan rápido...

Si planto el script... ¿igual alguno le puede echar un ojo? (lo voy a
plantar de toas toas :-p)

Mil gracias gente!

Zefe

P.D. mi skrí, ozu mi arma!

#################################################################
#!/bin/bash
DEV=eth3
IPCABLE=`ip address show dev $DEV | grep inet |grep -v inet6 |cut -d " " -f
6 |cut -d "/" -f1`
PREFCABLE=`route |grep $DEV | grep -v default |cut -d " " -f 1`
MASKCABLE=`ip address show dev $DEV |grep inet |grep -v inet6| cut -d "/" -f
2 | cut -d " " -f 1`
REDCABLE=`echo "$PREFCABLE/$MASKCABLE"`
GWCABLE=`route |grep eth3 |grep default | cut -d " " -f 10`

##Con esto capturo los datos de la interfaz ya que es ip dinámica (de
momento) es guarrete pero funciona

echo "Borrar rutas por defecto asociadas a los interfaces externos"

route del default
route del default

echo borrado OK

echo " "
echo Inicializar rutas básicas de cada tabla

ip route add 192.168.100.0/24 dev eth2 src 192.168.100.253 table Tadsl
ip route add default via 192.168.100.254 table Tadsl

ip route add $REDCABLE dev $DEV src $IPCABLE table Tcable
ip route add default via $GWCABLE table Tcable


echo inicializado ok



echo " " 
echo ruta en principio por defecto para la tabla main

ip route add default via 192.168.100.254

echo ruta por defecto ok

#Lo que genere el propio router que se rute por donde debe


echo " "
echo "tráfico generado internamente desde el router sale por el interfaz
adecuado"
ip rule add from 192.168.100.253 table Tadsl
ip rule add from $IPCABLE table Tcable

echo generación interna ok


#Asegurarnos de que todo lo que llegue por un interfaz, se responda por el
mismo independientemente de a que tabla de rutas se acceda
#En realidad son los interfaces internos de las redes locales que conecta

###para la tabla 1

ip route add 192.168.0.0/24     dev eth0 table Tadsl
ip route add 192.168.101.0/24     dev eth1 table Tadsl
ip route add 192.168.98.0/24     dev eth4 table Tadsl

##con este tengo dudas porque es un alias e iproute no me deja especificar
alias como dev así que lo pongo en el interfaz real
ip route add 10.211.22.0/24     dev eth1 table Tadsl

ip route add $REDCABLE     dev $DEV table Tadsl
ip route add 127.0.0.0/8 dev lo   table Tadsl


###para la tabla 2

ip route add 192.168.0.0/24     dev eth0 table Tcable
ip route add 192.168.101.0/24     dev eth1 table Tcable
ip route add 192.168.98.0/24     dev eth4 table Tcable

##con este tengo dudas porque es un alias e iproute no me deja especificar
alias como dev así que lo pongo en el interfaz real
ip route add 10.211.22.0/24     dev eth1 table Tcable

ip route add 192.168.100.0/24     dev eth2 table Tcable
ip route add 127.0.0.0/8 dev lo   table Tcable




###### Rutas VPN
### Me gustaría especificar ciertas rutas estáticas pero no me tira ni pa
dios, tampoco es urgente

#ip route add 10.66.3.0/24 table Tadsl via 192.168.0.17 scope link
#ip route add 10.66.3.0/24 table Tcable via 192.168.0.17 scope link 



### Reglas de acceso
### Especifico en qué tabla meto el tráfico procedente de una ip concreta.

ip rule add from 192.168.0.33 table Tcable




Más información sobre la lista de distribución eside-ghost