MQTT 연결이 안 될 때¶
여러 PC 를 MQTT 로 묶을 때 가장 흔한 문제와 해결 방법.
무엇을 다루나요?¶
한 PC 에서 브로커를 시작하고 다른 PC 에서 그 주소로 접속했는데 다음 메시지가 나오는 경우입니다.
브로커에 연결하지 못했어요 (192.168.1.202:1883)
① 주소가 맞는지 ② 그 PC 에서 브로커가 켜져 있는지 ③ 그 PC 방화벽에서 1883번 포트가 허용돼 있는지 확인해 주세요.
원인의 대부분은 브로커 PC 의 Windows 방화벽입니다. 앱이나 네트워크 장비 문제가 아닙니다.
가장 흔한 증상 — "한쪽 방향만 안 됩니다"¶
실제 사례 (2026-08)
- A PC 가 브로커일 때 → B 에서 접속 실패
- B PC 가 브로커일 때 → A 에서 접속 성공
같은 앱, 같은 네트워크인데 방향에 따라 결과가 다릅니다.
이건 앱 문제가 아닙니다. 두 PC 의 방화벽 상태가 다른 것입니다.
앱이 처음 브로커를 열 때 Windows 가 "방화벽 허용" 대화상자를 띄우는데,
- 한 PC 에서는 [허용] 을 눌렀고
- 다른 PC 에서는 [취소] 를 눌렀거나 대화상자를 놓쳤습니다
한 번 거부하면 다시 묻지 않습니다
거부된 이후로는 조용히 차단되고 대화상자가 다시 뜨지 않습니다. 그래서 "어제는 됐는데 오늘은 안 된다", "저 PC 만 안 된다" 같은 증상으로 나타납니다.
스위치로 직접 묶은 교실 환경은 특히 자주 발생합니다¶
공유기 없이 스위치(허브)로만 PC 들을 연결한 경우, Windows 는 그 네트워크를 "식별되지 않은 네트워크" 로 보고 공용(Public) 으로 분류합니다.
공용 프로필에서는 들어오는 연결이 기본적으로 모두 차단됩니다. 핑조차 응답하지 않습니다.
왜 공용으로 잡히나요?
Windows 는 인터넷 게이트웨이가 보이지 않는 네트워크를 신뢰할 수 없는 것으로 간주합니다. 교실 내부망은 실제로는 안전하지만 Windows 는 그것을 알 방법이 없습니다.
해결 방법 1 — 앱에서 버튼 한 번 (권장)¶
가장 쉬운 방법
브로커를 시작하면 [장비] 탭 → MQTT 영역에 방화벽 상태가 표시됩니다.
| 표시 | 의미 |
|---|---|
| ✓ 방화벽 허용됨 | 다른 PC 에서 접속할 수 있는 상태 |
| ⚠ 네트워크가 "공용" | 들어오는 연결이 차단되는 상태 |
| ⚠ 허용 규칙 없음 | 1883 포트가 열려 있지 않은 상태 |
차단 상태면 [🛡 방화벽 허용] 버튼이 나타납니다. 누르면 Windows 관리자 확인 창이 뜨고, [예] 를 선택하면 등록됩니다. 한 번만 하면 이후로는 유지됩니다.
이 버튼이 실제로 하는 일
- MQTT 포트(기본 1883) 인바운드 허용 규칙 추가
- 핑 응답 허용 규칙 추가 (다음에 문제 생겼을 때 진단용)
- 게이트웨이가 없는 네트워크만 공용 → 개인으로 전환
인터넷에 연결된 Wi-Fi 는 건드리지 않습니다. 인터넷 접점을 개인으로 낮추면 네트워크 검색·공유가 열려 보안이 약해지기 때문에, 교실 스위치처럼 고립된 네트워크만 대상으로 합니다.
해결 방법 2 — 직접 명령 실행¶
앱 버튼을 쓸 수 없는 상황(구버전 앱, macOS 등)이면 브로커를 실행하는 PC 에서 직접 설정합니다.
1단계 · 관리자 PowerShell 열기¶
시작 메뉴에서 PowerShell 을 찾아 마우스 오른쪽 → 관리자 권한으로 실행.
2단계 · 네트워크를 개인으로 전환¶
어댑터 이름 확인
"이더넷" 이 아닐 수 있습니다. Get-NetAdapter 로 실제 이름을 확인한 뒤 바꿔 넣으세요. Wi-Fi 로 묶었다면 "Wi-Fi" 입니다.
3단계 · 방화벽 규칙 추가¶
New-NetFirewallRule -DisplayName "PrimoStudio MQTT" -Direction Inbound -Protocol TCP -LocalPort 1883 -Action Allow -Profile Any
New-NetFirewallRule -DisplayName "ICMPv4 Echo In" -Direction Inbound -Protocol ICMPv4 -IcmpType 8 -Action Allow -Profile Any
두 번째 줄은 핑 응답을 허용합니다. 통신에 필수는 아니지만 다음에 문제가 생겼을 때 진단이 훨씬 쉬워집니다.
확인하는 방법¶
접속하려는 PC(브로커가 아닌 쪽) 에서 PowerShell 을 열고:
192.168.1.202 자리에는 브로커 PC 의 주소를 넣습니다.
| 결과 | 의미 | 다음 할 일 |
|---|---|---|
TcpTestSucceeded : True |
정상 | 앱에서 그 주소로 접속하면 됩니다 |
TcpTestSucceeded : FalsePingSucceeded : True |
핑은 되는데 포트가 막힘 | 브로커가 켜져 있는지 확인 → 방화벽 규칙 추가 |
둘 다 False |
아무것도 안 받는 상태 | 네트워크 프로필이 공용인지 확인 (해결 방법 2) |
핑 결과가 안 보이는 건 정상입니다
TcpTestSucceeded : True 일 때는 PowerShell 이 핑 결과를 생략합니다. 실패했을 때만 원인 파악용으로 함께 보여줍니다.
브로커 PC 가 살아 있는지 확인 (더 확실한 방법)¶
방화벽은 핑을 막지만 ARP 는 막지 못합니다.
MAC 주소(예: 24-6a-0e-11-54-2b)가 보이면 그 PC 는 네트워크에 정상적으로 존재합니다. 즉 배선·스위치·IP 는 문제없고 방화벽만 막고 있다는 뜻입니다.
그래도 안 될 때¶
브로커가 실행 중인지부터 확인
방화벽을 열어도 듣고 있는 프로그램이 없으면 연결되지 않습니다. 규칙은 "들어오는 것을 허용"할 뿐, 포트를 여는 건 브로커입니다.
브로커 PC 에서:
0.0.0.0:1883 과 LISTENING 이 보여야 정상입니다. 안 보이면 앱에서 [이 PC 에서 브로커 시작] 을 다시 눌러 주세요.
IP 주소가 여러 개 보일 때
브로커 시작 화면의 내 IP 드롭다운에 주소가 여러 개 뜨면, PC 에 네트워크 어댑터가 여러 개(유선 + Wi-Fi + 가상 어댑터 등) 살아 있는 것입니다.
다른 PC · 로봇과 같은 대역을 골라야 합니다. 예를 들어 다른 PC 가 192.168.1.x 라면 브로커도 192.168.1.x 를 선택합니다.
두 어댑터가 같은 대역일 때
유선과 Wi-Fi 가 둘 다 192.168.1.x 라면 Windows 가 어느 쪽으로 응답할지 혼동합니다. "가끔 되고 가끔 안 되는" 증상의 원인입니다.
확인:
Get-NetIPAddress -AddressFamily IPv4 | Where-Object IPAddress -notlike "127.*" | Format-Table InterfaceAlias, IPAddress
대역이 겹치면 교실 내부망을 192.168.50.x 처럼 다른 대역으로 바꾸는 것이 근본 해결입니다.
백신 프로그램의 자체 방화벽
V3, 알약 등 일부 보안 프로그램은 Windows 방화벽과 별도의 방화벽을 운영합니다. Windows 규칙을 추가해도 막힌다면 해당 프로그램의 방화벽 설정에서 PrimoStudio 를 허용해 주세요.
네트워크를 다시 연결하면 또 막힘
스위치를 다시 꽂거나 다른 네트워크에 연결하면 Windows 가 새 네트워크로 인식해 다시 공용으로 분류할 수 있습니다.
이때는 프로필 명령만 다시 실행하면 됩니다. 방화벽 규칙은 -Profile Any 로 등록되어 프로필이 바뀌어도 계속 유효합니다.
수업 전 점검 목록¶
여러 PC 를 쓰는 수업이라면 미리 해두세요
- 브로커로 쓸 PC 를 미리 정합니다 (보통 선생님 PC)
- 그 PC 에서 앱을 열고 브로커를 한 번 시작 → 방화벽 대화상자가 뜨면 [허용]
- 앱에 [방화벽 허용] 버튼이 보이면 눌러서 규칙을 등록해 둡니다
- 학생 PC 한 대에서 접속을 테스트해 봅니다
- 브로커 PC 의 IP 주소를 칠판에 적어 둡니다
한 번 설정해 두면 이후 수업에서는 브로커 시작만 하면 됩니다.
다음 단계¶
- MQTT 카드 사용법 — 여러 스테이션으로 메시지 주고받기
- 문제 해결 — USB · 로봇 · 카메라 연결 문제