tcpdump 사용 방법 및 6가지 예

tcpdump 사용 방법 및 6가지 예

네트워크의 트래픽을 분석하기 위해 데이터 패킷을 캡처하려고 합니까? 문제가 발생하여 네트워크에서 전송된 데이터를 모니터링하려는 서버 관리자일 수 있습니다. 상황이 어떻든 tcpdump Linux 유틸리티가 필요합니다.





이 기사에서는 Linux 시스템에 tcpdump를 설치하고 사용하는 방법에 대한 몇 가지 가이드와 함께 tcpdump 명령에 대해 자세히 설명합니다.





tcpdump 명령이란 무엇입니까?

Tcpdump 사용자가 네트워크에서 패킷과 트래픽을 효율적으로 필터링할 수 있게 해주는 강력한 네트워크 모니터링 도구입니다. TCP/IP 및 네트워크에서 전송되는 패킷과 관련된 자세한 정보를 얻을 수 있습니다. Tcpdump는 명령줄 유틸리티이므로 디스플레이 없이 Linux 서버에서 실행할 수 있습니다.





시스템 관리자는 tcpdump 유틸리티를 다음과 통합할 수도 있습니다. 크론 로깅과 같은 다양한 작업을 자동화하기 위해. 다양한 기능으로 인해 매우 다재다능하기 때문에 tcpdump는 문제 해결 및 보안 도구로 작동합니다.

Linux에 tcpdump를 설치하는 방법

대부분의 경우 시스템에 사전 설치된 tcpdump를 찾을 수 있지만 일부 Linux 배포판은 패키지와 함께 제공되지 않습니다. 따라서 시스템에 유틸리티를 수동으로 설치해야 할 수 있습니다.



다음을 사용하여 tcpdump가 시스템에 설치되어 있는지 확인할 수 있습니다. 어느 명령.

which tcpdump

출력에 디렉토리 경로( /usr/bin/tcpdump ), 시스템에 패키지가 설치되어 있습니다. 그러나 그렇지 않은 경우 시스템의 기본 패키지 관리자를 사용하여 쉽게 수행할 수 있습니다.





Ubuntu와 같은 Debian 기반 배포판에 tcpdump를 설치하려면:

sudo apt-get install tcpdump

CentOS에 tcpdump를 설치하는 것도 쉽습니다.





sudo yum install tcpdump

아치 기반 배포:

sudo pacman -S tcpdump

Fedora에 설치하려면:

sudo dnf install tcpdump

tcpdump 패키지에는 라이브러리 캡 종속성이므로 시스템에도 설치해야 합니다.

Linux에서 네트워크 패킷을 캡처하는 Tcpdump 예제

이제 Linux 시스템에 tcpdump를 성공적으로 설치했으므로 일부 패킷을 모니터링할 시간입니다. tcpdump는 대부분의 작업을 실행하기 위해 수퍼유저 권한이 필요하므로 다음을 추가해야 합니다. 수도 당신의 명령에.

1. 모든 네트워크 인터페이스 나열

캡처에 사용할 수 있는 네트워크 인터페이스를 확인하려면 -NS tcpdump 명령으로 플래그를 지정합니다.

tcpdump -D

통과 --목록 인터페이스 플래그를 인수로 사용하면 동일한 출력을 반환합니다.

tcpdump --list-interfaces

출력은 시스템에 있는 모든 네트워크 인터페이스의 목록입니다.

네트워크 인터페이스 목록을 가져온 후에는 시스템에서 패킷을 캡처하여 네트워크를 모니터링할 차례입니다. 사용할 인터페이스를 지정할 수 있지만 어느 인수는 tcpdump 명령을 사용하여 활성 인터페이스를 사용하여 네트워크 패킷을 캡처합니다.

tcpdump --interface any

시스템은 다음 출력을 표시합니다.

PC에서 전화를 제어하는 ​​방법

관련된: 개방형 시스템 상호 연결 모델이란 무엇입니까?

2. tcpdump 출력 형식

세 번째 줄부터 출력의 각 줄은 tcpdump에서 캡처한 특정 패킷을 나타냅니다. 단일 패킷의 출력은 다음과 같습니다.

17:00:25.369138 wlp0s20f3 Out IP localsystem.40310 > kul01s10-in-f46.1e100.net.https: Flags [P.], seq 196:568, ack 1, win 309, options [nop,nop,TS val 117964079 ecr 816509256], length 33

모든 패킷이 이런 방식으로 캡처되는 것은 아니지만 대부분의 패킷이 따르는 일반적인 형식입니다.

출력에는 다음 정보가 포함됩니다.

  1. 수신된 패킷의 타임스탬프
  2. 인터페이스 이름
  3. 패킷 흐름
  4. 네트워크 프로토콜의 이름
  5. IP 주소 및 포트 세부 정보
  6. TCP 플래그
  7. 패킷의 데이터 시퀀스 번호
  8. 데이터 확인
  9. 창 크기
  10. 패킷 길이

첫 번째 필드( 17:00:25.369138 ) 시스템이 패킷을 보내거나 받은 시간 스탬프를 표시합니다. 기록된 시간은 시스템의 현지 시간에서 추출됩니다.

비밀번호없이 공장 초기화 아이폰 7

두 번째 및 세 번째 필드는 사용된 인터페이스와 패킷의 흐름을 나타냅니다. 위의 스니펫에서 wlp0s20f3 는 무선 인터페이스의 이름이며 패킷 흐름입니다.

네 번째 필드는 네트워크 프로토콜 이름과 관련된 정보를 포함합니다. 일반적으로 두 가지 프로토콜을 찾을 수 있습니다. IP 그리고 IP6 , 여기서 IP는 IPV4를 나타내고 IP6은 IPV6을 나타냅니다.

다음 필드에는 IP 주소 또는 소스 및 대상 시스템의 이름이 포함됩니다. IP 주소 뒤에 포트 번호가 옵니다.

출력의 여섯 번째 필드는 TCP 플래그로 구성됩니다. tcpdump 출력에 사용되는 다양한 플래그가 있습니다.

플래그 이름설명
시력NS연결 시작됨
NS연결 완료
푸시NS데이터가 푸시됨
RSTNS연결 재설정
아아.승인

출력에는 여러 TCP 플래그의 조합도 포함될 수 있습니다. 예를 들어, 플래그 [f.] FIN-ACK 패킷을 의미합니다.

출력 스니펫에서 더 이동하면 다음 필드에 시퀀스 번호( 시퀀스 196:568 ) 패킷의 데이터. 첫 번째 패킷은 항상 양의 정수 값을 가지며 후속 패킷은 상대 시퀀스 번호를 사용하여 데이터 흐름을 개선합니다.

다음 필드는 승인 번호( 확인 1 ) 또는 간단한 승인 번호입니다. 발신자의 시스템에서 캡처된 패킷의 승인 번호는 1입니다. 수신자 측에서 Ack 번호는 다음 패킷의 값입니다.

출력의 아홉 번째 필드는 창 크기( 309승 ), 수신 버퍼에서 사용할 수 있는 바이트 수입니다. MSS(최대 세그먼트 크기)를 포함하여 창 크기를 따르는 몇 가지 다른 필드가 있습니다.

마지막 필드( 길이 33 )에는 tcpdump에 의해 캡처된 전체 패킷의 길이가 포함됩니다.

3. 캡처된 패킷 수 제한

처음으로 tcpdump 명령을 실행하는 동안 인터럽트 신호를 전달할 때까지 시스템이 네트워크 패킷을 계속 캡처한다는 것을 알 수 있습니다. 다음을 사용하여 미리 캡처하려는 패킷 수를 지정하여 이 기본 동작을 무시할 수 있습니다. -씨 깃발.

tcpdump --interface any -c 10

앞서 언급한 명령은 활성 네트워크 인터페이스에서 10개의 패킷을 캡처합니다.

4. 필드를 기반으로 패킷 필터링

문제를 해결할 때 터미널에서 큰 텍스트 출력 블록을 얻는다고 해서 더 쉬워지지는 않습니다. 바로 여기에서 tcpdump의 필터링 기능이 작동합니다. 호스트, 프로토콜, 포트 번호 등을 포함한 다양한 필드에 따라 패킷을 필터링할 수 있습니다.

TCP 패킷만 캡처하려면 다음을 입력합니다.

tcpdump --interface any -c 5 tcp

마찬가지로 포트 번호를 사용하여 출력을 필터링하려는 경우:

tcpdump --interface any -c 5 port 50

위에서 언급한 명령은 지정된 포트를 통해 전송된 패킷만 검색합니다.

특정 호스트에 대한 패킷 세부 정보를 얻으려면:

tcpdump --interface any -c 5 host 112.123.13.145

특정 호스트에서 보내거나 받은 패킷을 필터링하려면 다음을 사용하십시오. src 또는 명령으로 인수.

tcpdump --interface any -c 5 src 112.123.13.145
tcpdump --interface any -c 5 dst 112.123.13.145

논리 연산자를 사용할 수도 있습니다. 그리고 그리고 또는 두 개 이상의 표현을 함께 결합합니다. 예를 들어, 소스 IP에 속하는 패킷을 가져오려면 112.123.13.145 그리고 포트를 이용 80 :

tcpdump --interface any -c 10 src 112.123.13.145 and port 80

복잡한 표현식은 다음을 사용하여 그룹화할 수 있습니다. 괄호 다음과 같이:

tcpdump --interface any -c 10 '(src 112.123.13.145 or src 234.231.23.234) and (port 45 or port 80)'

5. 패킷 내용 보기

당신은 사용할 수 있습니다 -에게 그리고 -NS tcpdump 명령으로 플래그를 지정하여 네트워크 패킷의 내용을 분석합니다. NS -에게 깃발은 아스키 형식과 -NS 를 나타냅니다 16진수 체재.

시스템에서 캡처한 다음 네트워크 패킷의 내용을 보려면:

tcpdump --interface any -c 1 -A
tcpdump --interface any -c 1 -x

관련: 패킷 손실이란 무엇이며 그 원인을 해결하는 방법은 무엇입니까?

6. 캡처 데이터를 파일에 저장

참조용으로 캡처 데이터를 저장하려는 경우 tcpdump가 도움이 될 것입니다. 그냥 패스 -에 출력을 화면에 표시하는 대신 파일에 쓰는 기본 명령과 함께 플래그를 지정합니다.

tcpdump --interface any -c 10 -w data.pcap

NS .pcap 파일 확장자는 패킷 캡처 데이터. 다음을 사용하여 상세 모드에서 앞서 언급한 명령을 실행할 수도 있습니다. -V 깃발.

tcpdump --interface any -c 10 -w data.pcap -v

읽기 .pcap tcpdump를 사용하여 파일, -NS 플래그 다음에 파일 경로가 옵니다. NS -NS 의 약자 읽다 .

닫았을 때 노트북을 켜두는 방법
tcpdump -r data.pcap

파일에 저장된 패킷 데이터에서 네트워크 패킷을 필터링할 수도 있습니다.

tcpdump -r data.pcap port 80

Linux에서 네트워크 트래픽 모니터링

Linux 서버 관리 작업을 할당받은 경우 tcpdump 명령은 무기고에 포함할 수 있는 훌륭한 도구입니다. 네트워크에서 전송되는 패킷을 실시간으로 캡처하여 네트워크 관련 문제를 쉽게 해결할 수 있습니다.

하지만 그 전에 기기가 인터넷에 연결되어 있어야 합니다. Linux 초보자의 경우 명령줄을 통해 Wi-Fi에 연결하는 것조차 약간 어려울 수 있습니다. 그러나 올바른 도구를 사용하고 있다면 간단합니다.

공유하다 공유하다 트위터 이메일 Nmcli를 사용하여 Linux 터미널을 통해 Wi-Fi에 연결하는 방법

Linux 명령줄을 통해 Wi-Fi 네트워크에 연결하고 싶으십니까? nmcli 명령에 대해 알아야 할 사항은 다음과 같습니다.

다음 읽기
관련 항목
  • 리눅스
  • 보안
  • 네트워크 포렌식
저자 소개 디페쉬 샤르마(79개 기사 게재)

Deepesh는 MUO의 Linux용 주니어 편집자입니다. 그는 모든 신규 이민자에게 행복한 경험을 제공하는 것을 목표로 Linux에 대한 정보 가이드를 작성합니다. 영화에 대해서는 잘 모르지만 기술에 대해 이야기하고 싶다면 그는 당신의 남자입니다. 여가 시간에는 책을 읽거나 다양한 음악 장르를 듣거나 기타를 연주하는 그를 볼 수 있습니다.

Deepesh Sharma가 참여한 작품 더보기

뉴스레터 구독

뉴스레터에 가입하여 기술 팁, 리뷰, 무료 전자책 및 독점 거래를 확인하십시오!

구독하려면 여기를 클릭하세요.