Home k8s 환경에서 패킷 캡쳐하는 방법 > tcpdump, wireshark
Post
Cancel

k8s 환경에서 패킷 캡쳐하는 방법 > tcpdump, wireshark

k8s 환경에서 서버를 운용하다보면 종종 파드에서 발생한 네트웍 이슈 트러블 슈팅을 위해 패킷 단위 분석이 필요한 경우가 있다. 이 때 tcpdump 로 생성한 덤프 파일을 시각화하기 위해 wireshark 를 활용한다. tcpdump 외에도 ksniff 같은 더 편리한 도구도 있다고 한다. 나중에 사용해 봐야겠다!

준비물

1
2
1. pod 에 tcpdump 설치
2. 로컬에 wireshark 설치

요약

1
2
3
1. pod > tcpdump 로 .pcap 파일 생성
2. 생성된 .pcap 파일을 kubectl cp 커맨드로 로컬에 복사
3. .pcap 파일을 wireshark 로 분석

1. 대상 pod 에서 덤프 파일 생성

1
$ tcpdump -i any -A -vvv -nn host <Destination IP> -w target_dump_file.pcap

스크린샷 2024-10-29 오전 12 13 35 IP 를 특정할 필요가 없으면 적지 않아도 된다.

tcpdump 를 실행하면 패킷 덤프가 시작되는데, Ctrl + C 로 중단하면 .pcap 파일이 생성된다.
네트웍 이슈가 발생한 시점에 중단하여 .pcap 파일을 생성한다.

tcpdump 옵션

플래그설명
-nn출력 결과의 포트를 변환 없이 그대로 출력한다. (e.g. http - 80, https - 443)
-A패킷의 내용을 ACSII 형태로 출력한다.

스크린샷 2024-10-26 오전 3 28 55 출처. tcpdump 완전정복하기[Part.1]

2. pod -> local 덤프 파일 복사

pod 에서 local 로 파일을 복사하기 위해 kubectl 을 활용한다.

1
$ kubectl cp <대상 pod>:<경로>/<파일> <로컬 경로>/<복사할 파일명>

3. wireshark 로 .pcap 파일 분석

스크린샷 2024-10-29 오전 12 17 26 wireshark 를 실행한 뒤 .pcap 파일을 드래그 앤 드랍하면 패킷 내용이 보기 좋게 출력된다.

This post is licensed under CC BY 4.0 by the author.

JVM 메모리 누수 > Native 메모리 > glibc malloc

JEP 346 > unused (미사용) committed memory 를 OS 로 반환 (feat. 인프라 비용 절감)