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