Inicio > Linux, Seguridad, tcpdump > Tcpdump avanzado: El arte de capturar y analizar el tráfico de red.

Tcpdump avanzado: El arte de capturar y analizar el tráfico de red.

sábado, 1 de octubre de 2011 Dejar un comentario Ir a comentarios

Después de este periodo de inactividad cuyo único culpable ha sido el veranito, volvemos a la carga al igual que la moda en la temporada Otoño-Invierno, con ocasión de hablar sobre un programita llamado Tcpdump.

Hablar de Tcpdump, es hablar de uno de los analizadores de paquetes de red más conocidos e importantes en lo que a línea de comandos en entornos Unix se refiere. Su  principal función es la de analizar el tráfico que circula por la red. Este programita ya viene del lejano 1987, época en la que  sus autores Van Jacobson, Craig Leres y Steven McCanne trabajaban de la mano en el Lawrence Berkeley Laboratory Network Research Group, siendo este ampliado por Andrew Tridgel..

Seguro que rápidamente lo relacionáis con el término Sniffer. Hablar de  Sniffers,  analizadores de red o analizadores de paquetes es hablar de un tipo de software que  nos va a permitir  realizar capturas de tráfico en nuestra red para posteriormente poder realizar un análisis de la información recogida.  Se trata de configurar nuestra tarjeta de red en un modo denominado promiscuo, que nos permita no solo escuchar los paquetes que vienen destinados a nosotros, sino que se trata de escuchar todo el tráfico que se genera en la red. Vamos… lo que se viene a denominar un cotilla. Poner la oreja a ver si cae algo que nos interese.

¿ Para qué sirven entonces este tipo de programas ?. Ciertamente  no es una pregunta dirigida a los administradores de redes. Eso seguro!. Para ellos se trata de herramientas indispensable en su labor diaria.

Entre sus muchas funciones podemos citar como ejemplos: Detectar problemas de red, intrusiones,  conocer y monitorizar el  tráfico que se está generando, control de ancho de banda….aunque hay quien le pueda darle otro tipo de utilidad. Si bien es cierto que hemos comentado que se trata de una herramienta que nos va a permitir escuchar el tráfico que se produce en nuestra red, quizás podamos hacer uso de ella para algo más que solucionar problemas. Lo que se viene a denominar un arma de doble filo.

Históricamente en todas aquellas redes centralizadas a través de concentradores HUB, era muy fácil colocar un Sniffer que nos permitiese escuchar todo el tráfico que se generaba en la red. ¿ Y qué nos podemos encontrar en las capturas?. Por ejemplo, muchos usuarios y contraseñas. Hay que tener claro que son muchos los protocolos inseguros por naturaleza en los que  los usuarios / contraseñas viajaban en texto claro. Protocolos como  SmtpPop3, Ftp, Http, Telnet…. Pueden ser solo algunos ejemplos. Como casi siempre sucede en el mundo IT, la seguridad no suele ser la fase más importante a la hora de abarcar un proyecto.

Ya que hemos mencionado a nuestros amigos los HUB, vamos a aprovechar para comprobar las  posibilidades de colocar un Sniffer ante la desaparición de estos y la aparición de los temibles Switches.

Al referenciar a los HUBs, tenemos que citar términos como los temidos dominios de colisión, que no son más que segmentos físicos en los que los dispositivos se tienen que pegar para transmitir la información. Lo que pasa es que dos dispositivos pueden transmitir información al mismo tiempo produciéndose las temidas colisiones y por ende un menor rendimiento de la red. Queda claro que a medida que incorporamos más dispositivos las probabilidades de que se produzca alguna colisión tiende a ser mayor.

Luego están los dominio de difusión o Broadcast que lo forman los equipos que comparten direccionamiento lógico en un mismo segmento. Se envían y reciben mensajes Broadcast. Seguro que alguna vez hemos oído el término “tormenta de Broadcast”, que no es más que inundar la red con estos mensajitos, que hacen que la red se congestione  perdiendo rendimiento.

Ahora vamos a ver el porque de ese cambio de HUBs a Switches. En el caso de los HUB tenemos un gran dominio de colisión que se soluciona con los Switches. En estos existe un dominio de colisión por puerto (micro segmentación), con lo que conseguimos una gran mejora en el rendimiento. Pero tenemos un dominio de Broadcast, que también podemos controlar a través de las Vlan. También sabemos que los Routers separan los dominios de difusión. Con lo cual antaño en muchos casos simplemente, cambiando el HUB por el Switch conseguíamos aumentar el rendimiento de nuestra red. A partir de ese momento los Switches han ido evolucionando permitiéndonos trabajar en capa 3 o superiores, lo que viene a llamarse multicapa.

Y porque esta charla, porque antes era muy fácil colocar un equipo con una tarjeta de red en modo promiscuo y escuchar  todo lo que la red nos decía. Ahora con los Switches a priori ya no vamos a poder escuchar tantas cosas. Tenemos que colocar el Sniffer en algún sitio por el que pase todo el tráfico que nos interese. Esto lo podemos hacer con las nuevas capacidades de los switches como el Port Mirroring (Puertos espejo), Electrónica por la que pase todo el tráfico (Firewalls, TAP, Apliance… aunque si tenemos técnicas como el envenenamiento de ARP para que este pase por nosotros.

Como siempre en estos casos las herramientas pueden ser utilizadas para hacer el bien o el mal. Lo importante es conocer la topología de la red para saber donde debemos colocar a nuestro querido Sniffer. Debemos buscar un punto en el cual poder capturar todo el tráfico. Esto último que acabo de conectar es muy importante ya que si nos encontramos un buen punto veremos que únicamente veremos nuestro tráfico, Broadcast, DHCP-ARP …

Después de esta tremenda Brasaaaaa… vamos a hablar de lo que nos interesa. TCPDUMP!!!.

Si preguntamos a nuestro sistema Debian por Tcpdump, nos dirá:

#apt-cache search -f tcpdump

Package: tcpdump
 Maintainer: Romain Francoise 
 Description: A powerful tool for network monitoring and data acquisition
 This program allows you to dump the traffic on a network. tcpdump
 is able to examine IPv4, ICMPv4, IPv6, ICMPv6, UDP, TCP, SNMP, AFS
 BGP, RIP, PIM, DVMRP, IGMP, SMB, OSPF, NFS and many other packet
 types.
 .
 It can be used to print out the headers of packets on a network
 interface, filter packets that match a certain expression. You can
 use this tool to track down network problems, to detect "ping attacks"
 or to monitor network activities.
 Homepage: http://www.tcpdump.org/
 Tag: admin::monitoring, interface::commandline, network::scanner, protocol::{ip,ipv6,ssl}, role::program, scope::utility, use::monitor

Pues esoooo!. Lo que ya hemos comentado. Es un programita que se apoya en la librería libcap para la captura de paquetes.

Como siempre hemos dicho que el movimiento se demuestra andando, vamos a dejarnos de tanta palabrería y a funcionar.

En vez de definir todas las opciones, expresiones y posibilidades de la herramienta, las iremos viendo a través de ejemplos que siempre suele quedar mas clarito.

Vamos a ver sobre que interfaces podemos empezar a escuchar tráfico:

#tcpdump -D
1.eth0
 2.wlan0
 3.any (Pseudo-device that captures on all interfaces)
 4.lo

Ahora seleccionamos la interface sobre la que lanzar la captura

#tcpdump –i wlan0 o #tcpdump –i 2
La respuesta va ser una línea del tipo
 20:50:43.975606 IP portatil.34296 > fx-in-f106.1e100.net.www: Flags [S], seq 2560890220, win 5840, options [mss 1460,sackOK,TS val 1445388 ecr 0,nop, wscale 6], length 0

Para detener la captura de paquetes, presionaremos  CTRL+C

Vamos a ver la sintaxis a través de un ejemplo sencillo.

#tcpdump –n –i wlan0
20:50:43.975606 IP 10.200.X.X.34296 > 74.125.39.106.80: Flags [S], seq
 2560890220, win 5840, options [mss 1460,sackOK,TS val 1445388 ecr 0,nop, wscale 6],
 length 0

El formato general de la línea mostrada es el siguiente:

timestamp src > dst: flags data-seqno ack window urgent options
  • Timestamp (20:50:43.975606) nos da la fecha en la que se produce el evento. Vemos que tenemos fracciones de segundo, ya que puede haber varios paquetes por segundo
  • Src (10.200.X.X.34296 ) y dst(74.125.39.106.80) son las IP host de Origen-destino junto con su puerto.
    > Dirección del flujo de datos.
  • Flags [S]  – Combinación de todas las posibles banderas que ya conocemos S (SYN), F (FIN), P (PUSH), R  (RST),  U  (URG),  W(ECN  CWR), E (ECN-Echo) or `.’ (ACK), or `none’ if no flags are set.
  • Data-seqno (seq 2560890220) Describe el numero de secuencia de la porción de datos
  • Ack – Numero de secuencia del próximo byte que se espera recibir en la conexión.
  • Window  (win 5840) Informa del tamaño de ventana.
  • Urg indica que hay información que hay que procesar como urgente en el paquete.
  • Options (options [mss 1460,sackOK,TS val 1445388 ecr 0,nop,wscale 6], )– Opciones Tcp que han de ir entre corchetes .

Es importante comentar que los datos de src, dst y Flags han de estar siempre presentes. El resto de los campos dependerán en función del contenido de las cabeceras del protocolo TCP.

Ahora que ya conocemos el formato, vamos a ir viendo las opciones de Tcpdump a la hora de realizar la captura:

-n: No realiza resolución de nombre

#tcpdump –n –i wlan0
# 21:14:49.044773 IP 10.207.X.X.36837 > 74.125.39.105.80: Flags [P.], seq 3278661926:3278662801, ack 173863466, win 721, options [nop,nop,TS val 1806655 ecr1295483293], length 875

-A: escribe cada paquete en formato ASCII (puede resultar útil para páginas web)

#tcpdump -n -A -i wlan0 host
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
 listening on wlan0, link-type EN10MB (Ethernet), capture size 65535 bytes
 21:16:41.909178 IP 10.207.X.X.36837 > 74.125.39.105.80: Flags [P.], seq 3278663838:3278664713, ack 173879623, win 1002, options [nop,nop,TS val 1834871 ecr 1295511797], length 875
 E...(.@.@...
 ..fJ}'i...P.lp.
 ]1G...........
 ...wM7..GET / HTTP/1.1
 Host: www.google.es
 User-Agent: Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0 Iceweasel/5.0
 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
 Accept-Language: en-us,en;q=0.5
 Accept-Encoding: gzip, deflate
 …….

-c  X: Se detiene después de recoger X paquetes

#tcpdump -n -A -i wlan0 -c 1
 21:19:33.355015 IP 10.207.X.X.54292 > 74.125.39.147.80: Flags [S], seq 3904402581, win 5840, options [mss 1460,sackOK,TS val 1877733 ecr 0,nop,wscale 6], length 0
 1 packets captured

-e: imprime encabezados a nivel de enlace

 #tcpdump -e -i wlan0 –c1
 21:20:21.772273 00:22:fb:9a:xx:xx > 00:18:39:ae:8x:a2, ethertype IPv4 (0x0800), length 941: 10.207.x.x.54292 > 74.125.39.147.80: Flags [P.], seq 3904405615:3904406490, ack 2703453103, win 721, options [nop,nop,TS val 1889837 ecr 945894816], length 875 1 packets captured

-p: pone la tarjeta en modo no promiscuo

Con ifconfig –a vemos si la tarjeta se encuentra en modo promiscuo

-q: imprime menos información por lo que las líneas son más cortas

 #tcpdump -q -i wlan0 –c1
 21:30:38.616870 IP portatil.local.57740 > fx-in-f99.1e100.net.www: tcp 0
 1 packets captured

-r: lee los paquetes guardados con la opción –w

-S: imprime valores absolutos de números de secuencia

-s: tamaño (por defecto 65535 bytes)

-t que no escriba el timestamp

#tcpdump -t -q -i wlan0 -c1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
 IP portatil.local.42355 > fx-in-f147.1e100.net.www: tcp 5

-tttt vamos a ver fecha / hora

#tcpdump -tttt -q -i wlan0 -c1
listening on wlan0, link-type EN10MB (Ethernet), capture size 65535 bytes
 2011-09-28 21:38:35.350830 IP pedlap.local.42355 > fx-in-f147.1e100.net.www: tcp 5

-w: fichero escribe un fichero con la salida

 #tcpdump -tttt -q -i wlan0 -c1 -w fichero.cap

-G:  Rota el fichero especificado con la opcion -w segundos

-v: información de salida, –vv mas …, –vvv y mas …

-x:. escribe la información de cada paquete en Hex menos cabeceras a nivel de enlace.

gateway host: imprimir tráfico a través de host gateway  Internet.

#tcpdump -x -q -i wlan0 -c1
21:41:04.794378 IP portatil.local.42895 > fx-in-f103.1e100.net.www: tcp 0
 0x0000:  4510 003c acda 4000 4006 3ab8 0acf d666
 0x0010:  4a7d 2767 a78f 0050 50f4 86a0 0000 0000
 0x0020:  a002 16d0 3423 0000 0204 05b4 0402 080a
 0x0030:  0006 2a7a 0000 0000 0103 0306

-xx: escribe la información de cada paquete en Hex menos cabeceras a nivel de enlace.

-X:. escribe la información de cada paquete en Hex y Decimal

-XX:  escribe la información de cada paquete en Hex y Decimal

Vamos ahora a por las EXPRESIONES

Jugar con esllas nos van a permitir filtrar resultados.

host: Filtrar el tráfico por Host.

#tcpdump -n -i wlan0 -c1 host www.google.es
21:47:26.704685 IP 10.207.X.X.53749 > 74.125.39.106.80: Flags [S], seq 3929171104, win 5840, options [mss 1460,sackOK,TS val 499568 ecr 0,nop,wscale 6], length 0

Otro ejemplito en este sentido: #tcpdump ip host www.google.es and not www.bing.com

port: mostrar solo tráfico de un determinado puerto.

#tcpdump -n -q -i wlan0 -n port 80
 21:50:06.758861 IP 10.207.X.X.53749 > 74.125.39.106.80: tcp 5
 21:50:06.880112 IP 74.125.X.X.80 > 10.207.214.102.53749: tcp 0

dst host host: Tráfico con un determinado host como destino.

# tcpdump -i wlan0 dst host www.google.es

src host host: Trafico con un determinado host como origen.

#tcpdump -i wlan0 src host 10.20.1.90

Si queremos jugar con las direcciones MAC al igual que con los host.

  • ether dst ehost
  • ether src ehost
  • ether host ehost
#tcpdump -i wlan0 ether dst 00:22:fb:9a:57:72

Si ahora queremos recoger información de una determinada red:

  • dst net net
  • src net net
  • net net
  • net net mask netmask
#tcpdump -i wlan0 net 10.207.X.X/24

Si queremos trabajar con puertos:

  • dst port port
  • src port port
#tcpdump -i wlan0 port 22 or 23

not:  Negamos una expresión.

#tcpdump -i wlan0 "tcp src port 80" and not host 1.1.1.1

ip proto protocol: Especificar un determinado protocolo.

#tcpdump -i wlan0 ip proto 6 = tcpdump tcp -i wlan0 (tcp , udp, icmp) = #tcpdump -i wlan0 ip proto \\tcp
#cat /etc/protocols | grep tcp
tcp     6       TCP             # transmission control protocol

Podemos jugar con los tamaños (bytes)

  • less leghnt
  • greather length
#tcpdump -i wlan0 greater 20

Y muchas mas expresiones que os animo a consultar en el man tcpdump, pero creo que nos hacemos una idea ¿verdad ?.

ip6 proto protocol, ip6 protochain protocol, ip protochain protocol
 ip broadcast, ether multicast, ip multicast, ip6 multicast, ether proto protocol
 decnet src host, decnet dst host, decnet host, ip, ip6, arp, rarp, atalk, aarp
 decnet. iso, stp, ipx, netbeui, vlan vlan_id, tcp , udp, icmp, clnp, esis, isis

Tambien podemos combinar expresiones:

  • Negacion : ! o «not»
  • And : && o «and»
  • Or : || o «or»

Ejemplos:

# tcpdump -i wlan0 ip and not net 1.1.1.1
 #tcpdump host 10.200.1.1 and \( 1.1.1.1 or 2.2.2.2 \)
 #tcpdump -i wlan0 "tcp src port 80"
 #tcpdump -n -i wlan0 "not (tcp port ssh and host 1.1.1.1 and host 2.2.2.2)"

#tcpdump -i wlan0 ‘((tcp) and (port 80) and ((!dst host www.google.es) && (!dst host www.bing.com)))’

Ahora vamos a complicarlo un poquito más y realizar filtrados con el que se muestra en el siguiente ejemplo:

Ejemplo de 3-way handshake protocol: vamos a recoger solo los paquetes SYN.

El diagrama de una cabecera TCP sin opciones seria tal que así.

0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Source Port          |       Destination Port        |Octeto 0 -3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Sequence Number                        |Octeto 4 -7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Acknowledgment Number                      |Octeto 8 - 11
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Data |       |C|E|U|A|P|R|S|F|                               |
| Offset|  Res. |W|C|R|C|S|S|Y|I|            Window             |Octeto 12 -15
|       |       |R|E|G|K|H|T|N|N|                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Checksum            |         Urgent Pointer        |Octeto 16 - 19
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Si nos fijamos los Flags se encuentran entre el octeto 12 y el 15. Exactamente en los bits contenidos en el octeto 13

0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Data |       |C|E|U|A|P|R|S|F|                               |
| Offset|  Res. |W|C|R|C|S|S|Y|I|            Window             |Octeto 12 -15
|       |       |R|E|G|K|H|T|N|N|                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|       |       |Octeto 13      |                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Si ahora nos fijamos en el octeto 13

+-+-+-+-+-+-+-+-+
|C|E|U|A|P|R|S|F|
|W|C|R|C|S|S|Y|I|
|R|E|G|K|H|T|N|N|
+-+-+-+-+-+-+-+-+
 7 6 5 4 3 2 1 0

Si recibimos un paquete con el bit SYN activado:

+-+-+-+-+-+-+-+-+
|0|0|0|0|0|0|1|0|
+-+-+-+-+-+-+-+-+
 7 6 5 4 3 2 1 0

Asumiendo que el octeto es un integer sin signo, en Binario sería igual a 00000010 que en notación decimal corresponde al número 2. Esto lo podemos expresar como tcp[13] == 2.

#tcpdump -i wlan0 'tcp[13] ==2'

tcp[13] lo podemos reemplazar con tcp[tcpflags]. Los posibles valores serian :

  • tcp-fin
  • tcp-syn
  • tcp-rst
  • tcp-push
  • tcp-act
  • tcp-urg

Con lo que podemos expresarlo como  :

#tcpdump ‘tcp[tcpflags] & (tcp-syn) != 0)

Mostrar paquetes de inicio y fin (SYN y FIN activados) que no pertenezcan a una determinada red:

#tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net 10.204.X.X'

Siguiendo el mismo razonamiento si queremos que filtrar paquetes SYN y ACK, entonces tcp[13] == 18

Si queremos recoger únicamente paquetes con SYN o SYN+ACK entonces aplicamos máscaras:

00010010:SYN-ACK + 00000010:Mascara (2 en decimal) = 00000010 : Resultado(2 en decimal)
#tcpdump -i wlan0 'tcp[13] & 2 = 2'

También podríamos filtrar los paquetes lanzados contra un determinado puerto :

proto[x:y] x=byte inicio e y numero de bytes a recoger.
#tcpdump -i wlan0 'tcp[0:2] =81'

Ademas podemos utilizar los siguientes operadores:

Operators : >, <, >=, <=, =, !=

Pudiendo transformar el filtro anterior:

#tcpdump -i wlan0 'tcp[0:2] >21 && tcp[0:2] < 25''

Con lo visto podemos jugar con otros protocolos como ICMP.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |     Code      |          Checksum             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                             unused                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |      Internet Header + 64 bits of Original Data Datagram      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • 0 Echo Reply
  • 3 Destination Unreachable
  • 4 Source Quench
  • 5 Redirect
  • 8 Echo
  • 11 Time Exceeded
  • 12 Parameter Problem
  • 13 Timestamp
  • 14 Timestamp Reply
  • 15 Information Request
  • 16 Information Reply

Por ejemplo filtrar un Echo Request:

#tcpdump -i wlan0 'icmp[0]=8'

Podemos obtener las IP que nos estan haciendo escaneos…

#tcpdump -lni wlan0 'icmp and (icmp[0] = 8)' | tee salida.txt #cut -d " " -f 3 salida.txt

Con lo visto en este articulillo creo que tenemos una visión detallada del alcance y la potencia de esta pequeña gran herramienta.

Sed buenos y hasta la próxima compañeros!!.

Enviar a un amigo: Share this page via Email
Categories: Linux, Seguridad, tcpdump Tags:
  1. ait
    jueves, 6 de octubre de 2011 a las 17:53 | #1

    ¿Te dan algún premio si te lo lees todo?

    • jueves, 6 de octubre de 2011 a las 20:41 | #2

      Ja,ja. Si, y un diploma. Yo creo que le tendrían que dar un premio al que lo escribe, aunque sea por pesado.

  2. ceragus
    viernes, 16 de marzo de 2012 a las 14:43 | #3

    Muy buen articulillo como dice Iurlek, me sirvio bastante.
    Todo bien explicado y con ejemplos didacticos.
    Gracias… seguiré investigando ….

    No hay que hacer caso a los que no entienden nada y se pone a leer.

  3. martes, 20 de marzo de 2012 a las 19:43 | #4

    Merci. Mientras el cuerpo aguante seguiremos publicando.

  4. kroket
    domingo, 20 de octubre de 2013 a las 20:09 | #5

    Hola, ¿sabes si se podria lanzar a la vez sobre varias interfaces? por ejemplo, vamos a recibir un trafico pero no sabemos sobre que interfaz llegara…

  5. martes, 8 de abril de 2014 a las 00:59 | #6

    Muy buenos los ejemplos! Va a favoritos 🙂

  1. domingo, 2 de octubre de 2011 a las 04:27 | #1
  2. lunes, 5 de agosto de 2013 a las 19:18 | #2
  3. jueves, 30 de enero de 2014 a las 22:35 | #3