
MQTT הנו פרוטוקול העברת הודעות "קל משקל" בעל מודל המושתת על פרוטוקול TCP / IP ומשמש לתקשורת בין מכשירי IOT כגון ESP8266, Raspberry Pi וכו '. MQTT נפוץ מאוד בעיקר במכשירים בעלי משאבים נמוכים ויישומים המופעלים באמצעות סוללות כמו אוטומציה ביתית, מערכות אזעקה, אבטחה ורשתות חיישנים המופעלות באמצעות סוללה.
Mosquitto הוא מתווך (broker) להודעות קוד פתוח המיישם פרוטוקולי MQTT. בעזרת התמיכה הרבה של הקהילה, וקלות ההתקנה הוא הפך לאחד ממתווכי ה MQTT הפופולריים ביותר.
במדריך זה אסביר כיצד להתקין ולהגדיר את Mosquitto על גבי שרת Ubuntu Server.
שלב א' – התקנת Mosquitto
לצורך התקנת השרת פתחו את הטרמינל וכתבו את הפקודות הבאות:
1 2 |
sudo apt-get update sudo apt-get install mosquitto |
ולצורך הבדיקה נתקין גם את ה MQTT Client
1 |
sudo apt-get install mosquitto-clients |
Mqtt Client יעזור לנו לבצע בדיקת תקינות של השרת (Broker) באמצעות פקודות cli. על מנת לבדוק את התקינות נשתמש בשתי חלונות טרמינל. אחד עבור "האזנה" לנושא ואחר בשביל "לפרסם" נושא (Topic).
הנושאים (Topics) הם תוויות המשמשות את המתווך כדי לסנן הודעות לכל לקוח מחובר. לקוח המנוי לנושא "Home1 / BedroomTemp" יקשיב רק להודעות שפורסמו לאותו נושא על ידי לקוחות אחרים.
כעת, פתחו שני חלונות Terminal. בראשון, כתבו את הפקודה הבאה על מנת להאזין ל Topic בשם test:
1 |
mosquitto_sub -t "test" |
ובחלון השני הקלידו את הפקודה הבאה על מנת לפרסם מידע באותו ה Topic:
1 |
mosquitto_pub -m "message from mosquitto_pub client" -t "test" |
תוכלו לראות שבחלון ה Terminal בו האזנו לנושא בשם "טסט" הוצגה ההודעה שנשלחה מהחלון השני:

שלב ב' – אבטחת השרת באמצעות שם משתמש וסיסמה
כברירת מחדל, ההתקנה של Mosquitto מגיע ללא שם משתמש וסיסמה, מה שהופך את המערכת לפריצה בעקבות כך שכל מי שמאזין לשרת יכול ללמור ולהשתמש ב Topics השונים ללא צורך בהזדהות. בחלק זה של המדריך אסביר כיצד ניתן להוסיף שם משתמש וססמה ובכך למנוע מלקוחות לא רצויים להתחבר למערכת.
כחלק מההתקנה של Mosquitto, ישנו קובץ עזר בשם mosquitto_passwd אשר משמש ליצירת שם משתמש וסיסמה. לצורך קביעת סיסמה כתבו את הפקודה הבאה:
1 |
sudo mosquitto_passwd -c /etc/mosquitto/passwd dave |
כאשר החליפו את המשתמש dave בזה שלכם. לאחר האישור תקבלו בקשה להזין סיסמה. הקלידו את הסיסמה הרצויה ולאחרי enter לאישור.
כעת צרו קובץ הגדרות חדש על ידי הפקודה הבאה:
1 |
sudo nano /etc/mosquitto/conf.d/default.conf |
והדביקו פנימה את הטקסט הבא:
1 2 |
allow_anonymous false password_file /etc/mosquitto/passwd |
כאשר:
- allow_anonymous false – מורה למערכת לא לאפשר התחברות ללא שם משתמש וסיסמה.
- password_file – הנתיב לקובץ הסיסמאות.
שמרו את הקובץ ואתחלו את ה broker על ידי הפקודה הבאה:
1 |
sudo systemctl restart mosquitto |
כעת אם תנסו להאזין או לפרסם הודעת mqtt מבלי להזדהות תקבלו הודעת שגיאה שמראה שהחיבור נדחה:

כעת נסו שוב, רק הפעם הוסיפו לפקודה את פרטי ההתחברות. כתבו את הפקודה הבאה על מנת להאזין ל topic (החליפו את שם המשתמש והסיסמה באלה שלכם).
1 |
mosquitto_sub -t "test" -u "dave" -P "password" |
וכאן את הפקודה לפרסום ההודעה (וגם כאן החליפו את פרטי ההתחברות בשלכם)
1 |
mosquitto_pub -t "test" -m "message from mosquitto_pub client" -u "dave" -P "password" |
ותוכלו לראות כי כעת השרת איפשר להם "לפרסם" ולהאזין להודעות.
Leave a Reply