Tcpdump: contando paquetes UDP salientes y entrantes

Tcpdump: contando paquetes UDP salientes y entrantes

¿Es posible tcpdumpcontar (durante un tiempo de configuración) el número de paquetes UDP salientes y entrantes?

No tengo mucha experiencia en tcpdump, por lo que un consejo sobre cómo hacerlo sería muy útil. Leí que un timeoutelogio es bueno si quiero detener un proceso después de un tiempo determinado, así que estaba pensando en detenerlo tcpdumpdespués de mi tiempo.

Pero, ¿cómo puedo contar la cantidad de paquetes entrantes y salientes y filtrar solo paquetes UDP?

Respuesta1

No usaría tcpdump(o tshark) para esto. En lugar de eso, solía iptablescontar los paquetes durante un período de tiempo.

# Prepare two sets of counters and set up the rules
#
iptables -N udp_in
iptables -N udp_out
iptables -A udp_in
iptables -A udp_out

iptables -A OUTPUT --protocol udp -j udp_out
iptables -A INPUT --protocol udp -j udp_in

Puedes restablecer los contadores al comienzo de tu período de esta manera

# Reset the counters
#
iptables -Z udp_in
iptables -Z udp_out

Puedes leer los contadores al final de tu período así

# Look at the counters
#
packets_in=$(iptables -nvL udp_in | awk '/all/{print $1}')
packets_out=$(iptables -nvL udp_out | awk '/all/{print $1}')
echo "in=$packets_in, out=$packets_out"

Puede leer un contador y restablecerlo inmediatamente proporcionando la Zbandera al mismo tiempo. Por ejemplo

packets_in=$(iptables -nvLZ udp_in | awk '/all/{print $1}')

Juntando bits y asumiendo que ya ha creado las cadenas de iptables adicionales necesarias (ver arriba), puede usar algo como esto

# Reset the counters
#
iptables -Z udp_in
iptables -Z udp_out

# Wait 10 seconds
#
period=10
sleep "$period"

# Look at the counters
#
packets_in=$(iptables -nvL udp_in | awk '/all/{print $1}')
packets_out=$(iptables -nvL udp_out | awk '/all/{print $1}')

# Report the results
#
echo "During the last $period seconds we saw $packets_in UDP packet(s) in and $packets_out UDP packet(s) out."

Respuesta2

man tcpdumpproporciona la información que necesita. La página web tcpdump también proporciona unapágina de manual.

Justo en la DESCRIPCIÓN dice que cuando tcpdumptermina de capturar paquetes, informa los recuentos de paquetes capturados, recibidos por filtro y descartados por kernel.

El filtrado (que es la forma en que solo busca paquetes de un determinado tipo) puede ser mucho más difícil, pero la sección EJEMPLOS debería dar una pista suficiente de que el único filtro que necesita es udppara su ejemplo.

Entonces, una vez que haya descubierto el filtro correcto, utilícelo tcpdumpcon timeoutel cual lo ejecutará durante el tiempo definido, elimine tcpdumpy obtendrá el recuento de paquetes.

timeout 20 tcpdump udp

Esto ejecutará el filtrado de tcpdump para udp y eliminará tcpdump después de 20 segundos.

información relacionada