Tcpdump - подсчет исходящих и входящих UDP-пакетов

Tcpdump - подсчет исходящих и входящих UDP-пакетов

Можно ли tcpdumpподсчитать (за некоторое время) количество исходящих и входящих UDP-пакетов?

У меня нет большого опыта в tcpdump, поэтому совет, как это сделать, был бы очень полезен. Я читал, что timeoutcommend хорош, если я хочу остановить процесс по истечении определенного времени, поэтому я думал просто остановиться tcpdumpпосле своего времени.

Но как мне подсчитать количество исходящих и входящих пакетов и отфильтровать только UDP-пакеты?

решение1

Я бы не использовал tcpdump(или tshark) для этого. Вместо этого я бы использовал iptablesдля подсчета пакетов за определенный период времени

# 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

Вы можете сбросить счетчики в начале менструации следующим образом:

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

Вы можете прочитать показания счетчиков в конце менструации следующим образом:

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

Вы можете считать счетчик и немедленно сбросить его, Zодновременно предоставив флаг. Например

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

Собрав все воедино и предположив, что вы уже создали необходимые дополнительные цепочки iptables (см. выше), вы можете использовать что-то вроде этого

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

решение2

man tcpdumpпредоставляет информацию, которая вам нужна. Веб-страница tcpdump также предоставляетстраница руководства.

Прямо в ОПИСАНИИ говорится, что после tcpdumpзавершения захвата пакетов он сообщает количество захваченных пакетов, полученных фильтром и отброшенных ядром.

Фильтрация (то есть поиск пакетов только определенного типа) может оказаться гораздо более сложной задачей, но раздел ПРИМЕРЫ должен дать достаточно информации о том, что вам нужен только фильтр udpдля вашего примера.

Итак, как только вы определились с правильным фильтром, используйте tcpdumpкоманду timeout, которая запустит его на указанное вами время, kill tcpdump, и вы получите количество пакетов.

timeout 20 tcpdump udp

Это запустит фильтрацию tcpdump для udp и завершит работу tcpdump через 20 секунд.

Связанный контент