メインコンテンツへスキップ

Mosquittoについて

🧭 はじめに

この記事では、MQTT(Message Queuing Telemetry Transport)の代表的なブローカー「Mosquitto」について詳しく解説します。
MQTTはIoT(モノのインターネット)に特化した軽量な通信プロトコルで、Mosquittoはその中でも特に広く使われているブローカーです。この記事を通じて、Mosquittoの基本的な仕組みから実際の利用法、セキュリティ設定、運用上のポイントまでを体系的に理解できます。

MQTTについてはMQTTで説明しています。


🦟Mosquittoとは?

🪪 基本情報

  • 正式名称:Eclipse Mosquitto

  • 役割:MQTTプロトコルのブローカー(サーバー)

  • 開発元:Eclipse Foundation(オープンソース)

  • 主な用途:IoTデバイス間のメッセージ中継、スマートホーム、監視システムなど

Mosquittoは、MQTTクライアント間のPub/Subモデル通信を仲介します。送信側(Publisher)と受信側(Subscriber)が直接接続せず、Mosquittoがトピック単位で中継します。


📦 インストールと起動

🐧 Linux(Ubuntu)の場合

sudo apt update
sudo apt install mosquitto mosquitto-clients
sudo systemctl enable mosquitto
sudo systemctl start mosquitto

🪟 Windowsの場合

  • 公式サイトからインストーラを取得

  • OpenSSL依存のため、DLLの配置が必要

  • デフォルトではmosquitto.exeを実行すればブローカー起動


📡 基本の使い方

🔊 Publisher(送信)

mosquitto_pub -h localhost -t test/topic -m "Hello"

📥 Subscriber(受信)

mosquitto_sub -h localhost -t test/topic

これにより、test/topic というトピックに対して送信されたメッセージを、購読中のクライアントが受け取れます。


🔐 セキュリティ機能

Mosquittoは軽量でありながら、以下のような本格的なセキュリティ機能も備えています。

🧾 認証(パスワード方式)

mosquitto_passwd -c /etc/mosquitto/passwd user1

設定ファイルに以下を追加:

password_file /etc/mosquitto/passwd
allow_anonymous false

🔒 TLS/SSL対応

自己署名証明書または正式な証明書を使って、通信の暗号化が可能です。
設定例:

cafile /etc/mosquitto/certs/ca.crt
certfile /etc/mosquitto/certs/server.crt
keyfile /etc/mosquitto/certs/server.key
require_certificate false

TLS設定は、インターネットを介した利用やクラウド連携時には必須です。LAN内でも機密性がある場合は有効化推奨。


📖 設定ファイルの基本構成

設定ファイルは通常 /etc/mosquitto/mosquitto.conf にあります。分割構成も可能です:

# mosquitto.conf
include_dir /etc/mosquitto/conf.d

よく使う設定項目:

  • listener 1883:ポート指定(通常は1883)

  • allow_anonymous false:匿名アクセス禁止

  • log_type all:ログレベルの指定


🔄 永続化とリテンション

Mosquittoは以下のようなメッセージ保持機能を備えます。

📌 Retained Message(保持メッセージ)

  • 直近のメッセージをトピックごとに保持

  • 新規Subscriberにも即時送信

💾 Persistence(永続化)

  • メッセージの履歴やセッション情報を再起動後も保持

  • 設定例:

    persistence true
    persistence_location /var/lib/mosquitto/
    

🔍 運用・デバッグ

  • mosquitto_sub -d:デバッグ出力付き購読

  • ログファイルの場所:/var/log/mosquitto/mosquitto.log

  • systemctl restart mosquitto で反映

設定変更後の再起動忘れに注意。systemctl reload は一部設定に非対応。


🌐 Mosquittoの強みとユースケース

👍 強み

  • 軽量・高速(Raspberry Piでも動作可能)

  • MQTT v3.1/v3.1.1/v5対応

  • シンプルな設定と柔軟な拡張性

🏠 ユースケース例

  • 家庭用スマートホームの中核ブローカー

  • 工場のセンサーデータ収集基盤

  • 学習用途・実験環境


🧩 関連ツール

  • mosquitto_pub/sub:CLIクライアント(学習・デバッグ向け)

  • Node-RED:MQTT連携のビジュアルプログラミング

  • Home Assistant:スマートホーム用統合環境


🏁 まとめ

Mosquittoは、MQTTの世界における「標準」ともいえる存在であり、学習用途から本格的なIoTシステムまで幅広く活用されています。軽量ながらも十分なセキュリティ機能や永続化機能を備え、カスタマイズも柔軟に可能です。

初学者でも使いやすい設計になっているため、「まずは試してみたい」人にぴったりのMQTTブローカーです。IoTやPub/Sub通信に関心がある人は、ぜひ一度Mosquittoを動かしてみてください。