specific how detener comandos capture packet traffic packet-capture tcpdump

capture - how - tcpdump ubuntu



Capturar el tráfico entrante en tcpdump (3)

En tcpdump, ¿cómo puedo capturar todo el tráfico IP entrante destinado a mi máquina? No me importa mi tráfico local.

Debería decir:

tcpdump ip dst $MyIpAddress and not src net $myIpAddress/$myNetworkBytes

... ¿O me estoy perdiendo algo?


- Dirección Q - dirección = dirección Elija la dirección de envío / recepción para la cual se deben capturar los paquetes. Los valores posibles están in'', fuera'' y ''inout''. No esta disponible en todas las plataformas.


En Bash shell intente esto:

tcpdump -i eth0 tcp and dst host $MyIpAddress and not src net $MyNetworkAddress/$myNetworkBytes

o esta formulación equivalente:

tcpdump -i eth0 ip proto //tcp and dst host $MyIpAddress and not src net $MyNetworkAddress/$myNetworkBytes

En mi sistema esto se resuelve en algo como:

tcpdump -i eth0 tcp and dst host 10.0.0.35 and not src net 10.0.0.0/24

Si desea ver todo el tráfico a su host de destino, no solo puede hacer el tráfico del protocolo TCP:

tcpdump -i eth0 dst host $MyIpAddress and not src net $MyNetworkAddress/$myNetworkBytes

Algunas notas:

  1. Cambié $myIpAddress/$myNetworkBytes a $MyNetworkAddress/$myNetworkBytes . Esto se debe a que la intención aparente de su regla es excluir el tráfico de su red local, y la forma correcta de especificar una dirección de red es especificar la dirección IP más baja de la red (que se llama la dirección de red) / máscara de red. Si especifica una dirección diferente a la dirección más baja en el rango de una red con una máscara de red de $ myNetworkBytes, aparecerá el mensaje de error:

    tcpdump: non-network bits set in "10.0.0.3/24"

  2. En el primer ejemplo, ''tcp'' es una palabra clave en el lenguaje de expresión libpcap (man pcap-filter), mientras que en el segundo ejemplo, ''tcp'' se usa como valor de ip proto . Para indicar que el ''tcp'' en la segunda instancia es un valor y no otra palabra clave ''tcp'', necesito escapar del ''tcp'' con una doble barra invertida. Tiene que ser una doble barra invertida para que el intérprete de Bash pase una sola barra invertida al intérprete de libpcap (Bash se come la primera barra invertida, libpcap obtiene el segundo). Para reducir la confusión de doble escape, puede ser bueno entrar hábito de doble cita toda la expresión de la parte del comando:

    tcpdump -i eth0 "ip proto /tcp and dst host $MyIpAddress and not src net $MyNetworkAddress/$myNetworkBytes"

  3. Para evitar advertencias y sorpresas, es mejor utilizar el especificador de interfaz -i eth0 o la interfaz que desee. No todas las interfaces tienen necesariamente una dirección IP asignada y, sin ser específicas, es posible que vea el tráfico que no tenía intención de ver. Esto es especialmente cierto en los sistemas que tienen el administrador de red en funcionamiento, que parece tener su propia opinión acerca de qué interfaces agregar y cuándo.


Ninguno de los anteriores funciona muy bien para una caja con múltiples ips.

Esto me funcionó muy bien en un servidor DNS con muchos ips vinculados a él:

tcpdump -l -n -i pub dst port 53 and inbound

Aunque podría no funcionar en todas las versiones de tcpdump .

# tcpdump -V tcpdump version 4.1-PRE-CVS_2012_03_26 libpcap version 1.4.0