tcpdump를 사용하여 모든 데이터를 표시하는 방법은 무엇입니까?

tcpdump를 사용하여 모든 데이터를 표시하는 방법은 무엇입니까?

캡처 네트워크 트래픽을 사용하고 있습니다 tcpdump. 문제는 패킷이 너무 길면 캡처된 데이터를 모두 볼 수 없다는 것입니다. 예를 들어 tcp 프레임 길이가 500을 초과하면 100~200 이하만 표시됩니다. 모든 프레임 데이터(500+)를 표시하는 방법은 무엇입니까? 매개변수 -vv를 추가해 보았습니다 -vvv. 이것은 내 명령입니다:

tcpdump -i eth1 tcp and host 10.27.13.14 and port 6973 -vv -X -c 1000

답변1

-ssnaplen 플래그를 사용하여 각 패킷의 크기를 지정할 수 있습니다 .

-s 0매뉴얼 페이지에 따르면 기본 패킷 크기는 65535바이트로 설정되어 있으며, 이는 패킷을 처리하는 데 필요한 시간을 늘리고 패킷 버퍼링 양을 줄입니다. 여기서는 이것이 작동할 수 있지만 패킷 손실이 발생할 수 있으므로 다른 상황에서는 적절하지 않을 수 있습니다.

snaplen더 나은 방법은 원하는 것을 캡처하는 데 필요한 최소값으로 플래그를 설정하는 것입니다 .또 다른 대답전체 패킷을 보려면 1500바이트를 사용하고, 헤더에만 관심이 있는 경우에는 160바이트를 사용하는 것이 좋습니다.

따라서 -s 0여기서는 작동할 수 있지만 나중에 사용하려면 먼저 시작하고 필요에 따라 조정하는 것이 좋습니다 -s 1500.

에서 man tcpdump:

더 큰 스냅샷을 찍으면 패킷을 처리하는 데 필요한 시간이 늘어날 뿐만 아니라 패킷 버퍼링 양도 효과적으로 줄어듭니다. 이로 인해 패킷 손실이 발생할 수 있습니다. 관심 있는 프로토콜 정보를 캡처하는 가장 작은 숫자로 snaplen을 제한해야 합니다. snaplen을 0으로 설정하면 최근 이전 버전의 tcpdump와의 호환성을 위해 기본값인 65535로 설정됩니다.

관련 정보