| MOSQUITTO(8) | Mosquitto | MOSQUITTO(8) |
نام (NAME)
mosquitto - یک کارگزار پیام پروتکل MQTT
خلاصه دستور (SYNOPSIS)
mosquitto [-c پرونده پیکربندی] [-d | --aemon] [-p شماره درگاه] [-q] [-v] [--ls-keylog پرونده]
توضیحات (DESCRIPTION)
mosquitto یک کارگزار (broker) برای پروتکل MQTT نسخههای 5.0/3.1.1/3.1 است.
این ابزار بخشی از پروژه کلی mosquitto است. برای مروری بر تمامی صفحات راهنما، mosquitto(7) را ببینید.
گزینهها (OPTIONS)
-c, --onfig-file
مهم
گزینه -p را برای شرح تغییرات رفتار از نسخه 1.6.x به 2.0 مشاهده کنید.
-d, --aemon
-p, --ort
مهم
در نسخه 1.6.x و نسخههای قدیمیتر، شنوندهای که با -p (یا درگاه پیشفرض 1883) تعریف میشد به تمامی رابطهای شبکه متصل میشد و بنابراین از هر شبکهای در دسترس بود. همچنین میتوانست در ترکیب با -c استفاده شود.
از نسخه 2.0 به بعد، شنوندگانی که با -p تعریف میشوند فقط به رابط محلی (loopback) متصل میشوند و بنابراین فقط میتوان از همان ماشین محلی به آنها متصل شد. اگر هم از -p استفاده شود و هم یک شنونده در پرونده پیکربندی تعریف شده باشد، گزینههای -p نادیده گرفته میشوند.
-q, --quiet
غیرفعالسازی تمامی رویدادنگاریها (لاگها). این معادل تنظیم log_type روی none در پرونده پیکربندی است. این گزینه هرگونه تنظیمات ثبت وقایع دادهشده در پرونده پیکربندی را نادیده گرفته و همچنین بر -- اولویت دارد.
--est-config
بارگذاری پرونده پیکربندی مشخصشده با -c و اعتبارسنجی آن بدون راهاندازی کارگزار. در صورتی که پیکربندی معتبر باشد کد خروج کارگزار 0 خواهد بود، و اگر پرونده پیکربندی تعیین نشده باشد یا نامعتبر باشد کدی غیرصفر بازگردانده میشود.
--ls-keylog file
ثبت اطلاعات نشست TLS در file. این گزینه به ابزارهایی مانند tcpdump, wireshark و mqttshark اجازه میدهد تا ترافیک TLS را رمزگشایی کرده و ترافیک MQTT را بازرسی کنند. در Wireshark این کار میتواند با تنظیم گزینه (Pre)-Master-Secret log filename برای پروتکل Transport Layer Security انجام شود.
این گزینه صرفاً باید برای اشکالزدایی استفاده شود و هرگز نباید در محیط عملیاتی به کار رود.
-v, --
پیکربندی (CONFIGURATION)
کارگزار را میتوان با استفاده از یک پرونده پیکربندی همانگونه که در mosquitto.conf(5) توصیف شده پیکربندی کرد و این نقطه مرجع اصلی اطلاعات برای mosquitto است. پروندههای مورد نیاز برای پشتیبانی از SSL/TLS در mosquitto-tls(7) شرح داده شدهاند.
محدودیتهای بستر (PLATFORM LIMITATIONS)
برخی از نسخههای ویندوز به دلیل API ویندوزی که استفاده میشود، محدودیتهایی در تعداد اتصالات همزمان دارند. در نسخههای مدرن ویندوز، مانند Windows 10 یا Windows Server 2019، این مقدار تقریباً ۸۱۹۲ اتصال است. در نسخههای قدیمیتر ویندوز، این حد ۲۰۴۸ اتصال است.
پشتیبانی از MQTT (MQTT SUPPORT)
کارگزار Mosquitto از نسخههای v5.0، v3.1.1 و v3.1 پروتکل MQTT پشتیبانی میکند.
MQTT v5.0
کارگزار Mosquitto پشتیبانی کاملی از MQTT v5.0 فراهم میکند، اما برخی ویژگیها بهطور مستقیم استفاده نمیشوند. بخشهای زیر ویژگیهای جدید را توضیح داده و مشخص میکنند که Mosquitto در کجا از یک ویژگی استفاده نمیکند.
ویژگیها
(Features)
Enhanced authentication (احراز هویت پیشرفته)
Error handling (مدیریت خطا)
Flow control (کنترل جریان)
Request / response (درخواست / پاسخ)
Server redirection (تغییر مسیر کارگزار)
Shared subscriptions (اشتراکهای اشتراکی)
ویژگیهای
بسته (Packet properties)
پروتکل MQTT v5.0 اجازه میدهد ویژگیهایی به بستهها اضافه شوند تا رفتار خاصی را کنترل کنند. مگر در مواردی که ذکر شده باشد، Mosquitto از ویژگیهای فهرستشده در زیر پشتیبانی میکند.
CONNECT
Last will and testament (وصیتنامه و آخرین خواست)
CONNACK
PUBLISH
PUBACK / PUBREC / PUBREL / PUBCOMP / SUBACK / SUBSCRIBE / SUBACK
SUBSCRIBE
DISCONNECT
AUTH
MQTT v3.1.1
کارگزار Mosquitto پشتیبانی کاملی از MQTT v3.1.1 ارائه میدهد.
MQTT v3.1
کارگزار Mosquitto پشتیبانی کاملی از MQTT v3.1 ارائه میدهد.
MQTT v3
نسخه MQTT v3 نگارشی منسوخشده از این پروتکل است که از احراز هویت نام کاربری/گذرواژه پشتیبانی نمیکند و از پرچم شروع تمیز (clean start) در بسته CONNECT استفاده میکرد که تنها در ابتدای یک نشست اعمال میشد. یک کلاینت MQTT v3 قادر خواهد بود با موفقیت به یک نمونه Mosquitto که نیازی به احراز هویت ندارد متصل شود.
وضعیت کارگزار (BROKER STATUS)
کلاینتها میتوانند با عضویت در موضوعات سلسلهمراتب $SYS به شرح زیر اطلاعاتی درباره کارگزار به دست آورند. موضوعاتی که بهعنوان ایستا (static) مشخص شدهاند، تنها یکبار به ازای هر کلاینت در زمان عضویت ارسال میشوند. سایر موضوعات هر sys_interval ثانیه یکبار بهروزرسانی میشوند. اگر sys_interval برابر با 0 باشد، بهروزرسانیها ارسال نخواهند شد.
توجه داشته باشید که اگر از یک کلاینت خط فرمان برای تعامل با موضوعات $SYS استفاده میکنید و پوسته شما علامت $ را بهعنوان متغیر محیطی تفسیر میکند، باید موضوع را داخل کوتیشن تکی قرار دهید '$SYS/...' یا علامت دلار را اسکیپ کنید: \$SYS/... در غیر این صورت $SYS بهعنوان یک متغیر محیطی در نظر گرفته خواهد شد.
$SYS/broker/bytes/received
$SYS/broker/bytes/sent
$SYS/broker/clients/connected, $SYS/broker/clients/active (منسوخشده)
$SYS/broker/clients/expired
$SYS/broker/clients/disconnected, $SYS/broker/clients/inactive (منسوخشده)
$SYS/broker/clients/maximum
$SYS/broker/clients/total
$SYS/broker/connection/#
$SYS/broker/connections/socket/count
$SYS/broker/heap/current
$SYS/broker/heap/maximum
$SYS/broker/load/connections/+
$SYS/broker/load/bytes/received/+
$SYS/broker/load/bytes/sent/+
$SYS/broker/load/messages/received/+
$SYS/broker/load/messages/sent/+
$SYS/broker/load/publish/dropped/+
$SYS/broker/load/publish/received/+
$SYS/broker/load/publish/sent/+
$SYS/broker/load/sockets/+
$SYS/broker/messages/received
$SYS/broker/messages/sent
$SYS/broker/mqtt/connect/received
$SYS/broker/mqtt/connack/sent
$SYS/broker/mqtt/publish/dropped, $SYS/broker/publish/messages/dropped
$SYS/broker/mqtt/publish/received, $SYS/broker/publish/messages/received
$SYS/broker/mqtt/publish/sent, $SYS/broker/publish/messages/sent
$SYS/broker/mqtt/puback/received
$SYS/broker/mqtt/puback/sent
$SYS/broker/mqtt/pubrec/received
$SYS/broker/mqtt/pubrec/sent
$SYS/broker/mqtt/pubrel/received
$SYS/broker/mqtt/pubrel/sent
$SYS/broker/mqtt/pubcomp/received
$SYS/broker/mqtt/pubcomp/sent
$SYS/broker/mqtt/subscribe/received
$SYS/broker/mqtt/suback/sent
$SYS/broker/mqtt/unsubscribe/received
$SYS/broker/mqtt/unsuback/sent
$SYS/broker/mqtt/pingreq/received
$SYS/broker/mqtt/pingresp/sent
$SYS/broker/mqtt/disconnect/received
$SYS/broker/mqtt/disconnect/sent
$SYS/broker/mqtt/auth/received
$SYS/broker/mqtt/auth/sent
$SYS/broker/packet/out/count
$SYS/broker/packet/out/bytes
$SYS/broker/publish/bytes/received
$SYS/broker/publish/bytes/sent
$SYS/broker/retained messages/count
$SYS/broker/store/messages/count, $SYS/broker/messages/stored (منسوخشده)
$SYS/broker/store/messages/bytes
$SYS/broker/shared_subscriptions/count
$SYS/broker/subscriptions/count
$SYS/broker/version
اشتراکهای موضوع با نویسههای عام (WILDCARD TOPIC SUBSCRIPTIONS)
علاوه بر اجازه دادن به کلاینتها برای عضویت در موضوعات خاص، mosquitto امکان استفاده از دو نویسه عام (wildcard) را نیز در اشتراکها فراهم میکند. + نویسه عامی است که برای تطبیق با یک سطح منفرد از سلسلهمراتب استفاده میشود. برای مثال، برای موضوع "a/b/c/d"، نمونه اشتراکهای زیر مطابقت خواهند داشت:
اشتراکهای زیر مطابقت نخواهند داشت:
دومین نویسه عام # است و برای مطابقت با تمام سطوح بعدی سلسلهمراتب استفاده میشود. با موضوع "a/b/c/d"، نمونه اشتراکهای زیر مطابقت خواهند داشت:
سلسلهمراتب $SYS با اشتراک "#" مطابقت ندارد. اگر میخواهید کل سلسلهمراتب $SYS را مشاهده کنید، در $SYS/# مشترک شوید.
توجه داشته باشید که نویسههای عام همیشه باید به تنهایی استفاده شوند، بنابراین اشتراکی مانند "a/b+/c" استفاده معتبری از یک نویسه عام نیست. نویسه عام # تنها باید بهعنوان آخرین نویسه در یک اشتراک استفاده شود.
پلها (BRIDGES)
میتوان چندین کارگزار را با استفاده از قابلیت پلزدن (bridging) به یکدیگر متصل کرد. این قابلیت در مواردی مفید است که به اشتراک گذاشتن اطلاعات بین مکانهای مختلف مطلوب باشد، اما نیازی به اشتراکگذاری تمام اطلاعات نباشد. برای مثال، حالتی را در نظر بگیرید که تعدادی از کاربران برای ثبت میزان مصرف برق و به دلایل متعدد دیگر، یک کارگزار را اجرا میکنند. مصرف برق میتواند از طریق پل زدن کارگزاران تمام کاربران به یک کارگزار مشترک به اشتراک گذاشته شود و امکان جمعآوری و مقایسه مصرف برق همه کاربران فراهم آید. سایر اطلاعات برای هر کارگزار بهصورت محلی باقی میماند.
برای اطلاعات بیشتر در مورد پیکربندی پلها، mosquitto.conf(5) را ببینید.
سیگنالها (SIGNALS)
در سیستمهای پوزیکس (POSIX)، کارگزار Mosquitto میتواند سیگنالها را دریافت کرده و همانگونه که در زیر توصیف شده روی آنها عمل کند. برای ارسال سیگنالها، برای مثال از دستور زیر استفاده کنید: kill -HUP <process id of mosquitto>
SIGHUP
اگر گواهیهای TLS در حال استفاده باشند، mosquitto با دریافت SIGHUP گواهیها را نیز مجدداً بارگذاری خواهد کرد.
همچنین پروندههای لاگ بسته شده و مجدداً باز خواهند شد.
SIGRTMIN
SIGUSR1
SIGUSR2
متغیرهای محیطی (ENVIRONMENT VARIABLES)
MOSQUITTO_UNSAFE_ALLOW_SYMLINKS
فایلها (FILES)
/etc/mosquitto/mosquitto.conf
/var/lib/mosquitto/mosquitto.db
/etc/hosts.allow, /etc/hosts.deny
اشکالات (BUGS)
اطلاعات مربوط به اشکالات mosquitto را میتوان در نشانی زیر یافت: https://github.com/eclipse-mosquitto/mosquitto/issues
همچنین ببینید (SEE ALSO)
mosquitto(7), mqtt(7), mosquitto-tls(7), mosquitto.conf(5), mosquitto_ctrl(1), mosquitto_passwd(1), mosquitto_pub(1), mosquitto_rr(1), mosquitto_sub(1), libmosquitto(3)
سپاسگزاری (THANKS)
با تشکر از Andy Stanford-Clark برای اینکه یکی از افرادی بود که در وهله اول ایده MQTT را مطرح کرد. با تشکر از Andy و Nicholas O'Leary برای ارائه توضیحات و شفافسازیهای مربوط به پروتکل.
همچنین با تشکر از همه دستاندرکاران پادکست Ubuntu UK Podcast و Linux Outlaws برای سازماندهی رویداد OggCamp، جایی که Andy سخنرانی کرد و الهامبخش ساخت mosquitto شد.
نویسنده (AUTHOR)
Roger Light <roger@atchoo.org>
| 04/03/2026 | Mosquitto Project |