특정 UDP 포트에 대한 트래픽 모니터링

특정 UDP 포트에 대한 트래픽 모니터링

Bash를 사용하여 특정 UDP 포트에서 들어오는 트래픽 속도를 모니터링할 수 있는 방법이 있습니까?

특정 인터페이스의 트래픽을 표시할 수 있는 nload, vnstat와 같은 도구가 있습니다.

이 상황에서 누구든지 나를 도와줄 수 있나요? 특정 포트의 트래픽을 기반으로 일부 bash 작업을 수행하고 싶기 때문입니다.

답변1

tcpdump -i eth0 -w /tmp/xxx.pcap udp port xxx

포트 xxx에 대한 pcap 파일이 제공됩니다.

트래픽만 문제라면 다음을 해킹할 수 있습니다.

while : ; do 
    sudo timeout  5   tcpdump -i eth0 -s0 port 53 2> /dev/null | wc -l ; 
done

답변2

pv속도 측정을 위해서는 ( pvDebian/Ubuntu의 패키지)을 권장합니다 . 라인 수와 바이트 수를 계산할 수 있습니다.

예를 들어 기본 tcpdump는 패킷당 한 줄을 제공하므로 2초마다 패킷 속도를 인쇄합니다.

tcpdump -ni eth0 udp port 66 |pv -li2 >/dev/null

바이트 속도의 경우 tcpdump원시 패킷을 출력하고 pv해당 바이트를 계산하도록 요청합니다(기본 모드).

tcpdump -ni eth0 udp port 66 -w- |pv -i2 >/dev/null

하지만 비대화형 방식(예: "10초 동안 샘플을 채취하고 측정값 제공")으로 사용할 수 있는지 잘 모르겠습니다. 내가 찾은 가장 가까운 방법은 다음과 같습니다.

rate="$((timeout 11 tcpdump -ni eth0 udp port 66 -w- 2>/dev/null |pv -i10 -F%a -f >/dev/null) 2>&1)"

관련 정보