2012-04-24 19 views
18

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

Debo decir:

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

... o estoy perdiendo algo?

+0

¿Qué es "tráfico IP en la icoming"? Los paquetes para transmitir la dirección también están llegando. – harper

Respuesta

20

En intérprete de comandos 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 con algo como:

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

Si quieres ver todo el tráfico hacia su host de destino, no solo el tráfico del protocolo TCP que podría hacer:

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

Algunas notas:

  1. me cambiaron $myIpAddress/$myNetworkBytes-$MyNetworkAddress/$myNetworkBytes. Esto se debe a que la intención aparente de su regla es excluir el tráfico de su red local, y el correct way para especificar una dirección de red es especificar la dirección IP más baja (que se llama la dirección de red)/máscara de red. Si especifica cualquier dirección que no sea la dirección más baja en el rango de una red con una máscara de red de $ myNetworkBytes, por lo que recibirá 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 diagonal inversa. Tiene que ser una doble barra invertida para que el intérprete de Bash pase una sola barra invertida al intérprete libpcap (Bash se come la primera barra invertida, libpcap obtiene la segunda). Para reducir la confusión de escape doble, podría ser bueno entrar en el costumbre de citar doble toda la parte de expresión de la orden:

    tcpdump -i eth0 "ip proto \tcp and dst host $MyIpAddress and not src net $MyNetworkAddress/$myNetworkBytes" 
    
  3. para evitar las advertencias y sorpresas, es mejor usar el especificador interfaz -i eth0 o cualquier interfaz que desea. No todas las interfaces necesariamente tienen una dirección IP asignada y, sin ser específica, es posible que vea tráfico que no tenía la intención de ver. Esto es especialmente cierto en los sistemas que tienen el administrador de red en ejecución, que parece tener su propia opinión sobre qué interfaces agregar y cuándo.

+0

Hola, gracias por tu respuesta. También me interesa el tráfico UDP, es por eso que no puse 'tcp' en el filtro anterior. Estoy seguro de que es algo trivial, pero ¿podría aclarar por qué tengo que poner mi dirección de red en lugar de mi dirección IP? ¿No debería tener el mismo efecto, una vez que especifico el número de bytes de red? –

+0

Respuesta editada al comentario de la dirección –

10

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

Esto funcionó muy bien para mí en un servidor DNS con muchos ips ligados a ella:

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

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

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

apreciar la palabra clave 'inbound' – bbonev

0

-Q dirección --direction = dirección Elige enviar/recibir dirección dirección para la cual deben ser capturados paquetes. Los valores posibles son in', out 'y' inout '. No disponible en todas las plataformas.

+0

¡Agradable! No sabía acerca de esta opción. –

Cuestiones relacionadas