Byeo

tcpdump와 wireshark 본문

프로그래밍 (Programming)/컴퓨터 네트워크 - 학부 외

tcpdump와 wireshark

BKlee 2023. 8. 7. 22:16
반응형

개요

 Linux에서 tcpdump를 사용하면 내 네트워크 interface에 들어오고 나가는 packet들을 캡쳐 (pcap = packet capture) 할 수 있습니다. 그런데 Linux의 tcpdump로 보기에는 CLI다보니 약간의 어려움이 있는데요. 이를 GUI application windows wireshark로 읽어와 쉽게 분석할 수 있습니다.

 

 그런데 interface를 any로 잡으면 tcpdump에서 처음 보는 난해한 결과를 내뱉습니다. 이에 대해서 조금 분석해보고자 합니다.

 

내용

 실행 환경은 NHN Cloud instance입니다. 2개의 instance 사이에서 ping을 주고받는 과정을 tcpdump로 capture합니다. NHN Cloud에서 instance 생성하는 방법: [링크]

Instance 1
* Private IP: 192.168.0.83

Instance 2
* Private IP: 192.168.0.33

 1. tcpdump 실행

  Instance 1에서 다음 명령어를 실행합니다. tcpdump option 알아보기: https://www.tcpdump.org/manpages/tcpdump.1.html

tcpdump -nexxi any icmp
  •  n은 IP를 host name으로 바꾸지 않습니다.
    • option을 넣지 않으면 192.168.0.83 > 192.168.0.33이 아닌 byeo-test > 192.168.0.33으로 출력됩니다.
  • e는 link layer까지 출력합니다.
  • xx는 packet의 link layer를 포함하여 모든 데이터를 hexa (16진법)으로 표기합니다.
  • i는 어느 interface를 검사할 것인지 지정합니다. any를 사용하면 모든 interface를 capture합니다.
  • icmp는 ping의 request와 reply를 capture합니다.

tcpdump 결과

분석하려고 보니 MAC address가 이상합니다. 보통의 ethernet은 destination MAC address (6 bytes) / source MAC address (6 bytes) / Ethertype (2 byte) 로 구성이 되어있습니다.

https://en.wikipedia.org/wiki/Ethernet_frame

그런데 ethernet header의 0004 0001 0006 fa16 3e30 1a9d 0000 0800은 뭔가 맞지 않죠. (4500은 보통 option이 없는 IPv4 header 시작점입니다.)

 

뭘까 싶어 wireshark로 가져와서 확인해봅시다.

 

2. tcpdump로 pcap 기록

이번에는 option 하나를 더 줘봅시다. -w icmp.pcap 

tcpdump -nexxi any -w icmp.pcap icmp

 실행하면 icmp.pcap이라는 파일이 하나 생긴 것을 확인할 수 있습니다. sftp를 이용해서 window로 옮겨봅시다.

 

sftp -i {keypair} ubuntu@{FIP}
get icmp.pcap

 

3. Wireshark 열기

WSL에서 "explorer.exe ."을 실행하면 곧바로 윈도우 파일탐색기가 열립니다.

이제 저 파일을 실행하면 바로 wireshark가 실행됩니다!

 

 

이제 wireshark의 도움을 받아서 packet의 data가 각각 무엇을 의미하는지 뜯어볼 수 있겠네요.

 

그러면 뭔가 ethernet 같지 않았던 link layer data '0004 0001 0006 fa16 3e30 1a9d 0000 0800'는 다음 포스트에서..!

 

 

 

 

반응형
Comments