"tcpdump"는 마지막 패킷을 캡처합니다.

"tcpdump"는 마지막 패킷을 캡처합니다.

특정 포트를 모니터링하고 있는데 내 애플리케이션이 해당 포트를 사용하기 때문에 연결이 무작위로 끊어지는 것 같고 연결이 끊어지기 전에 마지막으로 통과한 패킷이 무엇인지 확인하고 싶습니다. 다음 줄을 사용했습니다.

 sudo tcpdump -XX -i eth0 port 3050 | tail  >> tcpamir.txt

하지만 작동하려면 다른 터미널을 시작하고 질문을 발행해야 했습니다.

sudo killall tcpdump

더 좋은 방법이 있나요? EDIT1: 디스크 공간을 빠르게 채울 만큼 충분한 트래픽이 있기 때문에 파일이 부풀어오르는 것을 원하지 않기 때문에 마지막 패킷만 캡처하는 것이 중요합니다.

답변1

응 내가 찾은 것 같아해결책:

sudo tcpdump -XX -i eth0 -w tcpamir-%s.txt -G 10 port 3050

그러면 출력 파일이 10초마다 다음과 같은 파일로 회전됩니다.tcpamir-<unixtimestamp>.txt

파일 크기 중단이 걱정된다면 출력 파일을 수정하여 매일 덮어쓰도록 할 수도 있습니다. 자세한 내용은 을 읽어보세요 man 3 strftime.

나는 다음과 같은 것을 생각했다

sudo tcpdump -XX -i eth0 -w tcpamir-%R.txt -G 86400

%R시간은 24시간 형식(예: 12:40) 으로 제공됩니다.

관련 출력 파일 읽기

sudo tcpdump -r tcpamir-<unixtimestamp>.txt

두 번째 해결 방법:

더 많은 명령으로 분할하고 스크립트/함수로 저장합니다.

sudo tcpdump -XX -i eth0 port 3050 >> tcptmp.txt
sudo tail -n100 tcptmp.txt >> tcpamir.txt
sudo rm tcptmp.txt

답변2

캡처된 모든 트래픽을 기록하려면 삭제 줄에 -w를 추가하면 됩니다.'|테일>> tcpamir.txt'

# tcpdump -XX -i eth0 port 3050 -w tcpamir.cap

Wireshark에서 캡처를 분석하려면 확장자가 .cap이어야 합니다. 캡처가 완료되었는지 확인한 후 다음을 사용하여 캡처를 종료할 수 있습니다.Ctrl + C

참고: -w [filename.cap]은 캡처를 파일에 기록합니다.

관련 정보