# [IPTABLES] Pequeña duda con iptables (Abierto)

## ZaPa

Hola.

Estoy realizando un par de pruebas con iptables pero tengo un problema al intentar marcar los paquetes de bajada de mi red.

(los que se envian desde un cliente de la red hacia el enrutador)  Cliente ->>>> Router

Tengo la siguiente regla de iptables, para por ejemplo, marcar tráfico icmp:

```

iptables -t mangle -A PREROUTING -i eth0 -p icmp -j MARK --set-mark 2

iptables -t mangle -A PREROUTING -i eth0 -p icmp -j RETURN

```

Lo que ocurre es que no marca ningún paquete,hago ping hacia el gateway y nada de nada no marca los paquetes.

Entonces, pienso (no estoy 100% seguro) que no marca ningún paquete porque con PREROUTING y la interfáz de entrada eth0, lo único que podré marcar son los paquetes de subida de la red,cierto?

Ya que, el tráfico de bajada, aunque lo genere un PC de la red, realmente ese tráfico de bajada sale del propio enrutador:

 seria asi Router---->Cliente

osea, deberia de utilizar la cadena POSTROUTING con la interfáz de salida -o eth0.

¿Esto es asi lo que he explicado más arriba?

Si no es asi.. ¿Deberia utilizar FORWARD para conseguir marcar estos paquetes?

Saludos.

----------

## ZaPa

Con esta regla no me marca los paquetes icmp (siendo eth0 la tarjeta de red interna):

```

iptables -t mangle -A POSTROUTING -o eth0 -p icmp -j MARK --set-mark 3

iptables -t mangle -A POSTROUTING -o eth0 -p icmp -j RETURN

```

Hago un ping desde un cliente de la red hasta mi gateway y no marca los paquetes. 

Tampoco con esta otra (para marcar paquetes de ssh)

```
iptables -t mangle -A POSTROUTING -o eth0 -p tcp --sport 22 -j MARK --set-mark 3

iptables -t mangle -A POSTROUTING -o eth0 -p tcp -j RETURN

```

Como dijé arriba, primero lo plantee con PREROUTING y tampoco marcaba los paquetes.... 

¿Que es lo que hago mal?

Un saludo.

----------

## luispa

La opción "-j MARK" marca el paquete durante la vida del mismo internamente para ser utilizado por otras reglas de iptables o por iproute2 para tomar decisiones de routing por ejemplo. 

Si lo que quieres es modificar el TOS/DSCP del paquete tienes que usar el target DSCP, que en este caso suele utilizarse para tomar decisiones de QoS extremo-extremo, de modo que el resto de routers del camino sepan a qué atenerse. Un ejemplo, si queremos que todo el tráfico http (puerto 80 tcp) se marque como Expedite Forwarding, haríamos lo siguiente:

```
iptables -t mangle -A FORWARD -p tcp --dport 80 -j DSCP --set-dscp-class EF
```

No me quedó muy claro la dirección del tráfico con tu explicación, pero ten en cuenta que una vez que tu tráfico salga hacia internet te encontrarás con que la mayoría (por no decir todos) de los Operadores "limpian" el DSCP de sus clientes en entrada, vamos que no te sirve para nada. Por lo menos era así hace unos años, llevo tiempo sin probarlo.

Luis

----------

