tabla mangle y rutas multiples

Miguel Oyarzo admin en aim.cl
Mar Ene 10 12:52:36 CLST 2006


At 10:42 10-01-2006, Jens Hardings wrote:
>Miguel Oyarzo wrote:
>
>># regla por defecto (va primero en mangle?)
>>iptables -A PREROUTING -i eth0 -t mangle -j MARK --set-mark 2
>>iptables -A PREROUTING -i eth2 -t mangle -j MARK --set-mark 2
>>iptables -A PREROUTING -i eth3 -t mangle -j MARK --set-mark 2
>># regla especifica
>>iptables -A PREROUTING -t mangle -i eth0 -p tcp --dport 80   -j MARK --set-mark 1
>>
>>si subo la especifica primero, entonces el paquete no se marca directamente.
>>
>>la salida de # iptables -L -n -v -t mangle   igual me muestra las reglas default arriba.
>>
>>Alguien puede confirmar esto? porque no funciona como la tabla filter?
>>  
>>
>
>Se supone que la marca es una sola, así que la última regla que calza
>elimina la(s) marca(s) anterior(es).

mmm... no creo que funcione asi:

la primera coincidencia descarta el resto de las reglas.
osea, el paquete entra y a la primera regla que concuerde se aplica la accion.
por lo menos la tabla filter funciona de esa manera.


> Al parecer no se puede entregar una máscara para marcar solamente algunos bits del paquete (que parece es lo
>que intentas hacer), pero lo que sí se puede hacer es marcar la conexión
>(utilizando máscara para modificar sólo algunos bits) y luego se puede
>aplicar la marca de la conexión al paquete.

En realdidad no he intentando marcar conexiones.
Lo que hago es marcar paquetes y redirijir los paquetes con dicha marca a una ruta especifica.
No encontre ningun inconveniente en hacer eso y hasta aqui el trafico 
hace exactamente lo que deseo (dependiendo del origen lo mando por uno de los 3 gateways)

>Se puede jugar un poco con reglas como estas, eliminando o modificando
>el orden de las tres primeras:
>
>iptables -A PREROUTING -i eth0 -j MARK --set-mark 1
>iptables -A PREROUTING -i eth0 -j MARK --set-mark 2
>iptables -A PREROUTING -i eth0 -j MARK --set-mark 3
>
>iptables -A FORWARD -m mark --mark 1/1 -j LOG --log-prefix "mark 1: "
>iptables -A FORWARD -m mark --mark 1 -j LOG --log-prefix "mark solo 1: "
>iptables -A FORWARD -m mark --mark 2/2 -j LOG --log-prefix "mark 2: "
>iptables -A FORWARD -m mark --mark 2 -j LOG --log-prefix "mark solo 2: "

Jen, no entendi tu ejemplo. Parece q no me explique bien antes.

La idea es asociar la marca a una tabla de ruteo especifica-

Ej:
ip rule add fwmark 2 table tabla1-enlace-hiperveloz
ip rule add fwmark 1 table tabla2-enlace-medio
ip rule add fwmark 3 table tabla3-enlace-lento

Logicamente q ya estan creadas las tablas y le he indicado al kernel que el trafico q
sale por una interfaz regresa por la misma via.

Eso funciona sin problemas aqui.. solo que  no entiendo por que en la tabla mangle
las reglas debo ingresarlas  al revez respecto de la tabla filter.

Alguna idea?

Saludos
Miguel Oyarzo
INALAMBRICA
Punta Arenas








Más información sobre la lista de distribución Linux