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
IP 를 특정할 필요가 없으면 적지 않아도 된다.
tcpdump 를 실행하면 패킷 덤프가 시작되는데, Ctrl + C 로 중단하면 .pcap
파일이 생성된다.
네트웍 이슈가 발생한 시점에 중단하여 .pcap
파일을 생성한다.
tcpdump 옵션
플래그 | 설명 |
---|---|
-nn | 출력 결과의 포트를 변환 없이 그대로 출력한다. (e.g. http - 80, https - 443) |
-A | 패킷의 내용을 ACSII 형태로 출력한다. |
2. pod -> local 덤프 파일 복사
pod 에서 local 로 파일을 복사하기 위해 kubectl 을 활용한다.
1
$ kubectl cp <대상 pod>:<경로>/<파일> <로컬 경로>/<복사할 파일명>
3. wireshark 로 .pcap 파일 분석
wireshark 를 실행한 뒤
.pcap
파일을 드래그 앤 드랍하면 패킷 내용이 보기 좋게 출력된다.