Tcpdump - 나가고 들어오는 UDP 패킷 계산

Tcpdump - 나가고 들어오는 UDP 패킷 계산

tcpdump나가고 들어오는 UDP 패킷의 수를 (일부 설정 시간 동안) 계산할 수 있습니까 ?

나는 에 대한 경험이 많지 않으므로 tcpdump이를 수행하는 방법에 대한 조언이 매우 도움이 될 것입니다. timeout일정 시간이 지난 후 프로세스를 중지하고 싶다면 칭찬이 좋다고 읽었 으므로 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패킷 캡처가 완료되면 캡처되고, 필터에 의해 수신되고, 커널에 의해 삭제된 패킷 수를 보고한다고 나와 있습니다.

필터링(특정 유형의 패킷만 찾는 방법)은 훨씬 더 어려울 수 있지만 EXAMPLES 섹션은 필요한 유일한 필터가 udp해당 예에 대한 것이라는 충분한 단서를 제공해야 합니다.

따라서 올바른 필터를 찾은 후에는 정의된 시간 동안 필터를 실행하고 kill 을 tcpdump사용 하면 패킷 수를 얻을 수 있습니다.timeouttcpdump

timeout 20 tcpdump udp

그러면 udp에 대해 tcpdump 필터링이 실행되고 20초 후에 tcpdump가 종료됩니다.

관련 정보