Install Mosquitto MQTT Broker/Server on Ubuntu

Mosquitto Mqtt broker

MQTT הנו פרוטוקול העברת הודעות "קל משקל" בעל מודל המושתת על פרוטוקול TCP / IP ומשמש לתקשורת בין מכשירי IOT כגון ESP8266, Raspberry Pi וכו '. MQTT נפוץ מאוד בעיקר במכשירים בעלי  משאבים נמוכים ויישומים המופעלים באמצעות סוללות כמו אוטומציה ביתית, מערכות אזעקה, אבטחה ורשתות חיישנים המופעלות באמצעות סוללה.

Mosquitto הוא מתווך (broker) להודעות קוד פתוח המיישם פרוטוקולי MQTT. בעזרת התמיכה הרבה של הקהילה, וקלות ההתקנה הוא הפך לאחד ממתווכי ה MQTT הפופולריים ביותר.

במדריך זה אסביר כיצד להתקין ולהגדיר את Mosquitto על גבי שרת Ubuntu Server.

שלב א' – התקנת Mosquitto

לצורך התקנת השרת פתחו את הטרמינל וכתבו את הפקודות הבאות:

sudo apt-get update
sudo apt-get install mosquitto

ולצורך הבדיקה נתקין גם את ה MQTT Client

sudo apt-get install mosquitto-clients

Mqtt Client יעזור לנו לבצע בדיקת תקינות של השרת (Broker) באמצעות פקודות cli. על מנת לבדוק את התקינות נשתמש בשתי חלונות טרמינל. אחד עבור "האזנה" לנושא ואחר בשביל "לפרסם" נושא (Topic).

הנושאים (Topics) הם תוויות המשמשות את המתווך כדי לסנן הודעות לכל לקוח מחובר. לקוח המנוי לנושא "Home1 / BedroomTemp" יקשיב רק להודעות שפורסמו לאותו נושא על ידי לקוחות אחרים.

כעת, פתחו שני חלונות Terminal. בראשון, כתבו את הפקודה הבאה על מנת להאזין ל Topic בשם test:

mosquitto_sub -t "test"

ובחלון השני הקלידו את הפקודה הבאה על מנת לפרסם מידע באותו ה Topic:

mosquitto_pub -m "message from mosquitto_pub client" -t "test"

תוכלו לראות שבחלון ה Terminal בו האזנו לנושא בשם "טסט" הוצגה ההודעה שנשלחה מהחלון השני:

 

Mosquitto publish and listen to topic

שלב ב' – אבטחת השרת באמצעות שם משתמש וסיסמה

כברירת מחדל, ההתקנה של Mosquitto מגיע ללא שם משתמש וסיסמה, מה שהופך את המערכת לפריצה בעקבות כך שכל מי שמאזין לשרת יכול ללמור ולהשתמש ב Topics השונים ללא צורך בהזדהות. בחלק זה של המדריך אסביר כיצד ניתן להוסיף שם משתמש וססמה ובכך למנוע מלקוחות לא רצויים להתחבר למערכת.

כחלק מההתקנה של Mosquitto, ישנו קובץ עזר בשם mosquitto_passwd אשר משמש ליצירת שם משתמש וסיסמה. לצורך קביעת סיסמה כתבו את הפקודה הבאה:

sudo mosquitto_passwd -c /etc/mosquitto/passwd dave

כאשר החליפו את המשתמש dave בזה שלכם. לאחר האישור תקבלו בקשה להזין סיסמה. הקלידו את הסיסמה הרצויה ולאחרי enter לאישור.

כעת צרו קובץ הגדרות חדש על ידי הפקודה הבאה:

sudo nano /etc/mosquitto/conf.d/default.conf

והדביקו פנימה את הטקסט הבא:

allow_anonymous false
password_file /etc/mosquitto/passwd

כאשר:

  • allow_anonymous false – מורה למערכת לא לאפשר התחברות ללא שם משתמש וסיסמה.
  • password_file – הנתיב לקובץ הסיסמאות.

שמרו את הקובץ ואתחלו את ה broker על ידי הפקודה הבאה:

sudo systemctl restart mosquitto

כעת אם תנסו להאזין או לפרסם הודעת mqtt מבלי להזדהות תקבלו הודעת שגיאה שמראה שהחיבור נדחה:

Mqtt broker connection refused

כעת נסו שוב, רק הפעם הוסיפו לפקודה את פרטי ההתחברות. כתבו את הפקודה הבאה על מנת להאזין ל topic (החליפו את שם המשתמש והסיסמה באלה שלכם).

mosquitto_sub -t "test" -u "dave" -P "password"

וכאן את הפקודה לפרסום ההודעה (וגם כאן החליפו את פרטי ההתחברות בשלכם)

mosquitto_pub -t "test" -m "message from mosquitto_pub client" -u "dave" -P "password"

ותוכלו לראות כי כעת השרת איפשר להם "לפרסם" ולהאזין להודעות.

Be the first to comment

Leave a Reply

כתובת האימייל שלך לא תפורסם


*