marca mangle en tcpdump

2008-04-17 Por tema Aldrin Martoq
On Thu, Apr 17, 2008 at 12:06 AM, Miguel Oyarzo O. [EMAIL PROTECTED] wrote:
  No puedo encontrar documentacion que me diga qué octeto o posicion
  de la cabecera tcp afecta mangle.
  Intento hacer tcpdump -n -i iface tcp[octeto] == marca
  para ver en tiempo real por que interfaz
  se intentan ir unos paquetes con ciertas marcas que puse
  si hay algun parametro especifico mejor (en iptables 1.4/debian) no lo
 puedo encontrar

Te refieres a iptables?

Si es asi, depende de que hace tu regla. Puedes mostrarla? Aca un ejemplo:
# tcpdump -nvi eth0  icmp  sleep 1  ping -c 1 192.168.0.1
06:50:36.062751 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto
ICMP (1), length 84) 192.168.0.6  192.168.0.1: ICMP echo request, id
25401, seq 1, length 64
# iptables -t mangle -A OUTPUT -p icmp -d 192.168.0.1 -j TTL --ttl-set 1
# tcpdump -nvi eth0  icmp  sleep 1  ping -c 1 192.168.0.1
06:51:11.205309 IP (tos 0x0, ttl 1, id 0, offset 0, flags [DF], proto
ICMP (1), length 84) 192.168.0.6  192.168.0.1: ICMP echo request, id
15417, seq 1, length 64

Ojo que mangle es una tabla, relacionado con la estructura interna de
netfilter (aka iptables). Es decir, mangle no modifica los paquetes,
sino quien hace eso son los targets (-j X es un target, en este
caso TTL). Ademas, hay targets que modifican estados internos de
netfilter que nunca salen al exterior. Ejemplo, -j CONNMARK, el cual
modifica estados internos (una tabla de conexiones), cosa que nunca
veras cuando estan en la red (como en un tcpdump)...

...y netfilter modifica los paquetes en varias partes si asi lo
deseas. Mangle es una tabla extra para mantener el filtrado (aka
firewall) y connection tracking (nat) con reglas faciles de describir,
que era uno de los problemas de ipchains...

BTW, que estas haciendo ???

-- 
Aldrin Martoq
Episodio 002 (Lunes 24 Marzo)!
http://aldrinvideopodcast.podshow.com/


marca mangle en tcpdump

2008-04-17 Por tema Miguel Oyarzo O.
At 07:07 17/04/2008, Aldrin Martoq wrote:
On Thu, Apr 17, 2008 at 12:06 AM, Miguel Oyarzo O. [EMAIL PROTECTED] wrote:
   No puedo encontrar documentacion que me diga qué octeto o posicion
   de la cabecera tcp afecta mangle.
   Intento hacer tcpdump -n -i iface tcp[octeto] == marca
   para ver en tiempo real por que interfaz
   se intentan ir unos paquetes con ciertas marcas que puse
   si hay algun parametro especifico mejor (en iptables 1.4/debian) no lo
  puedo encontrar

Te refieres a iptables?

No... me referia a un comando en tcpdump mas arriba... lamentablemente 
escribi /iptables 1.4/debian/
(quizas eso confundio a varios q saben la respuesta)

Si es asi, depende de que hace tu regla. Puedes mostrarla? Aca un ejemplo:
# tcpdump -nvi eth0  icmp  sleep 1  ping -c 1 192.168.0.1
06:50:36.062751 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto
ICMP (1), length 84) 192.168.0.6  192.168.0.1: ICMP echo request, id
25401, seq 1, length 64
# iptables -t mangle -A OUTPUT -p icmp -d 192.168.0.1 -j TTL --ttl-set 1
# tcpdump -nvi eth0  icmp  sleep 1  ping -c 1 192.168.0.1
06:51:11.205309 IP (tos 0x0, ttl 1, id 0, offset 0, flags [DF], proto
ICMP (1), length 84) 192.168.0.6  192.168.0.1: ICMP echo request, id
15417, seq 1, length 64

Mira, es algo similar a lo que muetras arriba, pero con
-j MARK --set-mark X

Presisamente esa marca intento encontrar la cabecera tcp

Ojo que mangle es una tabla, relacionado con la estructura interna de
netfilter (aka iptables).

gracias, tengo perfectamente claro como trabaja mangle.. aqui
tenemos complejas estructuras de ruteo y balanceo mediante su uso.

Es decir, mangle no modifica los paquetes,
sino quien hace eso son los targets (-j X es un target, en este
caso TTL).

Exacto...  (solo trate de ahorrar chachara, pero mejor sere mas preciso en 
las descripciones),

por ejemplo aqui tenemos desde hace años configuraciones de este tipo:

iptables -t mangle -A PREROUTING  -s 10.0.15.0/24 -j MARK --set-mark 5
iptables -t mangle -A PREROUTING  -s 10.0.16.0/24 -j MARK --set-mark 6
..
..
..
iptables -t mangle -A PREROUTING  -s 10.0.17.0/24 -j MARK --set-mark 20


Segun su marca el trafico de estas redes privadas usan una u otra trabla
de ruta (la maquina tiene muchas tablas de rutas simultaneas, cada una con su
gateway default diferente).
Entre otras cosas a veces se marca un protocolo detrerminado para
que tenga una tratamiento especial (prioriodad, velocidad, siga una ruta 
distinta, etc)

Ahora busco una forma para que  tcpdump o etheral me muesten
el trafico, pero gracias a una marca especifica.

Mi primer intento fue localizar dicha marca en alguno de los octetos
de la cabecera TCP, pero no estoy seguro si encontrare esa marca
alli y/o no se cual octeto y posicion tiene.

  tcpdump -n -i iface tcp[octeto] == marca   (eso es lo que busco)

Conoces exactamente que parte de la cabecera afectaría
iptables -t mangle -A PREROUTING  -s 10.0.15.0/24 -j MARK --set-mark 5  ?

antes que se tome la desicion de Routing?

BTW, que estas haciendo ???

Busco ver en tiempo real  la marca asignada a cada paquete que atraviesa
el Router . SI lo logro podre depurar mas rapidamente varias cosas hechas aqui

gracias por la respuesta

--
Aldrin Martoq
Episodio 002 (Lunes 24 Marzo)!
http://aldrinvideopodcast.podshow.com/



marca mangle en tcpdump

2008-04-17 Por tema Aldrin Martoq
On Thu, Apr 17, 2008 at 1:09 PM, Miguel Oyarzo O. [EMAIL PROTECTED] wrote:
 At 07:07 17/04/2008, Aldrin Martoq wrote:
  On Thu, Apr 17, 2008 at 12:06 AM, Miguel Oyarzo O. [EMAIL PROTECTED] 
  wrote:
No puedo encontrar documentacion que me diga qué octeto o posicion
de la cabecera tcp afecta mangle.
Intento hacer tcpdump -n -i iface tcp[octeto] == marca
para ver en tiempo real por que interfaz
se intentan ir unos paquetes con ciertas marcas que puse
si hay algun parametro especifico mejor (en iptables 1.4/debian) no lo
   puedo encontrar
  No... me referia a un comando en tcpdump mas arriba... lamentablemente
 escribi /iptables 1.4/debian/
  (quizas eso confundio a varios q saben la respuesta)
  Si es asi, depende de que hace tu regla. Puedes mostrarla?
  Mira, es algo similar a lo que muetras arriba, pero con
  -j MARK --set-mark X
  Presisamente esa marca intento encontrar la cabecera tcp
[...]
  Mi primer intento fue localizar dicha marca en alguno de los octetos
  de la cabecera TCP, pero no estoy seguro si encontrare esa marca
  alli y/o no se cual octeto y posicion tiene.
   tcpdump -n -i iface tcp[octeto] == marca   (eso es lo que busco)
  Conoces exactamente que parte de la cabecera afectaría
  iptables -t mangle -A PREROUTING  -s 10.0.15.0/24 -j MARK --set-mark 5  ?
  antes que se tome la desicion de Routing?

Ok. Como trate de explicar, hay algunas marcas que no son almacenadas
en el paquete de red, sino que cambian estados internos del kernel. En
particular, el target -J MARK hace eso: cambiar un campo en el struct
skbuff [/lib/modules/$(uname -r)/build/include/linux/skbuff.h]. El
skbuff es la estructura interna en la que se encapsula un paquete de
red mientras viaja dentro de linux, una vez que sale a la tarjeta de
red, esos campos se pierden y por eso no vez la marca en ninguna parte
con tcpdump. Monisticamente:

  Net--Kernel--   Net
+Packet+ +--skbuff--+ +Packet+
|*IP   | |*conntrack| |*IP   |
|*port | |*mark | |*port |
|*proto| (1) |etc...| (2) |*proto|
|data..| | +Packet+ | |data..|
+--+ | |*IP   | | +--+
 | |*port | |
 | |*proto| |
 | |data..| |
 | +--+ |
 +--+


Ahora, libpcap no lee exactamente el paquete desde la red sino que se
lo pide al kernel. Estuve viendo el man de pcap(3) y el contenido de
skbuff no lo veo, por lo que creo que no lo puedes obtener sin alguna
ayuda extra. Me puedo equivocar en esto, asi que revisa el codigo de
ambas bestias y ahi tendrias una solucion. Otra solucion es que lo
modifiques tu mismo, he cambiado partes de netfilter/iptables para
cosas como esta pero siempre como juego ;)

[...]

  BTW, que estas haciendo ???
  Busco ver en tiempo real  la marca asignada a cada paquete que atraviesa
  el Router . SI lo logro podre depurar mas rapidamente varias cosas hechas
 aqui


Hmm Lo unico que se me ocurre es que hagas logging del paquete en
base a la marca, con -j LOG o -j ULOG en iptables  bastante pobre
lo que ofrezco.


-- 
Aldrin Martoq
Episodio 002 (Lunes 24 Marzo)!
http://aldrinvideopodcast.podshow.com/


marca mangle en tcpdump

2008-04-17 Por tema Victor Hugo dos Santos
On Thu, Apr 17, 2008 at 1:09 PM, Miguel Oyarzo O. [EMAIL PROTECTED] wrote:
 At 07:07 17/04/2008, Aldrin Martoq wrote:

[...]

  Ahora busco una forma para que  tcpdump o etheral me muesten
  el trafico, pero gracias a una marca especifica.

  Mi primer intento fue localizar dicha marca en alguno de los octetos
  de la cabecera TCP, pero no estoy seguro si encontrare esa marca
  alli y/o no se cual octeto y posicion tiene.

   tcpdump -n -i iface tcp[octeto] == marca   (eso es lo que busco)

  Conoces exactamente que parte de la cabecera afectaría
  iptables -t mangle -A PREROUTING  -s 10.0.15.0/24 -j MARK --set-mark 5  ?

mmm...mmm.. creo que no modifica la cabecera TCP !!!
y esta marca queda armazenada localmente !!!

por aca no tengo ninguna maquina que use la tabla mangle.. pero
podrias revisar en /proc/net !!!

suerte

-- 
-- 
Victor Hugo dos Santos
Linux Counter #224399
participe y ayude en el FLISOL 2008
http://www.flisol.cl y http://www.flisol.net