패킷 모니터(PktMon)란 무엇인가?
패킷 모니터(Packet Monitor)(PktMon.exe)는 Windows 10 1809 버전과 Windows Server 2019부터 기본 탑재된 네트워크 트래픽 분석 도구(패킷 스니퍼)입니다. Windows 10 2020년 5월 업데이트(버전 2004)부터는 실시간 패킷 캡처 지원, Wireshark로 손쉽게 불러올 수 있는 PCAPNG 형식 지원 등 강력한 신규 기능이 대거 추가되었습니다.
이로써 리눅스의 tcpdump에 버금가는 네트워크 패킷 캡처 기능을 Windows에서도 기본적으로 사용할 수 있게 되었으며, 시스템 관리자와 네트워크 관리자는 별도의 프로그램 설치 없이 네트워크 동작과 성능 문제를 진단할 수 있습니다.
패킷 모니터를 사용하면 컴퓨터의 네트워크 인터페이스를 오가는 모든 네트워크 활동을 패킷 단위로 확인할 수 있습니다. 과거에는 Windows에서 네트워크 트래픽을 캡처하고 패킷을 분석하려면 netsh trace 명령을 사용해야 했지만, 이제는 훨씬 직관적인 PktMon을 활용할 수 있습니다.
PktMon 기본 명령어 정리
명령 프롬프트에서 도구를 실행하면 pktmon.exe의 옵션과 구문에 대한 도움말을 확인할 수 있습니다. 주요 명령어는 다음과 같습니다.
- filter — 패킷 필터 관리
- comp — 등록된 구성 요소(컴포넌트) 관리
- reset — 패킷 카운터 초기화
- start — 패킷 모니터링 시작
- stop — 패킷 모니터링 중지
- format — 트래픽 로그 파일을 텍스트 형식으로 변환
- pcapng — PCAPNG 형식으로 변환
- unload — PktMon 드라이버 언로드
각 하위 명령어의 세부 사용법을 확인하려면 명령어 이름만 입력하면 됩니다.
pktmon filter
1단계: 패킷 필터 생성하기
Windows 10 장치에서 실행 중인 특정 서비스로 들어오는 트래픽 덤프를 수집해 보겠습니다. 예를 들어 FTP(TCP 포트 20, 21)와 HTTP(포트 80, 443) 트래픽을 분석하고 싶다고 가정합니다.
TCP 포트 기준의 패킷 필터를 생성합니다. 필요에 따라 UDP 및 ICMP 트래픽도 추적할 수 있습니다.
pktmon filter add -p 20 21
pktmon filter add HTTPFilter -p 80 443
현재 활성화된 필터 목록은 아래 명령으로 확인합니다.
pktmon filter list
2단계: 트래픽 캡처 시작하기
백그라운드에서 트래픽 캡처를 시작하려면 다음 명령을 실행합니다.
pktmon start --etw
Log file name: C:\Windows\System32\PktMon.etl
Logging mode: Circular
Maximum file size: 512 MB
Active measurement started.
이 기본 모드에서는 pktmon이 모든 네트워크 인터페이스에서 데이터를 수집하며, 각 패킷의 처음 128바이트만 기록됩니다. 특정 네트워크 인터페이스의 패킷 전체를 캡처하려면 다음과 같이 옵션을 지정합니다.
pktmon start --etw -p 0 -c 9
여기서 c 값은 대상 네트워크 인터페이스의 ID이며, 다음 명령으로 확인할 수 있습니다.
pktmon comp list
3단계: 캡처 중지 및 결과 변환
설정한 필터와 일치하는 모든 트래픽은 C:\Windows\System32\PktMon.etl 파일에 저장됩니다(최대 파일 크기 512MB). 덤프 기록을 중지하려면 다음 명령을 실행합니다.
pktmon stop
참고로 Windows가 재부팅되면 네트워크 패킷 수집도 함께 중지됩니다.
캡처가 완료되면 ETL 형식의 트래픽 덤프 파일을 일반 텍스트 형식으로 변환할 수 있습니다.
pktmon format PktMon.etl -o c:\ps\packetsniffer.txt
또는 Wireshark 호환 형식인 PCAPNG로 변환할 수도 있습니다.
pktmon PCAPNG PktMon.etl -o c:\ps\packetsniffer.pcapng
변환된 텍스트 파일로 직접 트래픽을 분석하거나, ETL 파일을 Microsoft Network Monitor로, 또는 PCAPNG 형식으로 변환한 뒤 관리자 PC에 설치된 Wireshark로 가져와 정교하게 분석할 수 있습니다.
필터 삭제 방법
생성했던 모든 패킷 모니터 필터를 한 번에 제거하려면 다음 명령을 사용합니다.
pktmon filter remove
실시간 패킷 모니터링
PktMon을 활용하면 네트워크 트래픽을 실시간으로 추적할 수도 있습니다. -l real-time 매개변수를 사용하면 캡처된 패킷이 콘솔 화면에 즉시 표시되며, 백그라운드 로그 파일에는 기록되지 않습니다.
pktmon start --etw -p 0 -l real-time
트래픽 수집을 중지하려면 Ctrl+C를 누르면 됩니다.
네트워크 인터페이스에서 패킷 손실(drop)이 감지되면 PktMon이 그 원인을 알려줍니다. 예를 들어 잘못된 MTU 설정이나 VLAN 구성 문제 등을 손쉽게 파악할 수 있습니다.
Windows Admin Center 연동 및 활용 팁
확장 기능을 통해 Windows Admin Center에서도 PktMon을 사용할 수 있습니다. 네트워크 문제를 진단할 때 컴퓨터나 서버에서 수집한 패킷 데이터는 Microsoft Network Monitor나 Wireshark 같은 더 강력한 전문 네트워크 트래픽 분석 소프트웨어에서 심층 분석 자료로 활용하기에 충분합니다.