장비 통신이 가끔 끊기거나 느릴 때, 오간 패킷을 파일(.pcapng)로 남겨 두면 나중에 응답 시간·무응답·예외 코드를 차분히 볼 수 있습니다. 이 글은 자기 설비의 통신을 모니터·시험·문제 찾기 목적으로 기록하는 법입니다. 회사 네트워크에서 뜰 때는 먼저 관리하는 사람의 허락을 받으세요.
1. 어느 PC 에서 뜰 수 있나 — 스위치 한계
요즘 이더넷은 거의 스위치입니다. 스위치는 유니캐스트 프레임을 그 주소가 있는 포트로만 보내므로, 같은 스위치에 꽂은 노트북에서 Wireshark 를 켜도 HMI 와 PLC 사이의 통신은 보이지 않습니다(Wireshark 위키). 보이는 것은 그 노트북이 직접 주고받는 통신과 브로드캐스트뿐입니다.
| 어디서 뜨나 | 보이는 것 | 필요한 것 |
|---|---|---|
| 통신하는 PC 자신(내 프로그램 ⇄ 장비) | 그 PC 의 통신 | 그 PC 에 Wireshark 또는 pktmon, 관리자 권한 |
| 관리형 스위치의 미러 포트(SPAN) | 고른 포트의 통신 복사본 | 스위치 설정 권한, 감시 포트보다 빠르거나 같은 미러 포트 |
| 네트워크 탭(TAP) | 그 선의 양방향 전부 | 탭 장비, 선을 잠깐 끊었다 잇기 |
| 옛 허브(리피터 허브) | 허브에 꽂힌 모든 통신 | 허브 — 전이중 링크가 반이중이 되어 성능에 영향 |
| PortDock TCP «중계» | 이 PC 를 거쳐 가게 한 TCP 연결 | HMI 의 접속 대상을 이 PC 로 바꾸기, 관리자 권한·드라이버 없음 |
미러 포트는 감시하는 포트보다 느리면 패킷을 잃고, 트래픽이 많을 때도 캡처 손실이 날 수 있습니다(Wireshark 위키). 그래서 캡처에서 «응답 없음» 으로 보여도 실제로는 응답이 있었을 수 있습니다.
2. Wireshark 로 뜨기
- Wireshark 를 설치할 때 캡처 드라이버(Npcap)도 함께 설치합니다. 드라이버 설치라 관리자 권한이 필요하고, 회사 PC 는 정책으로 막혀 있을 수 있습니다.
- PLC 쪽으로 난 네트워크 어댑터를 고르고, 캡처 필터(시작 전)에 «tcp port 502»(Modbus) 나 «tcp port 5000»(PLC 에 설정한 MC 포트)을 넣으면 파일이 작아집니다.
- 같은 PC 안(127.0.0.1)에서 시뮬레이터로 시험하는 통신은 Npcap 의 루프백 어댑터(Adapter for loopback traffic capture)를 고릅니다.
- 멈춘 뒤 «파일 → 다른 이름으로 저장» 에서 pcapng 로 저장합니다. 파일이 크면 «파일 → 지정한 패킷 내보내기» 에 표시 필터(modbus, tcp.port == 5000)를 걸어 필요한 것만 남깁니다.
3. 설치 없이 — Windows 내장 pktmon
pktmon 은 Windows 10 2004(빌드 19041)부터 들어 있는 명령입니다. 관리자 권한 명령 창(PowerShell 을 «관리자로 실행»)에서 씁니다. 일반 권한으로는 «PktMon 드라이버와 통신하지 못했습니다: 액세스가 거부되었습니다» 로 멈춥니다.
pktmon filter add -p 502 pktmon start --capture --comp nics --pkt-size 0 (문제가 생길 때까지 기다림) pktmon stop pktmon etl2pcap PktMon.etl --out plc.pcapng pktmon filter remove
- filter add -p 502 는 출발·도착 어느 쪽이든 포트 502 인 패킷만 남깁니다. MC 는 PLC 에 설정한 포트 번호로 바꿉니다.
- --pkt-size 0 은 패킷 전체를 남깁니다. 기본값은 앞 128바이트뿐이라, 긴 Modbus·MC 프레임은 잘립니다.
- --comp nics 는 네트워크 어댑터에서만 잡습니다. 빼면 pktmon 은 네트워크 스택의 여러 지점에서 같은 패킷을 잡고, etl2pcap 은 그것들을 구분하지 않고 모두 씁니다(Microsoft 문서). 그런 파일은 etl2pcap 에 --component-id 로 한 지점만 뽑거나, PortDock pcap 해석기의 «겹친 패킷 빼기» 로 정리합니다.
- 기본 기록 방식은 원형(512MB 가 차면 오래된 것부터 덮어씀)입니다. 오래 뜰 때는 필터를 좁혀 둡니다.
4. 스위치 미러링 설정 요령
- 감시할 포트(PLC 가 꽂힌 포트 하나면 PLC 로 오가는 것 전부)와 복사본을 받을 포트(캡처 PC)를 고릅니다. 메뉴 이름은 Port Mirroring·SPAN·Monitor 등 제조사마다 다릅니다.
- 미러 포트에 꽂은 캡처 PC 는 보통 그 포트로 일반 통신을 하지 못합니다. 원격 접속에 쓰는 선과 따로 둡니다.
- 산업용 스위치에는 미러링이 없는 비관리형이 많습니다. 그때는 탭이나 PortDock TCP 중계를 씁니다.
5. PortDock TCP 중계 — 미러 포트·드라이버 없이
HMI(또는 PC 프로그램)가 PLC 주소로 접속하는 구조라면, HMI 의 접속 대상만 «이 PC 의 IP:포트» 로 바꾸고 PortDock TCP 를 «중계» 로 두면 이 PC 가 둘 사이에서 바이트를 바꾸지 않고 넘기며 방향별로 기록합니다. 드라이버·미러 포트가 필요 없고 설치·실행에도 관리자 권한이 필요 없습니다. 다만 다른 PC·HMI 가 이 PC 에 붙으려면 중계를 처음 열 때 뜨는 윈도우 방화벽 허용 창에서 관리자 승인이 필요할 수 있고, 장비 설정을 바꿔야 하므로 시험 환경이나 정비 시간에 씁니다. 중계에서 «pcap 으로 저장» 을 켜면 사용자가 고른 파일에만 남고 밖으로 보내지 않습니다.
6. 뜬 파일 보기
Wireshark 로 열어도 되고, PortDock 웹 도구 «산업 통신 pcap 해석기» 에 끌어 놓으면 Modbus TCP·MC 3E/4E 의 요청·응답 짝, 응답 시간(최소·중앙·95%·최대), 무응답, 예외·종료 코드를 연결·장치별로 모아 줍니다. 파일은 그 브라우저 안에서만 처리하고 올리지 않습니다. 결과 읽는 법은 «Modbus 응답 시간 읽기» 글에 있습니다.
pcap 파일에는 같은 네트워크의 다른 통신(웹·파일 공유 등)과 IP·MAC 주소가 함께 들어갑니다. 다른 사람에게 보낼 때는 필요한 포트만 내보낸 파일을 보내세요.
Wireshark 는 Wireshark Foundation 의 상표이며, PortDock 은 Wireshark·Microsoft 와 제휴 관계가 아닙니다.
근거
- Wireshark Wiki — CaptureSetup/Ethernet — 스위치·미러 포트(SPAN)·허브·탭, 미러 포트 속도와 손실
- Microsoft — Packet Monitor (Pktmon) — 빌드 19041 부터 내장, 여러 지점에서 잡기
- Microsoft — pktmon start — --capture·--comp nics·--pkt-size(기본 128바이트)·기록 방식
- Microsoft — pktmon filter add — -p 포트·-i IP 필터
- Microsoft — pktmon etl2pcap — pcapng 변환, --component-id
작성 2026-10-31