본문 바로가기

리눅스

[리눅스] tcpdump 명령어

728x90

tcpdump 명령어

tcpdump는 네트워크 패킷을 캡처하는 명령어 기반의 유틸리티입니다. tcpdump를 사용하면 네트워크 상에서 전송되는 데이터를 실시간으로 모니터링하고, 패킷을 캡처하여 분석할 수 있습니다.

tcpdump 기본 문법

tcpdump [options] [expression]

options는 tcpdump의 옵션을 지정하는 부분이며, expression은 필터링 식을 입력하는 부분입니다.

  • host : 지정한 호스트의 IP 주소에 대한 패킷만 캡처합니다.
  • port : 지정한 포트 번호로 전송되는 패킷만 캡처합니다.
  • tcp : TCP 패킷만 캡처합니다.
  • udp : UDP 패킷만 캡처합니다.

 

1. 기본 사용 방법

tcpdump를 실행하면 기본적으로 시스템의 첫 번째 네트워크 인터페이스(eth0)를 모니터링합니다. 다음은 tcpdump를 실행하여 네트워크 상에서 전송되는 패킷을 모니터링하는 명령어입니다.

sudo tcpdump

위 명령어를 실행하면 tcpdump는 모든 패킷을 캡처하고, 해당 패킷을 터미널에 출력합니다.

 

2. 인터페이스 지정

tcpdump를 실행할 때 모니터링할 네트워크 인터페이스를 -i 옵션을 사용하여 지정할 수 있습니다. 다음은 eth1 인터페이스에서 패킷을 모니터링하는 명령어입니다.

sudo tcpdump -i eth1

 

3. 캡처할 패킷의 개수 지정

tcpdump를 실행하여 모든 패킷을 무한정 캡처하면 저장 공간을 많이 차지하게 됩니다. 따라서 -c 옵션을 사용하여 캡처할 패킷의 개수를 지정할 수 있습니다. 다음은 tcpdump를 실행하여 10개의 패킷을 캡처하는 명령어입니다.

sudo tcpdump -c 10

 

4. 포트 번호 지정

tcpdump를 사용하여 특정 포트 번호로 전송되는 패킷만 캡처하려면 -port 옵션을 사용하여 포트 번호를 지정할 수 있습니다. 다음은 80 포트로 전송되는 패킷만 캡처하는 명령어입니다.

sudo tcpdump port 80
sudo tcpdump host 192.168.0.1 and port 80 and tcp
sudo tcpdump not (host 192.168.0.1 and port 80 and tcp)

cap.sh 스크립트

vim cap.sh
#!/bin/bash

tcpdump -c 10000 -s 1560 -vvv -x -nn -i enp0s3 port 53 -w $HOSTNAME-`date \+\%Y\%m\%m%H%M%S`.cap
#tcpdump -c 10000 -s 1560 -vvv -x -nn "port 80" -w $HOSTNAME-`date \+\%Y\%m\%m%H%M%S`.cap
#tcpdump -c 10000 -s 1560 -vvv -x -nn -i bond1 dst host 192.168.0.100 -w $HOSTNAME-`date \+\%Y\%m\%m%H%M%S`.cap
chmod +x cap.sh

 

tcpdump -qns 0 -X -r mgmt01.4wxyz.com-20170609-10451496972734.pcap

 

728x90