É possível tcpdump
contar (por algum tempo de configuração) o número de pacotes UDP de saída e entrada?
Não tenho muita experiência em tcpdump
, então um conselho sobre como fazer isso seria muito útil. Eu li que um timeout
elogio é bom se eu quiser interromper um processo depois de um determinado tempo, então 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 apenas os pacotes UDP?
Responder1
Eu não usaria tcpdump
(ou tshark
) para isso. Em vez disso, eu usaria iptables
para contar os pacotes durante 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 zerar os contadores no início da menstruação assim
# Reset the counters
#
iptables -Z udp_in
iptables -Z udp_out
Você pode ler os contadores no final do seu período assim
# 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 Z
sinalizador ao mesmo tempo. Por exemplo
packets_in=$(iptables -nvLZ udp_in | awk '/all/{print $1}')
Juntando os bits e assumindo que você já criou as cadeias extras de iptables necessárias (veja acima), você pode usar algo assim
# 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."
Responder2
man tcpdump
fornece as informações que você precisa. A página da web tcpdump também fornece umpágina de manual.
Logo na DESCRIÇÃO diz que ao tcpdump
finalizar a captura dos pacotes, ele reporta contagens de pacotes capturados, recebidos pelo filtro e descartados pelo kernel.
A filtragem (que é como você procura apenas pacotes de um determinado tipo) pode ser muito mais difícil, mas a seção EXEMPLOS deve fornecer uma pista suficiente de que o único filtro necessário é udp
o seu exemplo.
Então, depois de descobrir o filtro correto, use tcpdump
with timeout
which irá executá-lo pelo tempo definido, kill tcpdump
, e você obterá a contagem de pacotes.
timeout 20 tcpdump udp
Isso executará a filtragem tcpdump para udp e eliminará o tcpdump após 20 segundos.