marca mangle en tcpdump
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
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
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
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