운영체제/Linux

[Linux] tcpdump - 네트워크 트러블 슈팅 도구 (리눅스 패킷 수집 및 분석하기)

민돌v 2023. 9. 2. 10:11
해당 포스팅은 인프런 "리눅스 성능 분석 시작하기" 를 수강하고 정리한 글입니다 :)
  • 리눅스 기반 os 에서 돌아가는 서버 시스템의 성능 측정 및 장애 대응에 대한 학습 내용 정리 글 입니다.

 

💡 리눅스 성능 분석의 기본 명령어

명령어 역할
uptime 시스템 가동 시간, Load Average 확인
dmesg 커널 메세지 확인 (OOME 발생 여부, SYN Flooding 여부)
free 메모리 사용 현황 확인
df 디스크 여유 공간 및 inode 공간 확인
top 프로세스들의 상태, CPU 사용률, 메모리 사용률 확인
netstat 네트워크 연결 정보 확인
tcpdump 네트워크 트러블 슈팅 분석을 위한 패킷 수집 명령어

 

 

 


📌 tcpdump 명령어

  • 'tcpdump' 은 네트워크 패킷 수집을 위한 명령어.
    • tcpdump로 네트워크 패킷의 흐름을 볼 수 있습니다. (어떤 패킷이 어떻게 이동하는지)

 

sudo tcpdump -nn -vvv -A
  • -nn : 프로토콜과 포트 번호를 숫자 그대로 표현합니다.
  • -vvv : 출력 결과에 더 많은 정보를 담습니다.
  • -A : 패킷의 내용도 함께 출력합니다. (단, ssh 를 사용할경우 패킷의 정보가 암호화 되어 표출됩니다.)

옵션과 함께 사용한 tcpdump 출력 결과

 

✔️ tcpdump를 트러블 슈팅의 목적으로 할 때 사용방법

트러블 슈팅의 경우 A ↔ B 간의 통신에서 문제가 생기는 것이기 때문에 → 트러블 슈팅을 위해 살펴봐야할 목적지와 포트가 명확합니다.

 

porthost 옵션

  • 특정 포트와 호스트 주소로 오고가는 패킷 정보만을 필터링할 수 있도록 해주는 옵션입니다.
sudo tcpdump -nn -vvv -A port 80 and host 10.1.1.1

이렇게 하면 4-way handshake 도 확인해 볼 수 있습니다.

 

 

✔️ 로컬환경에 분석 환경 구성하기

  • 리눅스 로그 형식으로 보면 아무래도 불편한 감이 있습니다.
  • 이걸 pcap 파일로 저장한 후 wireshark 프로그램을 이용해서 사용자가 보기 편한 ui 환경을 구성할 수 있습니다.

 

😄 wireshark

  1. tcpdump가 패킷 로그를 수집하여 pcap 파일을 생성
  2. sftp 명령어로 리눅스 환경(ex - ec2)에서 생성된 파일을 로컬로 가져옴
  3. wireshark 프로그램으로 해당 파일 분석 (다운로드 링크)

😄 tcpdump 로그 채집 과정

1. -w 옵션으로 해당 로그를 파일로 저장시킬 수 있습니다.

tcpdump -vvv -nn -A -G 3600 -w /var/log/tcpdump/$(hostname)_%Y%m%d-%H%M%S.pcap

//백그라운드 실행
nohup sudo tcpdump -vvv -nn -A -G 3600 port 8080 -w /var/log/tcpdump/api/%Y%m%d-%H%M%S.pcap &

//백그라운드 확인
jobs
  • 로그를 무한정 저장하는 것 보다 기준을 두는게 좋기 때문에 -G 옵션으로 하나의 파일을 저장할 시간을 지정할 수 있습니다.
  • -w 옵션으로 저장할 파일의 위치와 이름을 지정해 줄 수 있습니다.


2. pcap 파일 불러오기

  • 보통 이렇게 시간단위로 저장을하면, 에러가 발생한 시간의 pcap 파일만 로컬로 불러와 분석하면 된다는 장점이 있습니다.
  • sftp 명령어로 해당 로그 파일을 로컬로 가져온 후 wireshark 프로그램으로 열면 아래 화면과 같이 [.] [f] [f.] 으로 표시되던 패킷도, SYN, ACK 와 같은 읽기 편한 구조로 구성됩니다.


 

 

📌 정리

tcpdump 명령어를 이용해서 넽트워크 패킷을 수집하고 분석할 수 있습니다.

  • -vvv -nn -A 옵션을 이용해서 tcpdump 를 좀 더 효율적으로 사용할 수 있습니다.
  • host, port 문구를 이용해서 특정 목적지, 특정 포트로 필터링 할 수 있습니다.
  • tcpdump로 pcap 파일을 생성하고 wireshark 로 분석할 수 있습니다.