MQTT · 2025-12-08

라즈베리파이 Mosquitto MQTT 브로커 설치하기

라즈베리파이에서 Mosquitto MQTT 브로커를 단계별로 설치하고 서비스 등록, 사용자 인증과 TLS 설정, 클라이언트 연결 테스트까지 포함한 설정법

작성일 : 2025-12-08 ㆍ 작성자 : 관리자
post
목차

개요

이 글은 라즈베리파이에 Mosquitto MQTT 브로커를 설치하고 기본 설정부터 보안 연결까지 구성하는 과정을 다룬다. MQTT 개념이 낯선 초보자도 이해할 수 있도록 단계별로 정리한다. 소형 IoT 프로젝트나 홈 자동화에 바로 적용 가능한 설정을 중심으로 설명한다.

준비물

  • 라즈베리파이(권장 Raspbian 최신 버전)
  • 인터넷 연결 및 sudo 권한 사용자
  • 기본적인 터미널 사용 지식

설치 절차

1. 패키지 업데이트

먼저 시스템 패키지를 최신 상태로 갱신한다.

sudo apt update
sudo apt upgrade -y

2. Mosquitto 설치

Mosquitto와 클라이언트 도구를 설치한다.

sudo apt install -y mosquitto mosquitto-clients

기본적으로 Mosquitto는 서비스로 설치되어 자동 시작된다. 필요 시 서비스 상태를 확인한다.

sudo systemctl status mosquitto

기본 설정

기본 설정 파일은 /etc/mosquitto/mosquitto.conf 또는 /etc/mosquitto/conf.d/ 아래에 위치한다. 간단한 설정을 별도 파일로 관리하면 업데이트 시 원본을 유지하기 편리하다.

3. 리스너와 익명 접속 비활성화

익명 접속을 막고 포트와 인증 파일을 지정한다. 예시 파일을 /etc/mosquitto/conf.d/default.conf로 생성한다.

sudo tee /etc/mosquitto/conf.d/default.conf > /dev/null <<EOF
listener 1883
allow_anonymous false
password_file /etc/mosquitto/passwd
EOF

4. 사용자 추가

사용자 계정을 만들어 인증을 설정한다. 아래 명령은 새로운 사용자 파일을 생성한다.

sudo mosquitto_passwd -c /etc/mosquitto/passwd user1

비밀번호를 입력하면 해당 사용자가 생성된다. 기존 파일에 추가할 때는 -c 옵션을 생략한다.

TLS(암호화) 설정

공개 네트워크에서 사용 시 TLS 설정이 권장된다. 테스트용으로 자체 서명 인증서를 생성하는 방법을 예로 든다.

5. 자체 서명 인증서 생성

sudo mkdir -p /etc/mosquitto/certs
cd /etc/mosquitto/certs
sudo openssl genrsa -out mosquitto.key 2048
sudo openssl req -new -key mosquitto.key -subj '/CN=raspberrypi' -out mosquitto.csr
sudo openssl x509 -req -in mosquitto.csr -signkey mosquitto.key -out mosquitto.crt -days 3650
sudo chmod 640 mosquitto.key

6. Mosquitto 설정에 TLS 추가

앞서 만든 TLS 파일 경로를 설정 파일에 추가한다.

sudo tee -a /etc/mosquitto/conf.d/default.conf > /dev/null <<EOF
listener 8883
cafile /etc/mosquitto/certs/mosquitto.crt
certfile /etc/mosquitto/certs/mosquitto.crt
keyfile /etc/mosquitto/certs/mosquitto.key
EOF

서비스 재시작 및 자동 시작

설정을 적용하려면 Mosquitto를 재시작한다. 필요 시 부팅 시 자동 시작을 활성화한다.

sudo systemctl restart mosquitto
sudo systemctl enable mosquitto

클라이언트 연결 테스트

로컬에서 테스트할 때는 mosquitto_sub와 mosquitto_pub을 사용한다. 인증을 확인하려면 앞서 만든 사용자 정보를 사용한다.

mosquitto_sub -h localhost -t 'test/topic' -u user1 -P password
mosquitto_pub -h localhost -t 'test/topic' -m 'hello' -u user1 -P password

TLS 포트를 사용하는 경우 --cafile 옵션으로 서버 인증서를 지정한다.

mosquitto_sub -h raspberrypi -p 8883 --cafile /etc/mosquitto/certs/mosquitto.crt -t 'secure/topic' -u user1 -P password

문제 해결 요약

  • 서비스가 시작되지 않을 때: sudo journalctl -u mosquitto -b 로 로그 확인
  • 인증 실패: /etc/mosquitto/passwd 파일 권한 및 사용자명 재확인
  • TLS 문제: 인증서 경로와 파일 권한 확인, 클라이언트에서 cafile 지정 여부 확인
  • 포트 충돌: 다른 서비스와 포트(1883, 8883) 중복 여부 점검

운영 팁

  • 프로덕션 환경에서는 자체 서명이 아닌 공인 인증서 또는 내부 CA 사용 권장
  • 장기간 운영 시 로그 회전과 모니터링 도구 연동 고려
  • 필요 시 브리지 설정으로 다른 MQTT 브로커와 연동 가능

마무리

이 문서는 라즈베리파이에 Mosquitto MQTT 브로커를 설치하고 인증과 TLS를 적용해 안전하게 운영하는 과정을 안내한다. 소개한 절차를 따라하면 로컬 및 원격 클라이언트와 안정적으로 통신하는 MQTT 환경을 구성할 수 있다.

라즈베리파이 mosquitto 설치 mosquitto 설정 방법 라즈베리파이 mqtt 브로커 튜토리얼 MQTT 설치 Mosquitto TLS 설정 mosquitto_passwd mqtt 테스트 라즈베리파이 보안