Tcpdump - contando pacotes UDP de saída e de entrada

2

É possível com tcpdump contar (por algum tempo de configuração) o número de pacotes UDP de saída e de entrada?

Não tenho muita experiência em tcpdump , portanto, um conselho sobre como fazer isso seria muito útil. Eu li que timeout commend é bom se eu quiser parar um processo depois de algum tempo, então eu estava pensando em parar tcpdump depois do meu tempo.

Mas como posso contar o número de pacotes de saída e de entrada e filtrar somente os pacotes UDP?

    
por Ziva 03.11.2016 / 00:09

2 respostas

1

man tcpdump fornece as informações necessárias. A página web do tcpdump também fornece uma página de manual .

Bem na DESCRIÇÃO, ela diz que quando tcpdump finalizou a captura de pacotes, ele relata as contagens de pacotes capturados, recebidos por filtro e descartados pelo kernel.

A filtragem (que é como você procura apenas por pacotes de um determinado tipo) pode ser muito mais difícil, mas a seção EXAMPLES deve fornecer uma pista suficiente de que o único filtro necessário é udp .

Assim, uma vez que você tenha descoberto o filtro correto, use tcpdump com timeout , que irá executá-lo pelo seu tempo definido, matar tcpdump e você receberá a contagem de pacotes.

timeout 20 tcpdump udp

Isto irá executar a filtragem tcpdump para o udp e irá matar o tcpdump após 20 segundos.

    
por 03.11.2016 / 00:47
1

Eu não usaria tcpdump (ou tshark ) para isso. Em vez disso, usaria iptables para contar os pacotes ao longo de um período de tempo

# 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

Você pode redefinir os contadores no início do seu período como este

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

Você pode ler os contadores no final do seu período como este

# 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"

Você pode ler um contador e redefini-lo imediatamente, fornecendo o sinalizador Z ao mesmo tempo. Por exemplo

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

Colocando bits juntos, e assumindo que você já tenha criado as cadeias extras do iptables necessárias (veja acima), você pode usar algo como isto

# 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."
    
por 03.11.2016 / 00:49