| MOSQUITTO.CONF(5) | قالبهای فایل و قراردادها | MOSQUITTO.CONF(5) |
نام (NAME)
mosquitto.conf - فایل پیکربندی برای mosquitto
خلاصه دستور (SYNOPSIS)
mosquitto.conf
توضیحات (DESCRIPTION)
mosquitto.conf فایل پیکربندی برای mosquitto است. تا زمانی که mosquitto دسترسی خواندن آن را داشته باشد، این فایل میتواند در هر مکانی قرار گیرد. بهطور پیشفرض، mosquitto نیازی به فایل پیکربندی ندارد و از مقادیر پیشفرض فهرستشده در زیر استفاده خواهد کرد. برای اطلاعات بیشتر در مورد نحوه بارگذاری فایل پیکربندی، mosquitto(8) را ببینید.
میتوان به mosquitto دستور داد تا با ارسال سیگنال SIGHUP مطابق آنچه در بخش Signals از mosquitto(8) توضیح داده شده است، فایل پیکربندی را دوباره بارگذاری کند. همه گزینههای پیکربندی قابل بارگذاری مجدد نیستند، همانطور که در توضیحات گزینههای زیر مشخص شده است.
بخشها (SECTIONS)
ادامه این صفحه راهنما به بخشهای زیر تقسیم شده است:
قالب فایل (File Format) شرحی از ساختار نوشتاری فایل پیکربندی.
احراز هویت (Authentication) بررسی گزینههای احراز هویت در دسترس.
گزینههای عمومی (General Options) گزینههای عمومی برای پیکربندی Mosquitto.
شنوندگان (Listeners) گزینههای عمومی برای پیکربندی شنوندگان، که راههای اتصال کلاینتهای MQTT به Mosquitto هستند، و همچنین گزینههای SSL/TLS مبتنی بر گواهی و کلید از پیش اشتراکگذاریشده (PSK).
پیکربندی پلها (Configuring Bridges) گزینههای عمومی برای پیکربندی پلها، که روشی برای اتصال چندین کارگزار (broker) به یکدیگر است، و همچنین گزینههای SSL/TLS مبتنی بر گواهی و کلید از پیش اشتراکگذاریشده.
سایر (Other) بخشهای فایلها، باگها و همچنین ببینید.
قالب فایل (FILE FORMAT)
تمام خطوطی که اولین نویسه آنها # باشد، به عنوان توضیح (کامنت) در نظر گرفته میشوند.
خطوط پیکربندی با یک نام متغیر شروع میشوند. مقدار متغیر با یک فاصله (space) از نام متغیر جدا میشود.
احراز هویت (AUTHENTICATION)
گزینههای احراز هویت شرح داده شده در زیر در ترکیب با گزینههای شنونده (listener) امکانات گستردهای را فراهم میکنند. هدف این بخش روشن ساختن این امکانات است. یک نمای کلی نیز در آدرس زیر در دسترس است: https://mosquitto.org/documentation/authentication-methods/
سادهترین حالت، عدم استفاده از هیچگونه احراز هویت است. در صورتی که گزینه دیگری تعیین نشده باشد، این حالت پیشفرض خواهد بود. پشتیبانی از رمزگذاری بدون احراز هویت با استفاده از گزینههای SSL/TLS مبتنی بر گواهی certfile و keyfile فراهم میشود.
پروتکل MQTT احراز هویت نام کاربری/گذرواژه را به عنوان بخشی از پروتکل ارائه میدهد. از گزینه password_file برای تعیین نامهای کاربری و گذرواژههای معتبر استفاده کنید. اگر از این گزینه استفاده میکنید، حتماً از رمزگذاری شبکه بهره ببرید؛ در غیر این صورت نام کاربری و گذرواژه در برابر شنود آسیبپذیر خواهند بود. از گزینه per_listener_settings برای کنترل اینکه آیا گذرواژهها به صورت سراسری الزامی باشند یا بر اساس هر شنونده، استفاده کنید.
نرمافزار Mosquitto افزونه Dynamic Security را ارائه میدهد که احراز هویت نام کاربری/گذرواژه و کنترل دسترسی را بسیار انعطافپذیرتر از یک فایل گذرواژه مدیریت میکند. آدرس زیر را ببینید: https://mosquitto.org/documentation/dynamic-security/
هنگام استفاده از رمزگذاری مبتنی بر گواهی، سه گزینه بر احراز هویت تأثیر میگذارند. گزینه اول require_certificate است که میتواند روی true یا false تنظیم شود. اگر false باشد، بخش SSL/TLS کلاینت سرور را اعتبارسنجی میکند اما کلاینت ملزم به ارائه چیزی به سرور نیست: احراز هویت محدود به نام کاربری/گذرواژه توکار MQTT خواهد بود. اگر require_certificate برابر true باشد، کلاینت برای اتصال موفقیتآمیز باید یک گواهی معتبر ارائه دهد. در این حالت، گزینههای دوم و سوم، use_identity_as_username و use_subject_as_username، اهمیت مییابند. در صورت تنظیم روی true، گزینه use_identity_as_username باعث میشود مقدار نام عمومی (Common Name یا CN) از گواهی کلاینت به جای نام کاربری MQTT برای کنترل دسترسی استفاده شود. گذرواژه استفاده نمیشود زیرا فرض بر این است که فقط کلاینتهای احراز هویتشده دارای گواهیهای معتبر هستند. این بدان معناست که هر گواهی CA که در cafile یا capath وارد کنید، قادر به صدور گواهیهای کلاینت معتبر برای اتصال به کارگزار شما خواهد بود. اگر use_identity_as_username برابر false باشد، کلاینت باید مانند حالت عادی (در صورت الزام توسط password_file) از طریق گزینههای MQTT احراز هویت شود. همین اصل برای گزینه use_subject_as_username نیز صدق میکند، اما کل موضوع گواهی (subject) به عنوان نام کاربری استفاده میشود، نه فقط CN.
هنگام استفاده از رمزگذاری مبتنی بر کلید از پیش اشتراکگذاریشده از طریق گزینههای psk_hint و psk_file، کلاینت باید قبل از برقراری هرگونه ارتباط MQTT، یک هویت و کلید معتبر برای اتصال به کارگزار ارائه دهد. اگر use_identity_as_username برابر true باشد، هویت PSK به جای نام کاربری MQTT برای اهداف کنترل دسترسی استفاده میشود. اگر use_identity_as_username برابر false باشد، کلاینت در صورت استفاده از گزینه password_file همچنان میتواند با استفاده از نام کاربری/گذرواژه MQTT احراز هویت کند.
هر دو رمزگذاری مبتنی بر گواهی و مبتنی بر PSK به ازای هر شنونده پیکربندی میشوند.
میتوان افزونههای احراز هویت ایجاد کرد تا گزینههای password_file، acl_file و psk_file را با جستجوهای مبتنی بر مثلاً SQL ارتقا دهند.
پشتیبانی همزمان از چندین طرح احراز هویت امکانپذیر است. میتوان پیکربندیای ایجاد کرد که برای تمامی گزینههای رمزگذاری مختلف شرح داده شده در بالا دارای یک شنونده باشد و بنابراین روشهای متعددی برای احراز هویت ارائه دهد.
گزینههای عمومی (GENERAL OPTIONS)
acl_file مسیر فایل
مسیر یک فایل فهرست کنترل دسترسی (ACL) را تنظیم میکند. در صورت تعریف، محتوای فایل برای کنترل دسترسی کلاینت به موضوعات (topics) روی کارگزار استفاده میشود.
اگر این پارامتر تعریف شود، فقط به موضوعات فهرستشده دسترسی داده خواهد شد. دسترسی به موضوع با خطوطی با قالب زیر اضافه میشود:
topic [read|write|readwrite|deny] <topic>
نوع دسترسی با استفاده از "read"، "write"، "readwrite" یا "deny" کنترل میشود. این پارامتر اختیاری است (مگر اینکه <topic> شامل نویسه فاصله باشد) - در صورت عدم تعیین، دسترسی read/write خواهد بود. <topic> میتواند مانند اشتراکها شامل نویسههای عام + یا # باشد. گزینه "deny" میتواند برای رد صریح دسترسی به موضوعی استفاده شود که در غیر این صورت با دستور گستردهتر read/write/readwrite مجاز میشد. هر موضوع "deny" قبل از موضوعاتی که دسترسی خواندن/نوشتن میدهند پردازش میشود.
اولین مجموعه موضوعات، با فرض اینکه allow_anonymous برابر true باشد، به کلاینتهای ناشناس اعمال میشود. فهرستهای دسترسی مربوط به کاربران خاص بعد از خط کاربر به صورت زیر اضافه میشوند:
user <username>
نام کاربری ذکر شده در اینجا همان نام کاربری در password_file است، نه شناسه کلاینت (clientid).
همچنین میتوان ACLها را بر اساس جایگزینی الگو در موضوع تعریف کرد. قالب آن مانند کلمه کلیدی topic است، اما از pattern به عنوان کلمه کلیدی استفاده میشود.
pattern [read|write|readwrite|deny] <topic>
الگوهای موجود برای جایگزینی عبارتند از:
الگوی جایگزینی باید تنها متن در آن سطح از سلسلهمراتب باشد. الگوهای ACL برای همه کاربران اعمال میشوند حتی اگر کلمه کلیدی "user" پیشتر داده شده باشد.
مثال:
pattern write sensor/%u/data
اجازه دسترسی برای پیامهای اتصال پل:
pattern write $SYS/broker/connection/%c/state
اگر اولین نویسه یک خط از فایل ACL علامت # باشد، به عنوان توضیح در نظر گرفته میشود.
اگر per_listener_settings برابر true باشد، این گزینه تنها به شنوندهای که در حال حاضر پیکربندی میشود اعمال خواهد شد. اگر per_listener_settings برابر false باشد، این گزینه برای تمام شنوندگان اعمال میشود.
نکته: بهطور کلی امکان اعطای دسترسی نوشتن به موضوعات درون درخت موضوعی $SYS وجود ندارد. استثنای آن $SYS/broker/connection/+/state است.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود. دادههای ACL بارگذاریشده فعلی آزاد شده و دوباره بارگذاری خواهند شد. اشتراکهای موجود پس از بارگذاری مجدد تحت تأثیر قرار خواهند گرفت.
همچنین ببینید: https://mosquitto.org/documentation/dynamic-security/
allow_anonymous [ true | false ]
مقدار پیشفرض false است، مگر اینکه هیچ شنوندهای در فایل پیکربندی تعریف نشده باشد، که در این صورت روی true تنظیم میشود، اما اتصالات فقط از ماشین محلی مجاز خواهند بود.
اگر میخواهید این تنظیم را برای هر شنونده به طور جداگانه کنترل کنید، از گزینه listener_allow_anonymous استفاده نمایید.
(نکته: منسوخشده) اگر per_listener_settings برابر true باشد، این گزینه فقط برای شنونده فعلی که در حال پیکربندی است اعمال میشود. اگر per_listener_settings برابر false باشد، این گزینه برای همه شنوندگان اعمال خواهد شد.
مهم
در نسخه 1.6.x و قبلتر، این گزینه به طور پیشفرض روی true بود مگر اینکه گزینه امنیتی دیگری تنظیم شده باشد.
allow_duplicate_messages [ true | false ]
اگر کلاینتی در چندین اشتراک مشترک شده باشد که همپوشانی دارند، به عنوان مثال foo/# و foo/+/baz ، آنگاه MQTT انتظار دارد هنگامی که کارگزار پیامی در مورد موضوعی دریافت میکند که با هر دو اشتراک مطابقت دارد، مانند foo/bar/baz، کلاینت باید فقط یک بار پیام را دریافت کند.
نرمافزار Mosquitto برای برآورده کردن این نیاز ردیابی میکند که پیام به کدام کلاینتها ارسال شده است. این گزینه اجازه میدهد این رفتار غیرفعال شود، که ممکن است در صورتی که تعداد زیادی کلاینت دارید که در یک مجموعه موضوع مشابه مشترک هستند و میخواهید مصرف حافظه را به حداقل برسانید، مفید باشد.
اگر از قبل میدانید که کلاینتهای شما هرگز اشتراکهای همپوشان نخواهند داشت، میتوان با خیال راحت آن را روی true تنظیم کرد، در غیر این صورت کلاینتهای شما باید بتوانند حتی زمانی که QoS=2 دارند پیامهای تکراری را به درستی پردازش کنند.
پیشفرض روی true است.
این گزینه به صورت سراسری اعمال میشود.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
allow_zero_length_clientid [ true | false ]
گزینه auto_id_prefix را نیز ببینید.
اگر per_listener_settings برابر true باشد، این گزینه تنها به شنونده فعلی که در حال پیکربندی است اعمال میشود. اگر per_listener_settings برابر false باشد، این گزینه به تمامی شنوندگان اعمال میشود.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
auth_plugin_deny_special_chars [ true | false ]
این بررسی از مواردی جلوگیری میکند که در آن یک کاربر مخرب میتواند با استفاده از یکی از این نویسهها به عنوان نام کاربری یا شناسه کلاینت خود، یک بررسی ACL را دور بزند. این همان مشکلی است که برای خود mosquitto با عنوان CVE-2017-7650 گزارش شد.
اگر کاملاً مطمئن هستید که افزونهای که استفاده میکنید در برابر این حمله آسیبپذیر نیست (یعنی اگر هرگز از نامهای کاربری یا شناسههای کلاینت در موضوعات استفاده نمیکنید) میتوانید با تنظیم این گزینه روی false این بررسی اضافه را غیرفعال کرده و بنابراین تمام بررسیهای ACL را به افزونه خود تحویل دهید.
پیشفرض روی true است.
به افزونه احراز هویت فعلی که در حال پیکربندی است اعمال میشود.
در حال حاضر با سیگنال بارگذاری مجدد دوباره بارگذاری نمیشود.
auto_id_prefix پیشوند
اگر allow_zero_length_clientid برابر true باشد، این گزینه به شما امکان میدهد رشتهای را تنظیم کنید که به ابتدای شناسههای کلاینت ایجادشده به صورت خودکار اضافه شود تا دیدهشدن آنها در گزارشها آسانتر شود. پیشفرض auto- است.
اگر per_listener_settings برابر true باشد، این گزینه فقط برای شنونده فعلی که در حال پیکربندی است اعمال میشود. اگر per_listener_settings برابر false باشد، این گزینه برای همه شنوندگان اعمال خواهد شد.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
autosave_interval ثانیه
این گزینه به صورت سراسری اعمال میشود.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
autosave_on_changes [ true | false ]
تنها به پایداری توکار اعمال میشود.
این گزینه به صورت سراسری اعمال میشود.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
check_retain_source [ true | false ]
این گزینه صرف نظر از گزینه per_listener_settings به صورت سراسری اعمال میشود.
clientid_prefixes پیشوند
در صورت تعریف، فقط کلاینتهایی که شناسه کلاینت با پیشوندی مطابق با clientid_prefixes دارند، اجازه اتصال به کارگزار را خواهند داشت. برای مثال، تنظیم "secure-" در اینجا به این معنی است که کلاینت "secure-client" میتواند متصل شود اما کلاینت دیگری با شناسه "mqtt" نمیتواند. بهطور پیشفرض، همه شناسههای کلاینت معتبر هستند.
این گزینه به صورت سراسری اعمال میشود.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود. توجه داشته باشید که کلاینتهایی که در حال حاضر متصل هستند تحت تأثیر هیچ تغییری قرار نخواهند گرفت.
connection_messages [ true | false ]
این گزینه به صورت سراسری اعمال میشود.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
enable_control_api [ true | false ]
این گزینه به صورت سراسری اعمال میشود.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
global_max_clients تعداد
تنظیم max_connections را نیز ببینید که برای شنوندگان اعمال میشود. اگر global_max_clients را روی 1000 و max_connections روی یک شنونده را روی 10 تنظیم کنید، این بدان معناست که تنها 10 اتصال همزمان در یک زمان مجاز خواهد بود، با حداکثر کلی 1000 نشست کلاینت.
این گزینه به صورت سراسری اعمال میشود.
پیشفرض -1 (نامحدود) است.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
global_max_connections تعداد
تنظیمات global_max_clients و max_connections را نیز ببینید.
این گزینه به صورت سراسری اعمال میشود.
پیشفرض -1 (نامحدود) است.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
global_plugin مسیر فایل
اگر per_listener_settings true را تنظیم کرده و سپس هر دو گزینه global_plugin و یک plugin (که به یک شنونده خاص متصل خواهد شد) را تعریف کنید، افزونه سراسری همیشه ابتدا پردازش میشود.
اگر per_listener_settings false را تنظیم کنید، آنگاه global_plugin دقیقاً مانند plugin عمل میکند.
include_dir مسیر پوشه
فایلهای پیکربندی در include_dir به ترتیب الفبایی حساس به حروف بزرگ و کوچک بارگذاری میشوند، بهطوریکه حروف بزرگ هر حرف قبل از حروف کوچک همان حرف مرتب میشوند.
مثال: ترتیب بارگذاری برای include_dir. با داشتن فایلهای b.conf، A.conf، 01.conf، a.conf، B.conf، و 00.conf درون include_dir، فایلهای پیکربندی به این ترتیب بارگذاری میشوند:
00.conf 01.conf A.conf a.conf B.conf b.conf
اگر این گزینه چندین بار استفاده شود، هر گزینه include_dir به طور کامل به ترتیبی که در فایل پیکربندی اصلی نوشته شدهاند پردازش میشود.
مثال: ترتیب بارگذاری برای چندین include_dir. با فرض دایرکتوری one.d شامل فایلهای B.conf و C.conf، و دایرکتوری دوم two.d شامل فایلهای A.conf و D.conf، و یک پیکربندی:
include_dir one.d include_dir two.d
سپس فایلهای پیکربندی به این ترتیب بارگذاری میشوند:
# فایلها از one.d B.conf C.conf # فایلها از two.d A.conf D.conf
log_dest مقاصد
گزینههای stdout و stderr گزارشها را در کنسول روی خروجی نامگذاریشده ثبت میکنند.
گزینه syslog از امکانات syslog فضای کاربری استفاده میکند که معمولاً در /var/log/messages یا موارد مشابه قرار میگیرد.
گزینه topic در موضوع کارگزار '$SYS/broker/log/<severity>' لاگ میاندازد، که در آن severity یکی از E، W، N، I، M به معنای خطا (error)، هشدار (warning)، اعلان (notice)، اطلاعات (information) و پیام (message) است. شدت نوع پیام توسط گزینههای log_type با مقادیر subscribe و unsubscribe استفاده میشود و پیامهای لاگ را در $SYS/broker/log/M/subscribe و $SYS/broker/log/M/unsubscribe منتشر میکند. پیامهای اشکالزدایی (debug) هرگز در موضوعات ثبت نمیشوند.
مقصد file به یک پارامتر اضافی نیاز دارد که فایلی است که گزارشها در آن ثبت میشوند، به عنوان مثال "log_dest file /var/log/mosquitto.log". وقتی کارگزار سیگنال HUP دریافت کند، فایل بسته شده و دوباره باز میشود. تنها یک مقصد فایل میتواند پیکربندی شود.
مقصد dlt برای ابزار خودروسازی `Diagnostic Log and Trace` است. این نیاز دارد که Mosquitto با پشتیبانی از DLT کامپایل شده باشد.
مقصد android فقط برای اندروید است و به دیمن logd خروجی میدهد.
اگر میخواهید ثبت گزارش را غیرفعال کنید از "log_dest none" استفاده کنید. پیشفرض stderr است. این گزینه میتواند چندین بار مشخص شود.
توجه داشته باشید که اگر کارگزار به عنوان یک سرویس ویندوز اجرا شود، به طور پیشفرض روی "log_dest none" قرار میگیرد و نه ثبت در stdout و نه در stderr در دسترس نخواهد بود.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
log_facility بخش محلی
log_timestamp [ true | false ]
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
log_timestamp_format قالب
log_timestamp_format %Y-%m-%dT%H:%M:%S
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
log_type انواع
پیشفرض error، warning، notice و information است. این گزینه میتواند چندین بار مشخص شود. توجه داشته باشید که نوع debug (که برای رمزگشایی بستههای شبکه ورودی/خروجی استفاده میشود) هرگز در موضوعات ثبت نمیشود.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
max_inflight_bytes تعداد
گزینه max_inflight_messages را نیز ببینید.
این گزینه به صورت سراسری اعمال میشود.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
max_inflight_messages تعداد
این گزینه به صورت سراسری اعمال میشود.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
max_keepalive مقدار
تنظیم روی 0 به کلاینتها اجازه میدهد keepalive = 0 را تنظیم کنند، به این معنی که هیچ بررسی keepalive انجام نمیشود و در صورت عدم دریافت پیام، کلاینت هرگز توسط کارگزار قطع نخواهد شد. باید کاملاً مطمئن باشید که این همان رفتاری است که میخواهید.
برای کلاینتهای MQTT v3.1.1 و v3.1، هیچ مکانیزمی برای گفتن به کلاینت در مورد اینکه از چه مقدار keepalive باید استفاده کند وجود ندارد. اگر یک کلاینت MQTT v3.1.1 یا v3.1 زمان نگهداری اتصال بیشتری از max_keepalive مشخص کند، یک پیام CONNACK با کد دلیل "identifier rejected" برای آن ارسال شده و اتصال قطع میشود.
این گزینه به صورت سراسری اعمال میشود.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
max_packet_size مقدار
از نسخه 2.1 به بعد پیشفرض 2000000 بایت است. نسخههای قبلتر به طور پیشفرض بدون محدودیت بودند.
این گزینه برای همه کلاینتها اعمال میشود، نه فقط کلاینتهایی که از MQTT v5 استفاده میکنند، اما اطلاعرسانی محدودیت به کلاینتهایی که از MQTT v3.1.1 یا MQTT v3.1 استفاده میکنند امکانپذیر نیست.
تنظیم زیر 20 بایت ممنوع است زیرا حتی با محمولههای کوچک نیز احتمالاً در عملکرد عادی کلاینت اختلال ایجاد میکند.
این گزینه به صورت سراسری اعمال میشود.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
max_queued_bytes تعداد
گزینه max_queued_messages را نیز ببینید. اگر هر دو گزینه max_queued_messages و max_queued_bytes مشخص شوند، بستهها تا زمانی که به اولین محدودیت برسند صفبندی میشوند.
این گزینه به صورت سراسری اعمال میشود.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
max_queued_messages تعداد
این گزینه به صورت سراسری اعمال میشود.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
memory_limit محدودیت
این گزینه تنها در صورتی در دسترس است که پشتیبانی از ردیابی حافظه به صورت کامپایلشده وجود داشته باشد.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود. تنظیم روی مقدار کمتر و بارگذاری مجدد منجر به آزادسازی حافظه نخواهد شد.
message_size_limit محدودیت
مقدار پیشفرض 0 است، به این معنی که تمام پیامهای معتبر MQTT پذیرفته میشوند. پروتکل MQTT حداکثر اندازه محموله 268435455 بایت را تحمیل میکند.
این گزینه به صورت سراسری اعمال میشود.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
password_file مسیر فایل
مسیر فایل گذرواژه را تعیین میکند. در صورت تعریف، محتویات فایل برای کنترل دسترسی کلاینت به کارگزار استفاده میشود. این فایل را میتوان با استفاده از ابزار mosquitto_passwd(1) ایجاد کرد. اگر mosquitto بدون پشتیبانی TLS کامپایل شده باشد (توصیه میشود پشتیبانی TLS گنجانده شود)، فایل گذرواژه باید یک فایل متنی باشد که هر خط آن در قالب "username:password" است، که در آن دونقطه و گذرواژه اختیاری اما توصیه شده است. اگر allow_anonymous روی false تنظیم شود، فقط کاربرانی که در این فایل تعریف شدهاند قادر به اتصال خواهند بود. تنظیم allow_anonymous روی true در صورت تعریف password_file معتبر است و میتواند همراه با acl_file برای داشتن مثلاً حسابهای مهمان/ناشناس فقطخواندنی و کاربران تعریفشدهای که میتوانند پیام منتشر کنند، استفاده شود.
اگر per_listener_settings برابر true باشد، این گزینه تنها به شنونده فعلی که در حال پیکربندی است اعمال خواهد شد. اگر per_listener_settings برابر false باشد، این گزینه برای همه شنوندگان اعمال میشود.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود. دادههای نام کاربری و گذرواژه که در حال حاضر بارگذاری شدهاند آزاد شده و دوباره بارگذاری خواهند شد. کلاینتهایی که قبلاً متصل شدهاند تحت تأثیر قرار نخواهند گرفت.
همچنین ببینید: mosquitto_passwd(1) و https://mosquitto.org/documentation/dynamic-security/
per_listener_settings [ true | false ]
password_file، acl_file، psk_file، allow_anonymous، allow_zero_length_clientid، auto_id_prefix. plugin، plugin_opt_*، توجه داشته باشید که اگر روی true تنظیم شود، یک کلاینت پایدار (یعنی با تنظیم clean session روی false) که قطع شده است، از تنظیمات ACL تعریفشده برای شنوندهای استفاده میکند که اخیراً به آن متصل بوده است.
رفتار پیشفرض برای این گزینه false است که رفتار تنظیمات نسخههای قبلی mosquitto را حفظ میکند.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
persistence [ true | false ]
در صورت فعال بودن، دادههای اتصال، اشتراک و پیام در mosquitto.db در مکانی که توسط persistence_location تعیین شده است، روی دیسک نوشته میشود. وقتی mosquitto راهاندازی مجدد شود، اطلاعات ذخیرهشده در mosquitto.db را دوباره بارگذاری میکند. دادهها هنگام بسته شدن mosquitto و همچنین در فواصل زمانی مشخصشده توسط autosave_interval روی دیسک نوشته میشوند. نوشتن پایگاه داده پایداری را نیز میتوان با ارسال سیگنال SIGUSR1 به mosquitto اجبار کرد. اگر false باشد، دادهها فقط در حافظه ذخیره میشوند. پیشفرض false است.
فایل پایداری ممکن است قالب خود را در یک نسخه جدید تغییر دهد. کارگزار در حال حاضر میتواند تمام قالبهای قدیمی را بخواند، اما فقط در آخرین قالب ذخیره میکند. ارتقا باید همیشه امن باشد، اما کاربران محتاط ممکن است مایل باشند قبل از نصب نسخه جدید یک کپی از فایل پایداری تهیه کنند تا در صورت لزوم بتوانند به نسخه قبلی بازگردند.
این گزینه به صورت سراسری اعمال میشود.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
persistence_file نام فایل
این گزینه به صورت سراسری اعمال میشود.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
persistence_location مسیر
این گزینه به صورت سراسری اعمال میشود.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
persistent_client_expiration مدت زمان
کلاینتهایی با طراحی ضعیف ممکن است clean session را روی false قرار دهند در حالی که از شناسه کلاینت تولیدشده به صورت تصادفی استفاده میکنند. این منجر به کلاینتهای ماندگاری میشود که یک بار متصل میشوند و هرگز دوباره متصل نمیشوند. این گزینه اجازه میدهد این کلاینتها حذف شوند.
دوره انقضا باید یک عدد صحیح باشد و به دنبال آن یکی از حروف s h d w m y به ترتیب برای ثانیه، ساعت، روز، هفته، ماه و سال بیاید. برای مثال:
اگرچه امکان تعیین زمان انقضا بر حسب ثانیه وجود دارد، این به این معنی نیست که باید از یک بازه انقضای کوتاه استفاده کنید. اگر سیستمی دارید که فکر میکنید کلاینتها باید به طور خودکار در مدت زمان کوتاهی منقضی شوند، در صورت امکان باید مشکل کلاینتها را برطرف کنید.
از آنجا که این یک گزینه غیر استاندارد است، مقدار پیشفرض در صورت عدم تنظیم این است که هرگز کلاینتهای ماندگار منقضی نشوند.
این گزینه به صورت سراسری اعمال میشود.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
pid_file مسیر فایل
اگر mosquitto به طور خودکار توسط یک اسکریپت init راهاندازی میشود معمولاً نوشتن یک فایل pid الزامی خواهد بود. سپس این باید به عنوان مثال /var/run/mosquitto/mosquitto.pid پیکربندی شود.
با سیگنال بارگذاری مجدد دوباره بارگذاری نمیشود.
plugin_opt_* مقدار
برای افزونه/global_plugin فعلی که در حال پیکربندی است اعمال میشود.
این همچنین به عنوان گزینه auth_opt_* نیز در دسترس است، اما این استفاده منسوخ شده و در نسخه آینده حذف خواهد شد.
plugin مسیر فایل
میتوان چندین بار برای بارگذاری چندین افزونه مشخص کرد. افزونهها به ترتیبی که مشخص شدهاند پردازش میشوند.
اگر password_file یا acl_file در فایل پیکربندی در کنار plugin استفاده شوند، بررسیهای افزونه قبل از بررسیهای توکار اجرا میشوند.
در حال حاضر با سیگنال بارگذاری مجدد دوباره بارگذاری نمیشود.
اگر per_listener_settings روی true تنظیم شده باشد، این افزونه فقط برای شنونده فعلی بارگذاری خواهد شد.
همچنین ببینید: https://mosquitto.org/documentation/dynamic-security/ و گزینه global_plugin.
این همچنین به عنوان گزینه auth_plugin نیز در دسترس است، اما این استفاده منسوخ شده و در نسخه آینده حذف خواهد شد.
psk_file مسیر فایل
اگر per_listener_settings برابر true باشد، این گزینه تنها به شنونده فعلی که در حال پیکربندی است اعمال میشود. اگر per_listener_settings برابر false باشد، این گزینه برای همه شنوندگان اعمال خواهد شد.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود. دادههای هویت و کلید که در حال حاضر بارگذاری شدهاند آزاد شده و دوباره بارگذاری خواهند شد. کلاینتهایی که قبلاً متصل شدهاند تحت تأثیر قرار نخواهند گرفت.
queue_qos0_messages [ true | false ]
توجه داشته باشید که مشخصات MQTT v3.1.1 بیان میکند که فقط پیامهای QoS 1 و 2 باید در این وضعیت ذخیره شوند، بنابراین این یک گزینه غیر استاندارد است.
این گزینه به صورت سراسری اعمال میشود.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
retain_available [ true | false ]
این گزینه به صورت سراسری اعمال میشود.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
retain_expiry_interval دقیقه
پیشفرض خاموش (off) است. تنظیم روی مقداری بزرگتر از صفر به این معنی است که کارگزار در بازه زمانی آن تعداد دقیقه بررسی را انجام خواهد داد.
این گزینه به صورت سراسری اعمال میشود.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
set_tcp_nodelay [ true | false ]
این گزینه به صورت سراسری اعمال میشود.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
sys_interval ثانیه
برای غیرفعال کردن کامل انتشار سلسلهمراتب $SYS روی 0 تنظیم کنید.
این گزینه به صورت سراسری اعمال میشود.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
upgrade_outgoing_qos [ true | false ]
این گزینه به صورت سراسری اعمال میشود.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
user نام کاربری
این تنظیم روی ویندوز هیچ تأثیری ندارد و بنابراین باید mosquitto را به عنوان کاربری که میخواهید اجرا شود، اجرا کنید.
با سیگنال بارگذاری مجدد دوباره بارگذاری نمیشود.
شنوندگان (LISTENERS)
درگاههای شبکهای که mosquitto روی آنها گوش میدهد را میتوان با استفاده از شنوندگان (listeners) کنترل کرد. گزینههای پیشفرض شنونده را میتوان بازنویسی کرد و شنوندگان بیشتری ایجاد نمود.
گزینههای عمومی (General Options)
accept_protocol_versions نسخهها
# فقط نسخه v5.0 مجاز است: listener 1883 accept_protocol_versions 5 # نسخههای v3.1 و v3.1.1 مجاز هستند: listener 1884 accept_protocol_versions 3, 4
پیشفرض اجازه دادن به همه نسخهها است.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
bind_address آدرس
تنها به اتصالات شبکه ورودی روی آدرس IP/نام میزبان مشخصشده گوش میدهد. این برای محدود کردن دسترسی به برخی رابطهای شبکه مفید است. برای محدود کردن دسترسی به mosquitto فقط به میزبان محلی، از "bind_address localhost" استفاده کنید. این فقط برای شنونده پیشفرض اعمال میشود. از گزینه listener برای کنترل سایر شنوندگان استفاده کنید.
توصیه میشود به جای اتکا به گزینههای پیشفرض ضمنی شنونده مانند این، از یک listener صریح استفاده کنید.
با سیگنال بارگذاری مجدد دوباره بارگذاری نمیشود.
bind_interface دستگاه
اگر همزمان با bind_address برای شنونده پیشفرض یا بخش bind address/host از listener استفاده شود، آنگاه bind_interface اولویت خواهد داشت.
این گزینه در ویندوز و AIX در دسترس نیست.
با سیگنال بارگذاری مجدد دوباره بارگذاری نمیشود.
enable_proxy_protocol [ 2 | 1 ]
این گزینه مستلزم استفاده از یک متعادلکننده بار/پروکسی مانند HAProxy در جلوی Mosquitto است، بهطوریکه پروکسی برای استفاده از پروتکل PROXY پیکربندی شده باشد.
پروتکل PROXY برای ارسال اطلاعات مربوط به اتصالات سوکت کلاینت از پروکسی به کارگزار استفاده میشود. بدون این، اطلاعات اتصال و لاگها در کارگزار شامل آدرس IP و درگاه خود پروکسی خواهد بود، نه کلاینت.
فعال کردن این گزینه فقط باید زمانی انجام شود که یک پروکسی قابل اعتماد در جلوی Mosquitto قرار داده شده باشد و هیچ دسترسی خارجی دیگری به Mosquitto امکانپذیر نباشد. دادن دسترسی خارجی به شنوندهای با این گزینه فعال، یک ریسک امنیتی است، به ویژه اگر از گواهیهای کلاینت روی پروکسی استفاده میکنید.
هنگام استفاده از PROXY نسخه 2، این گزینه میتواند با خاتمه TLS (TLS termination) روی پروکسی استفاده شود. در این حالت، اطلاعات TLS نیز به کارگزار منتقل خواهد شد. از proxy_protocol_v2_require_tls برای رد کلاینتهایی که از TLS استفاده نمیکنند استفاده کنید - این به شدت توصیه میشود. فعال کردن require_certificate روی شنونده باعث میشود کارگزار اطلاعات TLS ارائهشده را بررسی کند تا اطمینان حاصل شود که کلاینت یک گواهی معتبر ارائه داده است. فعال کردن use_identity_as_username نیز باعث میشود مقدار commonName از گواهی به جای نام کاربری ارائهشده در بسته CONNECT به عنوان نام کاربری کلاینت استفاده شود. در هر دو حالت، شنونده نباید دارای TLS پیکربندیشده باشد.
امکان استفاده از گزینههای use_subject_as_username، certfile، یا keyfile در ترکیب با enable_proxy_protocol وجود ندارد.
با سیگنال بارگذاری مجدد دوباره بارگذاری نمیشود.
http_dir پوشه
این گزینه همچنین برای شنوندگان وبسوکت در صورتی که Mosquitto با پشتیبانی از وبسوکت ارائهشده توسط libwebsockets کامپایل شده باشد در دسترس است. این پیشفرض نیست و در نسخه 3.0 حذف خواهد شد.
با سیگنال بارگذاری مجدد دوباره بارگذاری نمیشود.
listener درگاه [آدرس bind/میزبان/مسیر سوکت یونیکس]
گزینه bind address/host به این شنونده اجازه میدهد تا با ارسال یک آدرس IP یا نام میزبان به یک آدرس IP خاص متصل شود. برای شنوندگان وبسوکت، تنها امکان ارسال یک آدرس IP در اینجا وجود دارد.
در سیستمهایی که از Unix Domain Sockets پشتیبانی میکنند، این گزینه همچنین میتواند برای ایجاد یک سوکت یونیکس به جای باز کردن سوکت TCP استفاده شود. در این حالت، درگاه باید روی 0 تنظیم شود و مسیر سوکت یونیکس باید داده شود.
این گزینه میتواند چندین بار مشخص شود. گزینه mount_point را نیز ببینید.
با سیگنال بارگذاری مجدد دوباره بارگذاری نمیشود.
listener_allow_anonymous [ true | false ]
اگر به صراحت تنظیم نشود، از مقدار allow_anonymous استفاده خواهد شد.
با سیگنال بارگذاری مجدد دوباره بارگذاری نمیشود.
auto_id_prefix پیشوند
با سیگنال بارگذاری مجدد دوباره بارگذاری نمیشود.
max_connections تعداد
با سیگنال بارگذاری مجدد دوباره بارگذاری نمیشود.
max_qos مقدار
با سیگنال بارگذاری مجدد دوباره بارگذاری نمیشود.
max_topic_alias_broker عدد
توجه داشته باشید که این رفتار تضمین نمیشود که یکسان باقی بماند. ممکن است نسخههای آینده مکانیزمهایی را برای کنترل اینکه کدام موضوعات نام مستعار دریافت میکنند معرفی کنند.
این گزینه حداکثر تعداد نامهای مستعار موضوع را که Mosquitto برای یک کلاینت MQTT v5 ایجاد میکند تنظیم میکند، حتی اگر کلاینت تعداد بیشتری را مجاز بداند.
برای مثال، اگر کلاینت topic-alias-maximum را روی 100 تنظیم کند و این گزینه روی 10 تنظیم شود، کارگزار حداکثر 10 نام مستعار موضوع ایجاد خواهد کرد. به همین ترتیب، اگر کلاینت topic-alias-maximum را روی 20 تنظیم کند و این گزینه روی 100 تنظیم شود، کارگزار حداکثر 20 نام مستعار موضوع ایجاد خواهد کرد.
پیشفرض 10 است. حداکثر 65535. برای غیرفعال کردن کامل نامهای مستعار موضوع از کارگزار به کلاینت روی 0 تنظیم کنید.
با سیگنال بارگذاری مجدد دوباره بارگذاری نمیشود.
max_topic_alias عدد
با سیگنال بارگذاری مجدد دوباره بارگذاری نمیشود.
mount_point پیشوند موضوع
با سیگنال بارگذاری مجدد دوباره بارگذاری نمیشود.
port شماره درگاه
درگاه شبکه را برای شنونده پیشفرض جهت گوش دادن تنظیم میکند. پیشفرض 1883 است.
با سیگنال بارگذاری مجدد دوباره بارگذاری نمیشود.
توصیه میشود به جای اتکا به گزینههای پیشفرض ضمنی شنونده مانند این، از یک listener صریح استفاده کنید.
protocol مقدار
mqtt: شنونده استاندارد MQTT.
websockets: پروتکل MQTT تونلشده روی وبسوکت. اگر از پشتیبانی قدیمی وبسوکت با استفاده از libwebsockets استفاده شود، تنها مجموعه ویژگیهای کاهشیافته TLS در دسترس خواهد بود، یعنی cafile، certfile، keyfile، ciphers، و ciphers_tls1.3.
http_api: این شنونده را به عنوان یک وبسرور بسیار ساده راهاندازی میکند (گزینه http_dir را ببینید) که میتواند به برخی از درخواستهای HTTP API نیز پاسخ دهد. پروتکل TLS برای این شنونده پشتیبانی میشود، با این حال فقط گزینههای certfile و keyfile مجاز هستند. احراز هویت در حال حاضر امکانپذیر نیست - برای استفاده از این شنونده اکیداً توصیه میشود که شنونده را به رابط loopback متصل کرده و سپس یک پروکسی معکوس با رمزگذاری و احراز هویت مناسب پیکربندی کنید.
با سیگنال بارگذاری مجدد دوباره بارگذاری نمیشود.
proxy_protocol_v2_require_tls [ true | false ]
با سیگنال بارگذاری مجدد دوباره بارگذاری نمیشود.
socket_domain [ ipv4 | ipv6 ]
برای اجبار شنونده به استفاده انحصاری از IPv4 روی ipv4 تنظیم کنید، یا برای اجبار به استفاده از IPv6 روی ipv6 تنظیم نمایید. اگر میخواهید از هر دو نسخه IPv4 و IPv6 پشتیبانی شود، از گزینه socket_domain استفاده نکنید.
با سیگنال بارگذاری مجدد دوباره بارگذاری نمیشود.
use_username_as_clientid [ true | false ]
اگر یک کلاینت بدون نام کاربری متصل شود، هنگامی که این گزینه روی true تنظیم شده باشد به عنوان غیرمجاز قطع خواهد شد. در ترکیب با clientid_prefixes استفاده نکنید.
این به صورت سراسری اعمال نمیشود، بلکه به ازای هر شنونده اعمال میشود.
همچنین ببینید: use_identity_as_username.
با سیگنال بارگذاری مجدد دوباره بارگذاری نمیشود.
packet_buffer_size اندازه, websockets_headers_size اندازه
این همچنین به عنوان گزینهای عمل میکند که اندازه بافر مورداستفاده توسط وبسوکتها را هنگام خواندن هدر اولیه تنظیم میکند. اگر دادههای هدر بزرگ مانند کوکیها را ارسال میکنید، ممکن است لازم باشد این مقدار را افزایش دهید.
websockets_log_level سطح
برای استفاده از این گزینه، log_type websockets نیز باید فعال باشد. پیشفرض 0 است.
websockets_origin مبدأ
اگر تنظیم نشود، اتصالات از هر مبدئی مجاز خواهند بود.
نیازمند libwebsockets نسخه 3.1.0 یا بالاتر است.
پشتیبانی از SSL/TLS مبتنی بر گواهی (Certificate based SSL/TLS Support)
گزینههای زیر برای همه شنوندگان جهت پیکربندی پشتیبانی SSL مبتنی بر گواهی در دسترس هستند. همچنین بخش «پشتیبانی از SSL/TLS مبتنی بر کلید از پیش اشتراکگذاریشده» را ببینید.
cafile مسیر فایل
capath مسیر پوشه
گزینه capath برای وبسوکتها پشتیبانی نمیشود.
certfile مسیر فایل
گواهی مشخصشده توسط این گزینه هنگامی که Mosquitto یک سیگنال SIGHUP دریافت کند، دوباره بارگذاری میشود. این میتواند برای بارگذاری گواهیهای جدید قبل از انقضای گواهیهای موجود استفاده شود.
ciphers فهرست_رمزها
ciphers_tls1.3 فهرست_مجموعهرمزها
crlfile مسیر فایل
dhparamfile مسیر فایل
openssl dhparam -out dhparam.pem 2048
disable_client_cert_date_checks [ true | false ]
پیشفرض false است.
keyfile مسیر فایل
کلید خصوصی اشارهشده توسط این گزینه با دریافت سیگنال SIGHUP توسط Mosquitto دوباره بارگذاری میشود. این میتواند برای بارگذاری کلیدهای جدید قبل از انقضای کلیدهای موجود استفاده شود.
require_certificate [ true | false ]
tls_engine شناسه موتور
tls_engine_kpass_sha1 هش_sha1_گذرواژه_موتور
tls_keyform [ pem | engine ]
tls_version نسخه
در نسخه 1.6.x و قبلتر Mosquitto، این گزینه تنها نسخه پروتکل TLS مجاز را تنظیم میکرد، نه حداقل نسخه را.
use_identity_as_username [ true | false ]
اگر هر دو روی true تنظیم شده باشند، این گزینه بر use_subject_as_username اولویت دارد.
گزینه use_subject_as_username را نیز ببینید.
use_subject_as_username [ true | false ]
موضوع در قالبی مشابه زیر تولید خواهد شد: CN=test client,OU=Production,O=Server,L=Nottingham,ST=Nottinghamshire,C=GB.
گزینه use_identity_as_username را نیز ببینید.
پشتیبانی از SSL/TLS مبتنی بر کلید از پیش اشتراکگذاریشده (Pre-shared-key based SSL/TLS Support)
گزینههای زیر برای همه شنوندگان جهت پیکربندی پشتیبانی SSL مبتنی بر کلید از پیش اشتراکگذاریشده در دسترس هستند. همچنین «پشتیبانی از SSL/TLS مبتنی بر گواهی» را ببینید.
ciphers فهرست_رمزها
psk_hint راهنما (hint)
اگر این گزینه ارائه شده است، برای تعریف کلیدهای از پیش اشتراکگذاریشده مورد استفاده یا ایجاد یک افزونه امنیتی برای مدیریت آنها، psk_file را ببینید.
tls_version نسخه
در نسخه 1.6.x و قبلتر Mosquitto، این گزینه تنها نسخه پروتکل TLS مجاز را تنظیم میکرد، نه حداقل نسخه را.
use_identity_as_username [ true | false ]
پیکربندی پلها (CONFIGURING BRIDGES)
چندین پل (اتصال به سایر کارگزارها) را میتوان با استفاده از متغیرهای زیر پیکربندی کرد.
با سیگنال بارگذاری مجدد دوباره بارگذاری میشود.
address آدرس[:درگاه] [آدرس[:درگاه]], addresses آدرس[:درگاه] [آدرس[:درگاه]]
اگر از آدرس IPv6 استفاده میکنید، تعیین درگاه اختیاری نیست و الزامی است.
چندین آدرس میزبان را میتوان در پیکربندی address مشخص کرد. برای جزئیات بیشتر در مورد رفتار پلها با چندین آدرس، گزینه round_robin را ببینید.
bridge_attempt_unsubscribe [ true | false ]
bridge_bind_address آدرس آیپی
bridge_max_packet_size مقدار
bridge_max_topic_alias مقدار
bridge_outgoing_retain [ true | false ]
bridge_protocol_version نسخه
bridge_receive_maximum تعداد
bridge_session_expiry_interval بازه زمانی
bridge_tcp_keepalive بیکاری فاصله شمارنده
این گزینه ممکن است هنگام اتصال به سرویسهایی که برای پیامهای PINGREQ هزینه دریافت میکنند مفید باشد.
بهطور پیشفرض غیرفعال است.
bridge_tcp_user_timeout مهلت زمانی
توجه داشته باشید که وقتی در ترکیب با TCP Keepalive استفاده میشود، ممکن است رفتار دومی را تغییر دهد.
میتوانید جزئیات بیشتر درباره این تنظیم را در اینجا بیابید: https://blog.cloudflare.com/when-tcp-sockets-refuse-to-die/
فقط در لینوکس موجود است.
cleansession [ true | false ]
اگر از پلهایی با cleansession تنظیمشده روی false (پیشفرض) استفاده میکنید، در صورت تغییر موضوعاتی که در آنها مشترک میشوید ممکن است رفتار غیرمنتظرهای از موضوعات ورودی مشاهده کنید. این به این دلیل است که کارگزار راه دور اشتراک موضوع قبلی را نگه میدارد. اگر این مشکل را دارید، پل خود را با cleansession تنظیمشده روی true متصل کنید، سپس به حالت معمول با cleansession تنظیمشده روی false مجدداً متصل شوید.
local_cleansession [ true | false]
پیشفرض مقدار bridge.cleansession است مگر اینکه به صراحت مشخص شده باشد.
connection نام
keepalive_interval ثانیه
idle_timeout ثانیه
local_clientid شناسه
local_password گذرواژه
local_username نام کاربری
notifications [ true | false ]
این گزینه از قابلیت وصیتنامه (Last Will and Testament یا LWT) استفاده میکند.
notifications_local_only [ true | false ]
notification_topic موضوع
remote_clientid شناسه
این گزینه جایگزین گزینه قدیمی "clientid" شده است تا از سردرگمی بین طرفهای محلی/راه دور پل جلوگیری شود. گزینه "clientid" فعلاً معتبر باقی میماند.
remote_password مقدار
این گزینه جایگزین گزینه قدیمی "password" شده است تا از سردرگمی بین طرفهای محلی/راه دور پل جلوگیری شود. گزینه "password" فعلاً معتبر باقی میماند.
remote_username نام
این گزینه جایگزین گزینه قدیمی "username" شده است تا از سردرگمی بین طرفهای محلی/راه دور پل جلوگیری شود. گزینه "username" فعلاً معتبر باقی میماند.
restart_timeout پایه سقف [پایدار], restart_timeout ثابت
این گزینه را میتوان برای استفاده از یک زمان تاخیر ثابت بر حسب ثانیه، یا استفاده از مکانیزم بازگشت مبتنی بر "Decorrelated Jitter" پیکربندی کرد که درجهای از تصادفی بودن را به زمان وقوع راهاندازی مجدد اضافه میکند، از پایه (base) شروع شده و تا سقف (cap) افزایش مییابد. زمان بازگشت پس از اتصال موفقیتآمیز به base بازنشانی میشود. وقتی stable مشخص شده باشد، زمان بازگشت تنها در صورتی بازنشانی میشود که اتصال حداقل به مدت stable ثانیه باز بماند. مقدار پایه حداقل 1 ثانیه و حداکثر 3600 ثانیه است. سقف حداقل برابر پایه و حداکثر 7200 ثانیه است.
تنظیم یک مهلت زمانی ثابت 20 ثانیهای:
restart_timeout 20
تنظیم عقبنشینی با پایه (مقدار شروع) 10 ثانیه و سقف (حد بالا) 60 ثانیه:
restart_timeout 10 60
مشابه مثال قبل، اما قبل از بازنشانی عقبنشینی، حداقل 30 ثانیه منتظر پایدار ماندن اتصال بمانید:
restart_timeout 10 60 30
پیشفرض جیتر با پایه 5 ثانیه و سقف 30 ثانیه است.
round_robin [ true | false ]
اگر round_robin برابر true باشد، با همه آدرسها به طور مساوی برخورد میشود. اگر اتصالی با شکست مواجه شود، آدرس بعدی امتحان میشود و در صورت موفقیت تا زمان شکست متصل باقی میماند.
start_type [ automatic | lazy | once ]
نوع automatic نوع راهاندازی پیشفرض است و به این معنی است که اتصال پل به طور خودکار هنگام شروع کارگزار آغاز میشود و در صورت قطع اتصال نیز پس از یک تأخیر کوتاه (30 ثانیه) راهاندازی مجدد میگردد.
پلهایی که از نوع شروع lazy استفاده میکنند، زمانی که تعداد پیامهای صفبندیشده از عدد تعیینشده با گزینه threshold بیشتر شود، به طور خودکار راهاندازی میشوند. پس از مدت زمان تعیینشده توسط پارامتر idle_timeout به طور خودکار متوقف خواهد شد. اگر میخواهید اتصال فقط در صورت نیاز فعال باشد از این نوع راهاندازی استفاده کنید.
پلی که از نوع راهاندازی once استفاده میکند هنگام راهاندازی کارگزار به طور خودکار شروع به کار میکند اما در صورت قطع اتصال مجدداً راهاندازی نمیشود.
threshold تعداد
topic الگو [[[ out | in | both ] سطح-qos] پیشوند-محلی پیشوند-راهدور]
گزینههای local-prefix و remote-prefix اجازه میدهند موضوعات هنگام انتشار به کارگزاران راه دور و دریافت از آنها بازنگاشت (remap) شوند. این اجازه میدهد تا درخت موضوعی از کارگزار محلی در یک مکان مناسب در درخت موضوعی کارگزار راه دور درج شود.
برای موضوعات ورودی، پل پیشوند راه دور را به ابتدای الگو اضافه کرده و در موضوع حاصل در کارگزار راه دور مشترک میشود. هنگامی که یک پیام ورودی منطبق دریافت شد، پیشوند راه دور از موضوع حذف شده و سپس پیشوند محلی اضافه میشود.
برای موضوعات خروجی، پل پیشوند محلی را به ابتدای الگو اضافه کرده و در موضوع حاصل در کارگزار محلی مشترک میشود. هنگامی که یک پیام خروجی پردازش شد، پیشوند محلی از موضوع حذف شده و سپس پیشوند راه دور اضافه میشود.
هنگام استفاده از نگاشت موضوع، میتوان با استفاده از نشانگر "" یک پیشوند خالی تعریف کرد. استفاده از نشانگر خالی برای خود موضوع نیز معتبر است. جدول زیر مشخص میکند چه ترکیبی از خالی یا مقدار معتبر است. ستونهای موضوع کامل محلی (Full Local Topic) و موضوع کامل راه دور (Full Remote Topic) موضوعات حاصلی را نشان میدهند که در انتهای محلی و راه دور پل استفاده میشوند. برای مثال، برای ردیف اول جدول اگر به L/topic روی کارگزار محلی پیامی منتشر کنید، کارگزار راه دور پیامی در مورد موضوع R/topic دریافت خواهد کرد.
| الگو (Pattern) | پیشوند محلی (Local Prefix) | پیشوند راه دور (Remote Prefix) | اعتبار (Validity) | موضوع کامل محلی (Full Local Topic) | موضوع کامل راه دور (Full Remote Topic) |
| pattern | L/ | R/ | معتبر (valid) | L/pattern | R/pattern |
| pattern | L/ | "" | معتبر (valid) | L/pattern | pattern |
| pattern | "" | R/ | معتبر (valid) | pattern | R/pattern |
| pattern | "" | "" | معتبر (بدون نگاشت مجدد) | pattern | pattern |
| "" | local | remote | معتبر (نگاشت مجدد یک موضوع محلی به راه دور) | local | remote |
| "" | local | "" | نامعتبر (invalid) | ||
| "" | "" | remote | نامعتبر (invalid) | ||
| "" | "" | "" | نامعتبر (invalid) |
برای نگاشت مجدد کل یک درخت موضوعی، به عنوان مثال از این دستور استفاده کنید:
topic # both 2 local/topic/ remote/topic/
این گزینه میتواند چندین بار برای هر پل مشخص شود.
باید دقت شود که با این گزینه حلقهای ایجاد نشود. اگر بار پردازشی بالایی را روی پردازنده از یک کارگزار تجربه میکنید، ممکن است حلقهای داشته باشید که در آن هر کارگزار دائماً پیامهای یکسانی را برای دیگری ارسال میکند.
در صورتی که هنگام استفاده از موضوعات ورودی، پیامها روی موضوعات غیرمنتظرهای میرسند، گزینه cleansession را نیز ببینید.
مثال: نگاشت مجدد موضوع پل. پیکربندی زیر یک پل را به کارگزار در test.mosquitto.org متصل میکند. این پل در موضوع راه دور $SYS/broker/clients/total مشترک میشود و پیامهای دریافتی را در موضوع محلی test/mosquitto/org/clients/total بازنشر میکند.
connection test-mosquitto-org address test.mosquitto.org cleansession true topic clients/total in 0 test/mosquitto/org/ $SYS/broker/
try_private [ true | false ]
پیشفرض true است.
bridge_reload_type [ lazy | immediate ]
مقدار lazy پیشفرض است، و به این معنی است که هر پل متصل تا زمانی که یک اتصال مجدد طبیعی رخ دهد در حالت فعلی خود باقی میماند، و در آن مرحله از پیکربندی جدید استفاده خواهد شد.
مقدار immediate اتصال مجدد را اجبار میکند و بنابراین بلافاصله از پیکربندی جدید استفاده مینماید.
پشتیبانی از SSL/TLS (SSL/TLS Support)
گزینههای زیر برای همه پلها جهت پیکربندی پشتیبانی از SSL/TLS در دسترس هستند.
bridge_alpn alpn
bridge_cafile مسیر فایل
گزینه bridge_cafile برای تعریف مسیر فایلی حاوی گواهیهای CA کدگذاریشده با PEM استفاده میشود که گواهی کارگزار راه دور را امضا کردهاند.
bridge_capath مسیر پوشه
گزینه bridge_capath برای تعریف مسیر دایرکتوری حاوی گواهیهای CA با کدگذاری PEM استفاده میشود که گواهی کارگزار راه دور را امضا کردهاند. برای اینکه bridge_capath به درستی کار کند، فایلهای گواهی باید پسوند ".crt" داشته باشند و شما باید هر بار که گواهی اضافه یا حذف میکنید "openssl rehash <مسیر به bridge_capath>" را اجرا کنید.
bridge_certfile مسیر فایل
bridge_identity هویت
bridge_insecure [ true | false ]
تنظیم این گزینه روی true به این معنی است که یک شخص ثالث مخرب میتواند به طور بالقوه خود را به عنوان سرور شما جا بزند، بنابراین همیشه باید در محیطهای عملیاتی روی false تنظیم شود.
bridge_keyfile مسیر فایل
bridge_psk کلید
bridge_require_ocsp [ true | false ]
bridge_tls_use_os_certs [ true | false ]
گزینه bridge_tls_use_os_certs را روی true قرار دهید تا TLS برای این پل فعال شود و آن را طوری پیکربندی کنید که به گواهیهای پیشفرض ارائهشده توسط openssl اعتماد کند. این معمولاً تعداد زیادی گواهی است. پیشفرض false است.
bridge_tls_version نسخه
bridge_ciphers فهرست_رمزها
bridge_ciphers_tls1.3 فهرست_مجموعهرمزها
فایلها (FILES)
mosquitto.conf
گزارش باگها (BUGS)
اطلاعات مربوط به باگهای mosquitto را میتوان در نشانی زیر یافت: https://github.com/eclipse-mosquitto/mosquitto/issues
همچنین ببینید (SEE ALSO)
mosquitto(7), mosquitto(8), mosquitto_passwd(1), mosquitto-tls(7), mqtt(7), limits.conf(5)
نویسندگان (AUTHORS)
Roger Light <roger@atchoo.org>
| 04/03/2026 | Mosquitto Project |